Firefox addon firefox扩展处理页面加载
我正在尝试创建我的第一个扩展 我发现了这个样本: 我需要在特定页面上获取一些html内容,并在同一页面中编写一些内容,因此我对其进行了修改并获得了所需的内容(使用javascript,我在表中添加了我想要的内容)。但要查看我的内容,我必须从状态栏上的按钮启动扩展,而我希望在加载/重新加载它时,它已经在页面中处于活动状态(选中url,使其仅在该页面上工作),但我无法自动拥有它 我尝试添加linkTargetFinder.run();在初始区域,但是。。。没有什么此外,扩展作为“自动运行”,但如果活动,我看不到任何变化 有工作样品吗 谢谢 纳迪亚 这里是代码(我只编辑了.js文件),我评论了几个测试不起作用Firefox addon firefox扩展处理页面加载,firefox-addon,Firefox Addon,我正在尝试创建我的第一个扩展 我发现了这个样本: 我需要在特定页面上获取一些html内容,并在同一页面中编写一些内容,因此我对其进行了修改并获得了所需的内容(使用javascript,我在表中添加了我想要的内容)。但要查看我的内容,我必须从状态栏上的按钮启动扩展,而我希望在加载/重新加载它时,它已经在页面中处于活动状态(选中url,使其仅在该页面上工作),但我无法自动拥有它 我尝试添加linkTargetFinder.run();在初始区域,但是。。。没有什么此外,扩展作为“自动运行”,但如果活
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)”之外添加调用,但无论如何都没有效果。我用约兰达的剧本解决了这个问题。无论如何谢谢你!