页面加载后加载脚本 - Firefox扩展

时间:2013-08-02 14:19:51

标签: javascript jquery firefox firefox-addon mozilla

我正在创建一个Firefox扩展。我想使用Firefox扩展加载我的外部js文件加载时间的所有网页。我可以在我的html文件中成功加载所有js文件加载事件。但是我如何执行我的扩展。

window.onload = load;
function load() 
{               
      var filerefs=document.createElement('script')
      filerefs.setAttribute("type","text/javascript")
      filerefs.setAttribute("src", 'http://code.jquery.com/jquery-1.9.1.min.js')
      var head = doc.getElementsByTagName( "head" )[ 0 ].appendChild( filerefs );
}

请指导我。

1 个答案:

答案 0 :(得分:2)

如果你想检测页面加载而不是应用程序加载,你应该这样做(第一部分应该在你的主叠加文件中):

// do not try to add a callback until the browser window has
// been initialised. We add a callback to the tabbed browser
// when the browser's window gets loaded.
window.addEventListener("load", function (event) {
  // Add a callback to be run every time a document loads.
  // note that this includes frames/iframes within the document

  gBrowser.addEventListener("load", load(event), true);
}, false);

来自here

的参考资料

我将事件添加到load函数中,因为事件不仅会触发加载本身,还会触发其他元素,因此您必须验证您只执行了一次(引用here):< / p>

function load(event) {
    if (event.originalTarget.nodeName == "#document") {
        var htmlns = "http://www.w3.org/1999/xhtml";
        var doc = gBrowser.selectedBrowser.contentDocument;

        var filerefs = doc.createElementNS(htmlns,'script');
        filerefs.setAttribute("type","text/javascript");
        filerefs.setAttribute("src", "http://code.jquery.com/jquery-1.9.1.min.js");
        doc.getElementsByTagName("head")[0].appendChild(filerefs);
    }
}

我们必须定位页面的内容,而不是使用document.getElement ...,否则你将从你的插件中获取元素(使用gBrowser.selectedBrowser.contentDocument可以访问当前页面的dom)。在创建元素上,我们想要创建html元素,因此您可以定义和使用html命名空间(引用here)。

这应该可以解决问题:

enter image description here