firefox xul扩展和网页之间的交互

时间:2013-11-19 14:11:37

标签: javascript firefox webpage xul

我正在写一个firefox xul扩展程序,我必须在网页和扩展程序之间进行交互。

示例:如果我按下页面中的链接,我想调用xul扩展名中的函数。 有人知道是否有办法?

非常感谢

2 个答案:

答案 0 :(得分:1)

是的,你可以这样做。您需要使用content对象访问页面内容。

在您的扩展程序代码中,您可以选择所有链接,然后添加eventListener:

allLinks = content.document.getElementsByTagName("a"),

for (var i=0, il=allLinks.length; i<il; i++) {
    elm = allLinks[i];
    elm.addEventListener("click", nowclicked, false);
}

然后你的事件监听器看起来像:

nowclicked : function () {
    alert("a linked was clicked!");
}

如果您需要一个有效的示例,我已经修改了Robert Nyman的Link Target Finder扩展名,以便在点击链接时添加提醒。修改后的代码位于linkTargetFinder.js

答案 1 :(得分:0)

请参阅Sending data from unprivileged document to chrome document的MDN示例。

基本上,在Chrome代码中,您必须添加一个监听器:

// The last value is a Mozilla-specific value to indicate untrusted content is allowed to trigger the event.
document.addEventListener("MyExtensionEvent", function(e) {myExtension.myListener(e);}, false, true);

并从内容脚本中触发事件。请注意,以下文档是contentDocument而不是XulDocument

var evt = document.createEvent("Events");
evt.initEvent("MyExtensionEvent", true, false);
element.dispatchEvent(evt);