Firefox addon firefox扩展处理页面加载

Firefox addon firefox扩展处理页面加载,firefox-addon,Firefox Addon,我正在尝试创建我的第一个扩展 我发现了这个样本: 我需要在特定页面上获取一些html内容,并在同一页面中编写一些内容,因此我对其进行了修改并获得了所需的内容(使用javascript,我在表中添加了我想要的内容)。但要查看我的内容,我必须从状态栏上的按钮启动扩展,而我希望在加载/重新加载它时,它已经在页面中处于活动状态(选中url,使其仅在该页面上工作),但我无法自动拥有它 我尝试添加linkTargetFinder.run();在初始区域,但是。。。没有什么此外,扩展作为“自动运行”,但如果活

我正在尝试创建我的第一个扩展

我发现了这个样本:

我需要在特定页面上获取一些html内容,并在同一页面中编写一些内容,因此我对其进行了修改并获得了所需的内容(使用javascript,我在表中添加了我想要的内容)。但要查看我的内容,我必须从状态栏上的按钮启动扩展,而我希望在加载/重新加载它时,它已经在页面中处于活动状态(选中url,使其仅在该页面上工作),但我无法自动拥有它

我尝试添加linkTargetFinder.run();在初始区域,但是。。。没有什么此外,扩展作为“自动运行”,但如果活动,我看不到任何变化

有工作样品吗

谢谢 纳迪亚

这里是代码(我只编辑了.js文件),我评论了几个测试不起作用

