我正在构建一个chrome扩展程序,它将一个内容脚本添加到一个站点(让我们称之为主机)。内容脚本在主机中创建一个iframe,该iframe通向我的域(跨域)。
我可以通过parent.postMessage()从iframe向主机发送消息。但是,收到的“消息”事件不包含“源”属性,该属性阻止我将消息传回给孩子。
更新 我正在寻找客户端解决方案或解释此行为。
答案 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
的答案中看到一个示例