2014-05-14 44 views
1

我有浏览器扩展打开一个iFrame并允许用户做东西,然后更新父页面上的值。跨越不同的域,并使用postMessage和receiveMessage,以便我可以跨域传递消息。这效果很好,我可以使用这些消息在父页面上的控件中设置某些值。我可以设置选择框的值,但我也需要通过jQuery交叉脚本postmessage后选择火灾更改事件

火选择box'es变化事件
$("#selectid").change(); 

这工作,如果从用户事件调用的页面上,而是从receiveMessage调用时,它只是不会触发更改事件。我相信这可能是为了防止交叉脚本攻击,但是由于我可以设置该值,所以我当然也应该能够调用change事件。任何人都可以确认这种行为和/或了解工作。

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

+1

这onchange事件处理程序使用jQuery绑定?也许你应该派遣事件,而不是:http://stackoverflow.com/a/22404414/1414562 –

+0

这样做的伎俩感谢 - 快速回应。 你可以阐明为什么dispatchEvent的作品,jQuery的变化或触发事件不? –

+0

使用jQuery触发onchange事件不会触发处理程序绑定使用例如addEventListener()javascript的方法 –

回答

2

你需要派遣onchange事件如果处理程序使用addEventListener() JavaScript的方法势必:

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

有一些可用于支持IE8,e.g polyfills:https://gist.github.com/jonathantneal/3748027