如何从 Firefox 扩展执行页面定义的 JavaScript 函数?

2023-11-24

我正在创建一个 Firefox 扩展用于演示目的。 我从扩展调用文档中的特定 JavaScript 函数。 我在 HTML 文档中写了这个(不是在扩展内,而是由 Firefox 加载的页面):

document.funcToBeCalled = function() {
   // function body
};

然后,扩展将在某些事件上运行它:

var document = Application.activeWindow.activeTab.document;
document.funcToBeCalled();

但是它会引发一个错误,说funcToBeCalled没有定义。

注意:我可以通过调用获取文档上的元素document.getElementById(id);


出于安全原因,您对扩展程序内容页面的访问受到限制。看XPCNativeWrapper and 从 chrome 安全访问内容 DOM,

如果您控制页面,则最好的方法是在页面中设置事件侦听器并从扩展程序中分派事件(页面中的 addEventListener,扩展程序中的dispatchEvent)。

否则,请参阅http://groups.google.com/group/mozilla.dev.extensions/msg/bdf1de5fb305d365

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Firefox 扩展执行页面定义的 JavaScript 函数? 的相关文章

随机推荐

  • 使用 AJAX 上传文件而不使用 FormData (IE9)

    In IE9 FormData不支持 这使得使用上传文件XMLHttpRequest不那么琐碎了 这可以做到吗 我已经看到提到了 iFrame 虽然我不反对编写一些繁琐的代码 但我对如何实现这一目标感到困惑 有很多资源讨论上传到 iFram
  • 使用头文件有哪些优点和缺点? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我对 Java C Scala 等编程语言以及 C C Objective C 等较低级编程语言有一些经验 我的观察是 低级语言尝试将头文件和实现文件分开 而其他高级编程语言从不将其分开
  • 在单元测试方法中显示 Windows 窗体

    我刚刚在 Visual Studio NET 中发现了单元测试项目 并使用测试方法来设置我开发的全局代码的示例 一些全局方法涉及显示可重用的对话框 例如日期选择器和输入框 问题是 有时表格会显示 有时则不会 我认为这与模态有关 因为我有一个
  • Kotlin:“return@”是什么意思?

    我在我的一个项目中使用 RxJava 我使用 Android Studio 插件和地图之一将我的类之一转换为 KotlinflatMaplambda java 中的 Func1 中间体返回如下所示 Func1 我不懂这啥意思 somethi
  • 将两个数据框逐个元素粘贴在一起

    我需要逐个元素粘贴两个数据帧的内容以输入到另一个程序 我有一个平均值数据框和一个平均值标准误差数据框 我尝试使用 R Paste 函数 但它似乎无法处理数据框 使用向量时 似乎将第一个向量的所有元素连接到一个字符串中 并将第二个向量的所有元
  • Javascript 中使用双括号调用函数

    当我调用函数时hi 带双括号的函数显示hi输出 它也会给出错误 说hi不是函数 使用的意义是什么 带函数名 如果出现以下情况 双括号会很有用 hi返回了一个函数而不是它的名称 就像 function hi return hello hi 这
  • 查找包含另一个字符串中一个字符串的所有字符的最小窗口的长度

    最近我接受了采访 我做得不好 因为我被以下问题卡住了 假设给出一个序列 A D C B D A B C D A C D 搜索顺序如下 A C D 任务是找到给定字符串中的开始和结束索引 该索引包含保留顺序的搜索字符串的所有字符 Output
  • 如何重载打印函数来扩展其功能?

    我想知道是否有内置功能print可以被覆盖 以便以下语句将同时写入控制台和文件 print test0 test1 test2 sep n 另外 我想知道是否可以修改内置的源代码print功能 使用装饰器 简化示例 def my decor
  • Android 编辑文本 - 光标停留在起始位置

    我在我的项目中使用编辑文本 问题是 每当我在文本框中输入任何内容时 它都会显示出来 但无论我输入多少个字符 光标都不会从其起始位置移动 此外 我无法通过单击文本框中的任何特定字符来移动 我的包含编辑文本的 xml 文件是这样的
  • 如何知道 PHAsset 是否已被修改?

    更具体地说 你如何知道一个PHAsset标的资产的当前版本是否与原始版本不同 我的用户只需在必要时在当前资产或原始资产之间进行选择 然后我需要他们的答案PHImageRequestOptions version 从 iOS 16 开始 PH
  • 如何打开 Chrome DevTools 命令菜单?

    人们如何访问下面屏幕截图中的命令菜单 If you re unable to use keyboard shortcut Cmd Ctrl Shift P you can also click the three stacked dots
  • WPF 中的 x:Reference 何时解析?为什么 XAML 元素顺序会影响它?

    x 在 XAML 中重新排列元素后 无法解析引用 这里我展示一个工作代码 只需移动 DataGrid 元素 使其位于按钮元素之后 ContextMenu 中的 MenuItem 和 Button IsEnabled 中的 MultiBind
  • QTreeWidget 通过拖动重新排序子项

    我有一个 QTreeWidget 它仅显示单个根节点和一级子节点 我需要允许子节点的重新排序 他们绝不能被重新养育 这就是我在 QTreeWidget 中启用项目拖动的方法 ui gt levelElements gt setSelecti
  • 将 RGB 转换为光频率

    是否可以从 RGB 表示中获取颜色的光频率 我发现了相反的过程 1 但我不知道这种方式是否可行 1 http www fourmilab ch documents specrend AFAIK 没有直接的答案 因为多个波长可以组合起来给出相
  • 将 RGB 转换为 RGBA 白色

    我有一个十六进制颜色 例如 F4F8FB or rgb 244 248 251 我想转换成尽可能透明rgba 颜色 显示在白色上时 合理 我正在寻找一种算法 或者至少是一种如何做到这一点的算法的想法 例如 rgb 128 128 255 g
  • 沙箱 JSR-223

    我正在尝试对 JSR 223 进行沙箱处理 具体来说 我不希望任何脚本访问我的任何类 我听说 Rhino 可以使用 ClassShutter 做到这一点 但我想一般地做到这一点 即对于 JSR 223 的所有脚本引擎 我首先尝试使用Acce
  • AngularJS + jQuery Mobile,无适配器和禁用路由 - 仅用于 UI 样式

    我正在学习 AngularJS 并构建了一个小型应用程序 现在它的功能已经完成 我想使用 jQuery Mobile 对其进行设计 本来我是掉进去的tigbro 的 jquery mobile angular adapter 但最终认为它比
  • 用公式作为变量运行小鼠:即时评估而不是稍后评估?

    The R包裹mice附带以下示例 library mice imp lt mice nhanes fit lt with data imp exp lm bmi hyp chl 我想要一个灵活的调用with like model form
  • 如何在Python中进行二分法

    我想制作一个 Python 程序 它将运行二分法来确定以下各项的根 f x 26 85x 91x2 44x3 8x4 x5 二分法是一种用于估计多项式 f x 根的数值方法 是否有任何可用的伪代码 算法或库可以用来告诉我答案 基本技术 下面
  • 如何从 Firefox 扩展执行页面定义的 JavaScript 函数?

    我正在创建一个 Firefox 扩展用于演示目的 我从扩展调用文档中的特定 JavaScript 函数 我在 HTML 文档中写了这个 不是在扩展内 而是由 Firefox 加载的页面 document funcToBeCalled fun