使用Firefox插件sdk拦截搜索栏事件

使用Firefox插件sdk拦截搜索栏事件,firefox,firefox-addon,firefox-addon-sdk,Firefox,Firefox Addon,Firefox Addon Sdk,我正在使用插件sdk(也称为Jetpack)制作一个firefox插件 我需要的是拦截事件,特别是粘贴在搜索栏中,以及由于用户反馈而取消它的可能性。如何注册一个使之成为可能的侦听器?您应该能够检查对搜索栏的更改(从覆盖中): 只要搜索栏的内容发生更改,就会调用您的处理程序,以便您可以采取适当的操作。您应该能够像这样检查搜索栏的更改(从覆盖): 只要搜索栏的内容发生更改,就会调用您的处理程序,以便您可以采取适当的操作 使用加载项查找搜索栏的id 在源代码中: var utils = require

我正在使用插件sdk(也称为Jetpack)制作一个firefox插件


我需要的是拦截事件,特别是粘贴在搜索栏中,以及由于用户反馈而取消它的可能性。如何注册一个使之成为可能的侦听器?

您应该能够检查对搜索栏的更改(从覆盖中):


只要搜索栏的内容发生更改,就会调用您的处理程序,以便您可以采取适当的操作。

您应该能够像这样检查搜索栏的更改(从覆盖):

只要搜索栏的内容发生更改,就会调用您的处理程序,以便您可以采取适当的操作

  • 使用加载项查找搜索栏的id

  • 在源代码中:

    var utils = require('sdk/window/utils');
    
    var doc = utils.getMostRecentWindow().document;
    var searchbar = doc.getElementById("searchbar");
    searchbar.addEventListener("change", /* your callback function here */ );
    
  • 使用加载项查找搜索栏的id

  • 在源代码中:

    var utils = require('sdk/window/utils');
    
    var doc = utils.getMostRecentWindow().document;
    var searchbar = doc.getElementById("searchbar");
    searchbar.addEventListener("change", /* your callback function here */ );
    

  • 这是一个合理的答案,但我无法让它发挥作用。getElementById函数未返回元素。插件sdk已经用内容脚本取代了覆盖的概念,它们的行为似乎有所不同。在内容脚本中,DOM是内容页的DOM,而不是浏览器窗口的DOM,因此没有具有“searchbar”ID的元素。我不是100%确定,但您可以尝试侦听windows.BrowserWindows的“open”事件,并将事件侦听器添加到传入回调的窗口中,该窗口可能是浏览器(即chrome)好的,我通过使用window-utils模块(底层api模块的一部分)正确地实现了这一点。然后我就可以跟踪windows并以更高的权限运行javascript,这样您的代码片段现在就可以正常工作了:)这是一个合理的答案,但我无法让它正常工作。getElementById函数未返回元素。插件sdk已经用内容脚本取代了覆盖的概念,它们的行为似乎有所不同。在内容脚本中,DOM是内容页的DOM,而不是浏览器窗口的DOM,因此没有具有“searchbar”ID的元素。我不是100%确定,但您可以尝试侦听windows.BrowserWindows的“open”事件,并将事件侦听器添加到传入回调的窗口中,该窗口可能是浏览器(即chrome)好的,我通过使用window-utils模块(底层api模块的一部分)正确地实现了这一点。然后我可以跟踪windows并以更高的权限运行javascript,这样您的代码片段现在就可以正常工作了:)