Javascript Firefox扩展:如何从加载覆盖运行脚本

Javascript Firefox扩展:如何从加载覆盖运行脚本,javascript,firefox-addon,Javascript,Firefox Addon,我已经得到了扩展加载,并已能够使一个状态显示在底部。我已尝试将以下代码添加到chrome.manifest文件中: chrome.manifest: content sample chrome/content/ overlay chrome://browser/content/browser.xul chrome://sample/content/sample.xul 然后在sample.xul中,我有以下内容: sample.xul: <?xml version="1.

我已经得到了扩展加载,并已能够使一个状态显示在底部。我已尝试将以下代码添加到chrome.manifest文件中:

chrome.manifest:

content     sample    chrome/content/
overlay chrome://browser/content/browser.xul chrome://sample/content/sample.xul
然后在sample.xul中,我有以下内容:

sample.xul:
<?xml version="1.0"?>
<overlay id="sample" 
         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 <statusbar id="status-bar" hidden="false">
  <statusbarpanel id="my-panel" label="Hello, World v2"  />
 </statusbar>

<menubar id="main-menubar">
  <menu label="Jeff" insertbefore="tools-menu">
    <menupopup>
      <menuitem label="About"/>
    </menupopup>
  </menu>
</menubar>


<script src="onloadoverlay.js"/> 

</overlay>
请让我知道,如果我在这方面完全错了,或者如果我错过了一些简单的东西。我已经通过谷歌和一些扩展创建演练以及其他信息了解到了这一点。到目前为止,我希望代码能够在页面加载时弹出一个窗口

非常感谢您的帮助


-Jeff

将脚本标记的
src
属性更改为
chrome://sample/content/onloadoverlay.js

希望有经验的人能帮助我们。但是对于初学者来说,为什么不从bootstrap插件开始呢?这不需要覆盖或chrome.manifest,只需要一个bootstrap.js和install.rdf,所有元素都需要创建elements(动态创建和插入),也可以使用loadOverlay@Noitidart我在演练中看到了这一点,但有点忽略了b/c,它们都没有显示每个文件应该如何形成。这是工作,我很高兴,虽然,我基本上得到了工作骨架的扩展,现在我可以自由地添加任何东西到它的飞行。我在第一篇文章中放的每个文件都是整个文件。文件结构如下:C:\Users\user\AppData\Roaming\Mozilla\Firefox\Profiles\Profile.dev\extensions\onloadext@jeffmy_extension/chrome.manifest my_extension/install.rdf my_extension/chrome/content/onloadoverlay.js my_extension/chrome/content/sample.xulThank谢谢!这起作用了。现在是时候让它只弹出主屏幕,而不是iframes。非常感谢只有主文档做一个测试
如果(window.frameElement){
那么它就是一个框架
onloadoverlay.js:

var myExtension = {
    init: function() {
        // The event can be DOMContentLoaded, pageshow, pagehide, load or unload.
        if(gBrowser) gBrowser.addEventListener("DOMContentLoaded", this.onPageLoad, false);
    },
    onPageLoad: function(aEvent) {
        var doc = aEvent.originalTarget; // doc is document that triggered the event
        var win = doc.defaultView; // win is the window for the doc
        // test desired conditions and do something
        // if (doc.nodeName != "#document") return; // only documents
        // if (win != win.top) return; //only top window.
        // if (win.frameElement) return; // skip iframes/frames
        alert("page is loaded \n" +doc.location.href);
    }
}
window.addEventListener("load", function load(event){
    window.removeEventListener("load", load, false); //remove listener, no longer needed
    myExtension.init();  
},false);