javascript - 如何允许插件的内容脚本从当前选项卡访问 Javascript 变量?

标签 javascript firefox-addon firefox-addon-sdk

假设我的附加组件必须从网页访问 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 对插件不可用。在这个例子中,我什至没有使用内容脚本文件。

据我所知,我只能访问基本的 DOM 内容,例如 getElementById 之类的方法。如何访问这些网页本地JS变量?

引用:https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts/Loading_Content_Scripts

最佳答案

仅供引用,您可以从非内容脚本执行 gBrowser.contentWindow.wrappedJSObject.VAR_HERE

关于javascript - 如何允许插件的内容脚本从当前选项卡访问 Javascript 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21923438/

相关文章:

javascript - Firefox 附加组件 sdk : how to use simple-storage API in a content script?

javascript - Chart.JS TypeError : this. 比例未定义

javascript - 在 React Native 项目中,为什么导入中的顶级目录被称为 'app' ?

javascript - 在 32 位和/或 64 位 firefox(版本 25.0.1)上使用 js-ctypes 的 firefox 扩展

javascript - 来自不同内容脚本和主要内容的 Firefox SDK 信息

node.js - 火狐插件错误: Module `http` is not found

Javascript写入文件而不覆盖

javascript - Jest - 描述 block 的顺序执行

javascript - 如何组织与Firefox扩展代码注入(inject)的双向通信?

firefox - 无法在 Firefox Addon 开发中将图像复制到剪贴板