2012-04-25 44 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