Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript FirefoxforAndroid扩展:如何在每次页面加载时触发事件?_Javascript_Android_Firefox Addon_Firefox Addon Restartless - Fatal编程技术网

Javascript FirefoxforAndroid扩展:如何在每次页面加载时触发事件?

Javascript FirefoxforAndroid扩展:如何在每次页面加载时触发事件?,javascript,android,firefox-addon,firefox-addon-restartless,Javascript,Android,Firefox Addon,Firefox Addon Restartless,我正在尝试为Android编写一个Firefox扩展,它将在每次网页更改时触发一个事件。它监视正在加载的URL(所有URL)和加载的页面内容(通过DOM检查)。我的问题是,使用下面代码的窗口加载事件仅在打开选项卡时加载,如果您离开页面,则不会触发任何事件 如何为任何URL连接到每个页面加载事件 此代码是bootstrap.js的全部内容: Components.utils.import("resource://gre/modules/Services.jsm"); var windowListe

我正在尝试为Android编写一个Firefox扩展,它将在每次网页更改时触发一个事件。它监视正在加载的URL(所有URL)和加载的页面内容(通过DOM检查)。我的问题是,使用下面代码的窗口加载事件仅在打开选项卡时加载,如果您离开页面,则不会触发任何事件

如何为任何URL连接到每个页面加载事件

此代码是bootstrap.js的全部内容:

Components.utils.import("resource://gre/modules/Services.jsm");
var windowListener = {
  onOpenWindow: function(aWindow) {
    console.log('vipro.openWindow');
    let domWindow = aWindow.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIDOMWindowInternal || Components.interfaces.nsIDOMWindow);
    domWindow.addEventListener("UIReady", function onLoad() {
      domWindow.removeEventListener("UIReady", onLoad, false);
      console.log('vipro.openWindow.loaded');
      // ** ONLY EVER FIRED ONCE ** //
      try {
        var browser = Services.wm.getMostRecentWindow("navigator:browser");
      } catch(e) {
        console.log('vipro.openWindow.error.' + e.toString());
      }
      console.log('vipro.openWindow.loaded.DONE');
    });
    console.log('vipro.openWindow.DONE');
  },
  onCloseWindow: function(aWindow) {},
  onWindowTitleChange: function(aWindow, aTitle) {},
};

function startup(data, reason) {
  console.log('vipro.startup');
  try {
    let wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);
    wm.addListener(windowListener);
  } catch(e) {
     console.log('vipro.startup.error.' + e.toString());
  }
  console.log('vipro.startup.DONE');
}

function shutdown() {
  console.log('vipro.shutdown');
}

function install(aData, aReason) {}
function uninstall(aData, aReason) {}

我并不担心上面的代码只适用于新标签页,而不适用于现有的标签页(我故意让它保持简单),只是当我离开最初的新标签页时,我没有机会连接到其他页面。

在这个页面上发现了一种稍微不同的方法:


使用cfx提供的布局,而不使用引导。。。bootstrap我可以使用page mod实现我需要的功能。

谢谢分享!