Javascript firefox xul estension与网页之间的交互

Javascript firefox xul estension与网页之间的交互,javascript,firefox,webpage,xul,Javascript,Firefox,Webpage,Xul,我正在编写一个firefox xul扩展,我必须在网页和扩展之间进行交互 示例:如果我按下页面中的链接,我想调用xul扩展中的函数。 有人知道有没有办法吗 非常感谢是的,你可以这样做。您需要使用content对象访问页面内容 在扩展代码中,您可以选择所有链接,然后添加eventListener: allLinks = content.document.getElementsByTagName("a"), for (var i=0, il=allLinks.length; i<il; i+

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

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


非常感谢

是的,你可以这样做。您需要使用
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);
}

如果您需要一个工作示例,我已经修改了Robert Nyman的扩展,以便在单击链接时添加警报。修改后的代码在中。

是的,您可以这样做。您需要使用
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);
}
如果您需要一个工作示例,我已经修改了Robert Nyman的扩展,以便在单击链接时添加警报。修改后的代码位于中。

有关详细信息,请参见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);
有关详细信息,请参见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);

嗯,我有一些问题。我可以有我的链接吗:我必须在扩展名的.js文件中写些什么?而不是警报(“链接”);我能写一张照片吗;我不太明白你想做什么。你想让扩展访问链接中的实际照片(二进制图像数据)吗?对不起,我英语说得不太好。我想做的是从我创建firefox扩展函数的网页调用,不是在我导入到页面中的文件中调用,而是为我的扩展创建的.js,你可以做到。看看我链接到的示例。nowclicked()函数位于扩展的javascript中。如果您不想使用事件执行函数,那么可以使用@Kashif posted(不太安全)的方法。嗯,我有一些问题。我可以有我的链接吗:我必须在扩展名的.js文件中写些什么?而不是警报(“链接”);我能写一张照片吗;我不太明白你想做什么。你想让扩展访问链接中的实际照片(二进制图像数据)吗?对不起,我英语说得不太好。我想做的是从我创建firefox扩展函数的网页调用,不是在我导入到页面中的文件中调用,而是为我的扩展创建的.js,你可以做到。看看我链接到的示例。nowclicked()函数位于扩展的javascript中。如果您不想使用事件执行函数,那么可以使用@Kashif posted(不太安全)方法。