Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome extension 从注入的js运行函数_Google Chrome Extension - Fatal编程技术网

Google chrome extension 从注入的js运行函数

Google chrome extension 从注入的js运行函数,google-chrome-extension,Google Chrome Extension,我一直在绕圈子,所以我希望能得到一些帮助 这就是我想要实现的目标 用户按下我的分机 弹出窗口显示两个按钮,“运行功能a”和“运行功能b” 当他们按下一个按钮时,它会在我自己的js文件中运行我已经注入的函数 例如,函数a可以是计算活动选项卡中特定类型的元素数 因此,我可以在页面加载时插入我的js文件(这在我的contentscript.js中) 这是可行的,我可以看到js被执行 但我能做的是在temp-file.js中运行一个函数 例如,在弹出窗口中,我有 chrome.tabs.executeS

我一直在绕圈子,所以我希望能得到一些帮助

这就是我想要实现的目标

  • 用户按下我的分机
  • 弹出窗口显示两个按钮,“运行功能a”和“运行功能b”
  • 当他们按下一个按钮时,它会在我自己的js文件中运行我已经注入的函数
  • 例如,函数a可以是计算活动选项卡中特定类型的元素数
  • 因此,我可以在页面加载时插入我的js文件(这在我的contentscript.js中)

    这是可行的,我可以看到js被执行

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

    例如,在弹出窗口中,我有

    chrome.tabs.executeScript(null, {code:"shows();"});
    
    我发现:未捕获引用错误:未定义显示

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

    我认为这个问题与背景有关。我在popup.js页面中尝试了各种方法来注入文件,但似乎没有任何效果

    有人能给我指一下正确的方向吗

    谢谢

    授予

    我认为这个问题与背景有关

    你说得对

    文件“temp file.js”已经注入到主机页中,因此它现在是主机页上下文的一部分。扩展可能会搞乱它——因为它处于不同的上下文中

    从注入的js运行函数

    解决方案:

    不确定你想要实现什么。选择适合你的:

  • 分割注入文件 要在页面上执行的代码/函数-将它们用作contentscript。 在本例中,拆分“temp file.js”-必须执行部分扩展名(成为contentscript的一部分),必须执行部分主机页(代码段)

  • 使用自定义事件 使用自定义事件-在contenscript中生成自定义事件-在脚本中侦听它


  • 你的问题并没有说明你到底想要实现什么

    这就是我所理解的。您想在您的
    popup.js
    中的
    contentscript.js
    上执行一个函数


    如果是这样的话,那么你可以从
    popup.js
    调用
    contentscript
    上的方法,就像这里提到的那样

    谢谢你的确认,我很感激。也谢谢Kousick Shanmugam Nagaraj,睡了一夜之后,你发送的链接有了一些意义。我有一个后续问题,我将作为一个新的职位,因为它不是直接相关的。谢谢,阿加尼我不明白你说的1是什么意思,但是2是一个正确的解决方案。你确实误解了这个问题。这已经是mozman2正在做的事情了——但是该方法不在内容脚本的上下文中。这需要一个额外的步骤。
    chrome.tabs.executeScript(null, {code:"shows();"});