2012-04-25 39 views
2

所以我在Html5 PostMessage示例Html5 Demos和我創建了一個示例jsfiddle,看看我是否理解它是如何協同工作的。Html5 postMessage使用jQuery,但不是jQuery-postMessage腳本

該演示利用了document.getElementById(...),我認爲可以用jQuery選擇$("#...")更換,但我被困在因爲從jQuery返回的對象選擇不必contentWindow訪問,同時document.getElementById(...)一樣。

document.getElementById("frame1").contentWindow.postMessage("Hello from another domain", "http://dl.dropbox.com"); // works 

$("#frame1").contentWindow.postMessage("Hello from another domain", "http://dl.dropbox.com"); // no dice 

我不是完全的jQuery深諳知道的許多方法來調用的結果從選擇對象要回的結果我就從document.getElementById(...)看到。

回答

5
$("#frame1") // This a jQuery object that encapsulate the DOM element. 
$("#frame1")[0] // this is the DOM element. 
//Or 
$("#frame1").get(0) // this is the DOM element. 

全碼:

$("#frame1")[0].contentWindow.postMessage("Hello from another domain", "http://dl.dropbox.com"); // DICE! 

Updated Fiddle

但我覺得彆扭使用jQuery通過id選擇然後提取的DOM元素出來,而不是使用jQuery的。 document.getElementById有什麼問題?那15個額外的字符?

+0

沒有特別的。我只是想弄清楚爲什麼我從jQuery獲得的結果與document.getElementById(...)不匹配。 – ShelbyZ 2012-04-25 20:38:42

+0

@ShelbyZ。因爲'$()'構造jQuery對象並且不檢索DOM元素,比如'document.getElementById' – gdoron 2012-04-25 20:40:14

+0

我覺得我的jQuery體驗大部分是黑客直到它的工作,而不是學習如何確切返回數據格式。現在它更有意義。 – ShelbyZ 2012-04-25 20:41:27