我正在开发一个将状态栏中放置按钮的Firefox扩展。点击按钮后,扩展插入一些JavaScript到当前页面。这个Javascript有一个我想用一些参数调用的函数。我已经管理注入代码,我通过Firebug检查了页面,并验证JS已经被注入。如何在我的扩展中的页面中调用Javascript函数?在开发Firefox扩展时在页面中执行注入的Javascript代码
- 更多信息
下面是我用注入我的javascript代码:
var doc = window.content.document;
//Add the script
var visibilityJS = doc.createElement("script");
visibilityJS.setAttribute("type", "text/javascript");
visibilityJS.setAttribute("charset", "UTF-8");
visibilityJS.setAttribute("src", "chrome://visibility/content/scripts/visibility.js");
head.appendChild(visibilityJS);
//Call the function
alert("Executing testfunction");
window.content.document.defaultView.testFunction();
..和我的JS文件中的代码,我要去注入。即visibility.js
window.testFunction = function() {
alert("Message");
}
谢谢。
嗨费利克斯。我无法弄清楚你的意思。我尝试阅读文档,即您指出的页面,但我仍然无法完全理解。我尝试了'window.content.document。<函数名称>'但那不起作用。你会碰巧有一个简单的例子或什么?谢谢。 – 2010-11-18 20:38:43
@Mridang Agarwalla:你很近。 'window.content.document'应该和'gBrowser.contentDocument'一样。但是这给了你网站的文档对象。全局变量总是网站的“窗口”对象的属性。 'document.defaultView'应该给你那个对象。试试'window.content.document.defaultView。<函数名称>'。 – 2010-11-18 23:08:51
再次菲利克斯。我似乎还无法访问它。我得到以下错误 - 'window.content.document.defaultView.testFunction'不是一个函数。我尝试从JavaScript控制台调用'testFunction',它工作但扩展仍然无法访问它。以任何方式添加或修改我注入的Javascript代码?再次感谢。 – 2010-11-19 07:47:36