2014-05-14 43 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