当前位置:  开发笔记 > 编程语言 > 正文

如何将Chrome扩展ID动态发送到网页以进行消息传递

如何解决《如何将Chrome扩展ID动态发送到网页以进行消息传递》经验,为你挑选了1个好方法。

我通过内容脚本在网页中注入脚本.在脚本中我使用chrome.runtime.sendMessage成功地向后台脚本发送消息.但是我有extensionId硬编码.如何在网页中动态注入扩展ID以将消息发送到后台脚本?

chrome.runtime.sendMessage(extensionIdHardCoded, {
      msg: data
    },
    function(response) {});

Xan.. 10

首先,如果您已经拥有内容脚本,则不必使用externally_connectable通信 - 您可以使用自定义事件与将其转发到后台的内容脚本进行通信.


也就是说,您可以chrome.runtime.id在注入脚本之前使用并将其传递给窗口上下文:

var script = document.createElement('script');
script.textContent = "var extensionId = " + JSON.stringify(chrome.runtime.id);
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);

/* now inject your script */

或者,您可以添加一个不可见的DOM节点,该节点将包含ID作为内容或某些属性,并从注入的脚本中读取该节点.



1> Xan..:

首先,如果您已经拥有内容脚本,则不必使用externally_connectable通信 - 您可以使用自定义事件与将其转发到后台的内容脚本进行通信.


也就是说,您可以chrome.runtime.id在注入脚本之前使用并将其传递给窗口上下文:

var script = document.createElement('script');
script.textContent = "var extensionId = " + JSON.stringify(chrome.runtime.id);
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);

/* now inject your script */

或者,您可以添加一个不可见的DOM节点,该节点将包含ID作为内容或某些属性,并从注入的脚本中读取该节点.

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有