我正在尝试创建我的第一个扩展程序。
我找到了这个示例:http://blog.mozilla.org/addons/2009/01/28/how-to-develop-a-firefox-extension/
我需要在特定页面上获取一些html内容并在同一页面中写一些东西,所以我修改了它并获得了我需要的东西(使用javascript我在我想要的表中添加了内容)。但是要查看我的内容,我必须从状态栏上的按钮启动扩展程序,而我希望在我加载/重新加载它时已经在页面中处于活动状态(检查URL,以便仅使其工作)在那个页面上)但我不能自动拥有它。
我尝试添加linkTargetFinder.run();在init区域,但......没有。此外,作为“自动运行”的延伸,但如果活跃,我不会看到任何变化。
任何工作样本?
由于 纳迪亚
这是代码(我编辑了.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);
答案 0 :(得分:0)
如果你正在做的是在特定的网页上运行一些JavaScript,比如在表格中添加内容,那么你应该考虑为Greasemonkey addon而不是完整的插件做一个用户脚本。通过这种方式,您可以为页面编写JS,并在每次浏览此特定页面时执行它。
编辑:
试试这个:
init: function () {
gBrowser.addEventListener("load", linkTargetFinder.run, true);
},
...
答案 1 :(得分:0)
我打赌extensions.linktargetfinder.autorun
不存在。所以getBoolPref
会引发异常,其余的都是历史记录。
将您的代码更改为以下
var autoRun;
try {
autoRun = prefManager.getBoolPref("extensions.linktargetfinder.autorun");
} catch(e){
autoRun = false;
}