繁体   English   中英

在开发Firefox扩展时在页面中执行注入的Javascript代码

[英]Executing injected Javascript code in a page when developing a Firefox extension

我正在开发一个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");
}

谢谢。

这很有效。 我不知道技术性。 我从Felix获得了部分解决方案,并从此处获得了部分解决方案。

window.content.document.defaultView.wrappedJSObject.testFunction();

如果在注入的代码中声明了一个全局变量(或者显式设置了window对象的属性),那么通过gBrowser对象,一种方法是从扩展中获取对该元素的引用:

gBrowser.contentDocument.defaultView.yourObject
          ^-- HTML document  ^
              object         |-- window object

但是,当您在代码中使用windowdocument时要小心。 根据上下文,它可能会引用Firefox窗口或网站窗口对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM