我正在开发一个Firefox扩展程序,它在状态栏中放置一个按钮。单击该按钮时,扩展会将一些Javascript注入当前页面。这个Javascript有一个我想用一些参数调用的函数。我已经管理了注入代码,我已经通过Firebug检查了页面并验证了JS已被注入。如何从我的扩展程序中调用页面中的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");
}
感谢。
答案 0 :(得分:4)
这很有用。我不知道技术性。我从Felix获得了解决方案的一部分,并从here获得了部分解决方案。
window.content.document.defaultView.wrappedJSObject.testFunction();
答案 1 :(得分:2)
如果在注入的代码中声明了一个全局变量(或者显式设置了window
对象的属性),那么从扩展中获取对该元素的引用的一种方法是通过{{3}对象:
gBrowser.contentDocument.defaultView.yourObject
^-- HTML document ^
object |-- window object
在代码中使用window
和document
时要小心。根据上下文,它可能会引用Firefox窗口或网站窗口对象。