2012-08-23 52 views
1

我一直試圖讓YouTube JS API的stopVideo()方法現在工作一段時間。大家都說這就像在iframe元素上調用它一樣簡單,但我能夠使其工作的唯一方法是通過名爲postMessage()的方法,我在別人的Stackoverflow帖子中找到了該方法。YouTube API需要postMessage()。爲什麼?

代碼:

$('iframe').postMessage('{"event":"command","func":"stopVideo","args":""}', '*') 

是什麼最終得到了它爲我工作。但是,我仍然不明白我在做什麼。任何人都可以向我解釋這個嗎?

回答

3

From MDN postMessage

window.postMessage爲安全地使跨源 通信的方法。通常情況下,當且僅當執行它們的頁面在具有相同協議(通常都是http),端口號 (80是http的默認值)的位置處爲 時,才允許不同頁面上的腳本彼此訪問 ,主機(由兩個頁面設置爲相同的值的模塊document.domain )。 window.postMessage 提供了一種受控的機制來繞過這種限制在 方式,這是正確使用時是安全的。

所以它的作用是讓你繞過same origin policy並與其他域進行通話。只有問題,並非所有的瀏覽器都支持它。

+0

有趣。有一點需要注意的是,最新的YouTube嵌入代碼使用iframe。 – dana

+0

謝謝。在我看來,只有IE 7及以下版本不支持它。這對我來說足夠了!謝謝! –