在交叉脚本postmessage之后选择火灾更改事件

时间:2014-05-14 14:20:39

标签: jquery cross-domain messaging

我有浏览器扩展程序,可以打开iFrame并允许用户执行操作,然后更新父页面上的值。它跨越不同的域并使用postMessage和receiveMessage,以便我可以跨域传递消息。这很好用,我可以使用这些消息在父页面的控件中设置某些值。我可以设置选择框的值,但我还需要通过jQuery

激活选择框'更改事件
$("#selectid").change();

如果从页面上的用户事件调用,则此方法有效,但是当从receiveMessage调用时,它不会触发更改事件。我相信这可能是故意防止跨脚本攻击,但是因为我可以设置值,当然我也应该能够调用更改事件。任何人都可以确认这种行为和/或知道解决方法。

PS。我正在使用的代码是大型应用程序的一部分,我没有可以轻松展示的演示,但上面的解释非常详细。

1 个答案:

答案 0 :(得分:2)

如果使用onchange javascript方法绑定处理程序,则需要调度addEventListener()事件:

    var evt = document.createEvent("HTMLEvents");
    evt.initEvent("change", false, true);
    $(selector)[0].dispatchEvent(evt);

有一些polyfill可用于支持IE8,例如:https://gist.github.com/jonathantneal/3748027