从注入的js运行函数

时间:2015-06-16 11:08:57

标签: google-chrome-extension

我一直在圈子里,所以我很感激一些帮助

这就是我想要实现的目标

  1. 用户按下我的扩展程序ison
  2. 弹出窗口显示两个按钮,“运行功能a”和“运行功能b”
  3. 当他们按下按钮时,它会在我自己的js文件中运行该函数,我已经注入了该函数。
  4. 例如,函数a可以计算活动选项卡中某种类型的元素数量
  5. 所以,我可以在页面加载时注入我的js文件(这是在我的contentscript.js中)

    chrome.tabs.executeScript(null, {code:"shows();"});
    

    这很有效,我可以看到js被执行

    但我可以做的是在temp-file.js中运行一个函数

    例如我在弹出窗口中

    $req->get("timezone")
    

    我得到了:未捕获的ReferenceError:未定义的节目

    如果我输入shows();进入控制台,它按预期工作

    我认为问题完全在于背景。我在popup.js页面尝试了各种各样的东西来注入文件,但似乎没有任何工作

    是否有人能指出我正确的方向

    由于

    捐赠

2 个答案:

答案 0 :(得分:1)

  

我认为问题完全在于背景。

你是对的。

文件“temp-file.js”已经注入主页,因此它现在是主页页面上下文的一部分。扩展可以搞乱它 - 因为它在不同的环境中。

从注入的js运行函数

解决方案:

不确定您要实现的目标。选择适合你的东西:

  1. 拆分注入的文件 要在页面上执行的代码/函数 - 将它们用作内容脚本。 在这种情况下,拆分“temp-file.js” - 部分扩展具有执行(成为内容脚本的一部分),部分主机页面必须执行(您的代码片段)。

  2. 使用自定义事件 使用自定义事件 - 在contenscript中生成自定义事件 - 监听它注入的脚本。 custom event

答案 1 :(得分:-1)

你的问题没有说明你想要达到的目的。

这就是我的理解。您想要从contentscript.js。{/ p>执行popup.js上的功能

如果是这种情况,那么您可以在contentscript popup.js上调用方法,就像这里提到的那样https://developer.chrome.com/extensions/messaging