运行 注入js的一个函数
Run a function from injected js
我一直在兜圈子,所以我希望得到一些帮助
这就是我想要达到的效果
- 用户按下我的分机
- 出现带有两个按钮的弹出窗口,'run function a' 和 'run function b'
- 当他们按下按钮时,它 运行 是我自己注入的 js 文件中的函数。
- 例如,函数 a 可以计算活动选项卡中某种类型的元素的数量
所以,我可以在页面加载时注入我的 js 文件(这是在我的 contentscript.js 中)
var s = document.createElement('script');
s.src = chrome.extension.getURL('temp-file.js');
s.onload = function() {
this.parentNode.removeChild(this);
};
(document.head||document.documentElement).appendChild(s);
这有效,我可以看到正在执行的 js
但我能做的是在 temp-file.js
中有一个函数 运行
例如在弹出窗口中我有
chrome.tabs.executeScript(null, {code:"shows();"});
我明白了:Uncaught ReferenceError: shows is not defined
如果我输入 shows();进入控制台,它按预期工作
我认为问题全在于上下文。我在 popup.js 页面中尝试了各种方法来注入文件,但似乎没有任何效果
有谁能给我指出正确的方向吗
谢谢
授予
I presume that the issue is all about the context.
你说得对。
文件 "temp-file.js" 已被注入主机页面,因此它现在是主机页面上下文的一部分。扩展可能会弄乱它 - 因为它在不同的上下文中。
运行 注入js的函数
解决方案:
不确定您要实现的目标。选择适合你的:
拆分注入文件
Code/functions 你想在页面上执行 - 将它们用作内容脚本。
在这种情况下,将您分开 "temp-file.js" - 部分扩展已执行(成为内容脚本的一部分)并且部分主机页面必须执行(您的代码片段)。
使用自定义事件
使用自定义事件 - 在 contenscript 中生成自定义事件 - 监听它注入的脚本。 custom event
你的问题并没有说明你到底想达到什么目的。
我是这么理解的。您想从 popup.js
.
对 contentscript.js
执行一个函数
如果是这种情况,那么您可以从 popup.js
调用 contentscript
上的方法,就像这里提到的 https://developer.chrome.com/extensions/messaging
我一直在兜圈子,所以我希望得到一些帮助
这就是我想要达到的效果
- 用户按下我的分机
- 出现带有两个按钮的弹出窗口,'run function a' 和 'run function b'
- 当他们按下按钮时,它 运行 是我自己注入的 js 文件中的函数。
- 例如,函数 a 可以计算活动选项卡中某种类型的元素的数量
所以,我可以在页面加载时注入我的 js 文件(这是在我的 contentscript.js 中)
var s = document.createElement('script');
s.src = chrome.extension.getURL('temp-file.js');
s.onload = function() {
this.parentNode.removeChild(this);
};
(document.head||document.documentElement).appendChild(s);
这有效,我可以看到正在执行的 js
但我能做的是在 temp-file.js
中有一个函数 运行例如在弹出窗口中我有
chrome.tabs.executeScript(null, {code:"shows();"});
我明白了:Uncaught ReferenceError: shows is not defined
如果我输入 shows();进入控制台,它按预期工作
我认为问题全在于上下文。我在 popup.js 页面中尝试了各种方法来注入文件,但似乎没有任何效果
有谁能给我指出正确的方向吗
谢谢
授予
I presume that the issue is all about the context.
你说得对。
文件 "temp-file.js" 已被注入主机页面,因此它现在是主机页面上下文的一部分。扩展可能会弄乱它 - 因为它在不同的上下文中。
运行 注入js的函数
解决方案:
不确定您要实现的目标。选择适合你的:
拆分注入文件 Code/functions 你想在页面上执行 - 将它们用作内容脚本。 在这种情况下,将您分开 "temp-file.js" - 部分扩展已执行(成为内容脚本的一部分)并且部分主机页面必须执行(您的代码片段)。
使用自定义事件 使用自定义事件 - 在 contenscript 中生成自定义事件 - 监听它注入的脚本。 custom event
你的问题并没有说明你到底想达到什么目的。
我是这么理解的。您想从 popup.js
.
contentscript.js
执行一个函数
如果是这种情况,那么您可以从 popup.js
调用 contentscript
上的方法,就像这里提到的 https://developer.chrome.com/extensions/messaging