我正在构建一个 chrome 扩展,将内容脚本添加到站点(我们称它为主机)。内容脚本在主机中创建了一个 iframe,它指向我的域(跨域)。
我可以通过 parent.postMessage() 从 iframe 向主机发送消息。但是,收到的“消息”事件不包含阻止我将消息传回给孩子的“源”属性。
更新 我正在寻找客户端解决方案或对此行为的解释。
我正在构建一个 chrome 扩展,将内容脚本添加到站点(我们称它为主机)。内容脚本在主机中创建了一个 iframe,它指向我的域(跨域)。
我可以通过 parent.postMessage() 从 iframe 向主机发送消息。但是,收到的“消息”事件不包含阻止我将消息传回给孩子的“源”属性。
更新 我正在寻找客户端解决方案或对此行为的解释。
你必须以困难的方式去做。
执行 iframe 时,在 url 中发送一个唯一的安装 ID。
例如 http://www.trackingdomain.tld/trackingscript.php?uid=38736238
然后让您的脚本每隔 1000 毫秒从您的域中使用相同的 uid 提取一个 JSON 脚本回复,以获取返回的消息。
您也可以使用 json 来发送消息。
但是这个解决方案意味着你将被迫使用服务器端脚本。
window
扩展中可用的沙盒对象似乎存在问题。
一个快速的解决方法是通过元素将 javascript 代码直接注入 DOM,src
而不是从扩展中运行它。这样您就可以处理常规的窗口对象。
你可以在这个问题的答案中看到一个例子