我想使用window.addEventListener("message",myOnmessageCallback,false)
接收來自我的window
本身的郵件。 (這是說我不想不必要地使myOnmessageCallback
函數容易從其他來源接收惡意消息(我認爲這可能是其他框架,瀏覽器Windows,選項卡,父級和內置頁框,對嗎?)安全使用window.postMessage,是「if(event.source!== window){return;}」好嗎?
所以我覺得,如果這避免不是我window
碰到任何物體本身。
function myOnmessageCallback(event) { if(event.orign !== window) { // I assume the message is from not this window here, therefore ignore it. return; } //do some useful stuff with the message received (only from window) }
這個問題似乎一個很好的方式,以減少myOnmessageCallback回調只是處理 信息通過網頁本身的window.postMessage()
送?
PS:對於那些想爲什麼我希望減少postMessage
onmessage
能力的人。我想有一種方法可以將某些東西放入Javascript執行隊列中,從而允許在兩者之間處理UI東西。我會用經典的window.setTimeout
,但是這個時間最短,我不想不必要地浪費時間。
「setTimeout()」實際上會變得明顯嗎? – jfriend00
@ jfriend00是的,我擔心這可能是一個問題,因爲頻率。我希望能夠讓腳本平滑(不會阻塞UI等),所以我必須推遲發佈腳本經常返回到Javascript執行隊列的內容。我希望有'window.setImmediate()'。 – humanityANDpeace
[polyfill setImmediate.js](https://github.com/NobleJS/setImmediate/blob/master/setImmediate.js)中的人似乎得出結論,僅僅檢查窗口是不夠的。他們使用一些Math.random()UUID類來確保。這更讓我懷疑...... – humanityANDpeace