Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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
Javascript 将消息从Chrome扩展传递到网页_Javascript_Jquery_Google Chrome Extension_Dom Events - Fatal编程技术网

Javascript 将消息从Chrome扩展传递到网页

Javascript 将消息从Chrome扩展传递到网页,javascript,jquery,google-chrome-extension,dom-events,Javascript,Jquery,Google Chrome Extension,Dom Events,我需要在Chrome扩展中传递消息(引发事件),并让网页上的JavaScript对此做出反应 在扩展的content\u script.js中,应该有如下函数 raiseXYZevent(data); 网页上的JavaScripthttp://example.com/mypage.html应该执行一个处理程序 function processXYZevent(data) { ... } 问题在于,扩展中的内容脚本无法直接与网页上的JavaScript交互(它只能修改DOM)。是否有方法从扩

我需要在Chrome扩展中传递消息(引发事件),并让网页上的JavaScript对此做出反应

在扩展的
content\u script.js
中,应该有如下函数

raiseXYZevent(data);
网页上的JavaScript
http://example.com/mypage.html
应该执行一个处理程序

 function processXYZevent(data) { ... }

问题在于,扩展中的内容脚本无法直接与网页上的JavaScript交互(它只能修改DOM)。是否有方法从扩展中进行DOM更改,以某种方式从网页中检测它们并调用
processXYZevent

由于内容脚本和网页共享相同的DOM,因此可以使用
postMessage
在它们之间发送消息。通过示例详细说明了这一点。

从内容脚本中插入以下内容:

$('html').append(`
    <script>

      window.addEventListener("message", function(event) {
       // We only accept messages from ourselves
       if (event.source != window)
         return;

        if (event.data.type && (event.data.type == "FROM_CONTENT")) {
          console.log("Page script received: " + event.data.text)
          console.log(event.data.text) // "Something message here"
        }
      }, false)
    <\/script>`)

可能是隐藏字段上的更改事件,或类似的隐藏按钮单击?或此。。。始终存在executeScript(“…createElement(“”)…”),它为您提供了几乎无限的页面权限。该示例将消息从网页发送到扩展。它是否工作在相反的方向上?从文本中可以看出:“这样,页面就建立了一条与扩展过程的通信线路。通过类似的方式也可以实现相反的效果。”所以是的。这个链接是死的
window.postMessage({ type: "FROM_CONTENT", text: "Something message here"}, "*")