我有浏览器扩展程序,可以打开iFrame并允许用户执行操作,然后更新父页面上的值。它跨越不同的域并使用postMessage和receiveMessage,以便我可以跨域传递消息。这很好用,我可以使用这些消息在父页面的控件中设置某些值。我可以设置选择框的值,但我还需要通过jQuery
激活选择框'更改事件$("#selectid").change();
如果从页面上的用户事件调用,则此方法有效,但是当从receiveMessage调用时,它不会触发更改事件。我相信这可能是故意防止跨脚本攻击,但是因为我可以设置值,当然我也应该能够调用更改事件。任何人都可以确认这种行为和/或知道解决方法。
PS。我正在使用的代码是大型应用程序的一部分,我没有可以轻松展示的演示,但上面的解释非常详细。
答案 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