我正在写一个firefox xul扩展程序,我必须在网页和扩展程序之间进行交互。
示例:如果我按下页面中的链接,我想调用xul扩展名中的函数。 有人知道是否有办法?
非常感谢
答案 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);