chrome content script:window.postMessage()“message”事件不包含“source”属性

时间:2012-11-15 15:44:06

标签: javascript jquery google-chrome google-chrome-extension content-script

我正在构建一个chrome扩展程序,它将一个内容脚本添加到一个站点(让我们称之为主机)。内容脚本在主机中创建一个iframe,该iframe通向我的域(跨域)。

我可以通过parent.postMessage()从iframe向主机发送消息。但是,收到的“消息”事件不包含“源”属性,该属性阻止我将消息传回给孩子。

更新 我正在寻找客户端解决方案或解释此行为。

2 个答案:

答案 0 :(得分:2)

你必须以困难的方式去做。

在执行iframe时,请在网址中发送唯一的安装ID。

e.g。 http://www.trackingdomain.tld/trackingscript.php?uid=38736238

然后让您的脚本从您的域中每隔1000毫秒使用相同的uid提取JSON脚本回复,以获取返回的消息。

您也可以使用json发送消息。

但是这个解决方案意味着你将被迫使用服务器端脚本。

答案 1 :(得分:0)

扩展程序中可用的沙盒window对象似乎存在问题。

快速解决方法是通过src元素将javascript代码直接注入DOM,而不是从扩展中运行它。这样您就可以处理常规窗口对象。

您可以在this question

的答案中看到一个示例