var linkTargetFinder = function () {
var prefManager = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
return {
    init : function () {
        gBrowser.addEventListener("load", function () {
            var autoRun = prefManager.getBoolPref("extensions.linktargetfinder.autorun");
            if (autoRun) {
                linkTargetFinder.run();
            }
            //linkTargetFinder.run();  // doesn't work
        }, false);
        //linkTargetFinder.run();  // doesn't work
        alert("ZZZZZZZZZZZZZZZZZZ"); // doesn't work
    },

    run : function () {
        var head = content.document.getElementsByTagName("head")[0],
            style = content.document.getElementById("link-target-finder-style"),
            allLinks = content.document.getElementsByTagName("a"),
            foundLinks = 0;

        if (!style) {
            style = content.document.createElement("link");
            style.id = "link-target-finder-style";
            style.type = "text/css";
            style.rel = "stylesheet";
            style.href = "chrome://linktargetfinder/skin/skin.css";
            head.appendChild(style);
        }   

        for (var i=0, il=allLinks.length; i<il; i++) {
            elm = allLinks[i];
            if (elm.getAttribute("target")) {
                elm.className += ((elm.className.length > 0)? " " : "") + "link-target-finder-selected";
                foundLinks++;
            }
        }
        if (foundLinks === 0) {
            alert("No links found with a target attribute");
        }
        else {
            //alert("Found " + foundLinks + " links with a target attribute");
        }
        t = content.document.getElementById("ERSContainer"), // ID of the table
        d = t.getElementsByTagName("tr")[1],
        r = d.getElementsByTagName("td")[1];
        var myMail = "mail: "+r.textContent; //ok scrive nella td
        var myName =  content.document.getElementById("buyercontactname").value;
        var myAddr1 =  content.document.getElementById("buyeraddress1").value;
        var myAddr2 =  content.document.getElementById("buyeraddress2").value;
        var myCity =  content.document.getElementById("buyercity").value;
        var myProv =  content.document.getElementById("buyerstateprovince").value;
        var myCAP =  content.document.getElementById("buyerzip").value;

        var elt = content.document.getElementById("buyercountry");
        var myCountry =  elt.options[elt.selectedIndex].text;
        var myTel =  content.document.getElementById("dayphone1").value;
        var myTag1 = "<tr><td colspan='2'>OK!!!<br />";
        var myTag2 = "</td></tr>";


        z= t.innerHTML;

        t.innerHTML  = myTag1 + myMail +
         " - "+myName+
        myAddr1 + "<br />" +
        myAddr2 + "<br />" +
        myCity + "<br />" +
        myProv + "<br />" +
        myCAP + "<br />" +
        myCountry + "<br />" +
        myTel + "<br />" +
        myFlash+
         myTag2+z;

    }
};
}();
window.addEventListener("load", linkTargetFinder.init, false);
var linkTargetFinder=函数(){
var prefManager=Components.classes[“@mozilla.org/preferences service;1”].getService(Components.interfaces.nsIPrefBranch);
返回{
init:函数(){
gBrowser.addEventListener(“加载”,函数(){
var autoRun=prefManager.getBoolPref(“extensions.linktargetfinder.autoRun”);
如果(自动运行){
linkTargetFinder.run();
}
//linkTargetFinder.run();//不工作
},假);
//linkTargetFinder.run();//不工作
警报(“zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
},
运行:函数(){
var head=content.document.getElementsByTagName(“head”)[0],
style=content.document.getElementById(“链接目标查找器样式”),
allLinks=content.document.getElementsByTagName(“a”),
foundLinks=0;
如果(!样式){
style=content.document.createElement(“链接”);
style.id=“链接目标查找器样式”;
style.type=“text/css”;
style.rel=“样式表”;
style.href=”chrome://linktargetfinder/skin/skin.css";
头。附属物(样式);
}   
对于(var i=0,il=allLinks.length;i0)?“”:“”+“已选择链接目标查找器”;
foundLinks++;
}
}
if(foundLinks==0){
警报(“未找到具有目标属性的链接”);
}
否则{
//警报(“找到”+foundLinks+“带有目标属性的链接”);
}
t=content.document.getElementById(“ERSContainer”),//表的ID
d=t.getElementsByTagName(“tr”)[1],
r=d.getElementsByTagName(“td”)[1];
var myMail=“mail:+r.textContent;//ok scrive nella td
var myName=content.document.getElementById(“buyercontactname”).value;
var myAddr1=content.document.getElementById(“buyeraddress1”).value;
var myAddr2=content.document.getElementById(“buyeraddress2”).value;
var myCity=content.document.getElementById(“buyercity”).value;
var myProv=content.document.getElementById(“buyerstateprovince”).value;
var myCAP=content.document.getElementById(“buyerzip”).value;
var elt=content.document.getElementById(“买方国家”);
var myCountry=elt.options[elt.selectedIndex].text;
var myTel=content.document.getElementById(“dayphone1”).value;
var myTag1=“好!!!
”; var myTag2=“”; z=t.innerHTML; t、 innerHTML=myTag1+myMail+ “-”+myName+ myAddr1+“
”+ myAddr2+“
”+ myCity+“
”+ myProv+“
”+ myCAP+“
”+ myCountry+“
”+ myTel+“
”+ 我的闪光+ myTag2+z; } }; }(); addEventListener(“加载”,linkTargetFinder.init,false);
如果你正在做的是在一个特定的网页上运行一点JavaScript,比如把内容添加到一个表中,也许你应该考虑做一个用户脚本而不是一个完整的插件。有了它,您就可以为页面编写JS,并在每次浏览该特定页面时执行它

编辑:

试试这个:

init: function () {
   gBrowser.addEventListener("load", linkTargetFinder.run, true);
},
...

我打赌
extensions.linktargetfinder.autorun
不存在。因此,
getBoolPref
抛出一个异常,其余为历史

将代码更改为以下内容

var自动运行;
试一试{
autoRun=prefManager.getBoolPref(“extensions.linktargetfinder.autoRun”);
}捕获(e){
自动运行=错误;
}

您能给我们看一下您的代码吗?添加了代码。。。在init函数中调用的代码似乎没有在页面加载时运行。谢谢Yolanda,但我必须提供附加组件来完成用AdobeAIR编写的软件。我想给用户一个可以安装的插件。我不能告诉他们“下载Greasemonkey并添加这个js代码”谢谢,我修改了我在那个链接上找到的示例,它有自动运行选项(即使我没有看到任何差异),所以它没有丢失。不管怎样,我甚至尝试在“if(autoRun)”之外添加调用,但无论如何都没有效果。我用约兰达的剧本解决了这个问题。无论如何谢谢你!