假设我的插件必须从网页访问Javascript变量。我们来看https://mozilla.org。有一个名为optimizelyCode
的全局变量。我的插件只有在可以访问此变量时才有效。
如何让我的pageMod这样做?
要进行实验,这里有一些教程脚本:
var widgets = require("sdk/widget");
var tabs = require("sdk/tabs");
var widget = widgets.Widget({
id: "mozilla-link",
label: "Mozilla website",
contentURL: "http://www.mozilla.org/favicon.ico",
onClick: function() {
tabs.activeTab.attach({
contentScriptWhen: 'end',
contentScript:
'console.log(optimizelyCode)'
})
}
});
和
var pageMod = require("sdk/page-mod");
pageMod.PageMod({
include: "*.mozilla.org",
contentScriptWhen: 'end',
contentScript: 'console.log(optimizelyCode);'
});
我收到引用/未定义错误,因为optimizelyCode
不适合添加。在这个例子中,我甚至没有使用内容脚本文件。
据我所知,我只能访问getElementById
这类方法的基本DOM内容。如何访问这些网页本地JS变量?
参考:https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts/Loading_Content_Scripts
答案 0 :(得分:2)
仅供参考,非内容脚本你可以做gBrowser.contentWindow.wrappedJSObject.VAR_HERE
答案 1 :(得分:1)
由于这是附加SDK,因此它使用与Firefox其余部分不同的语法,您需要使用unsafeWindow.optimizelyCode
。