2

因此,我在Html5 Demos中搞乱了 Html5 PostMessage 示例,并创建了一个示例jsfiddle,看看我是否理解它是如何协同工作的。

该演示使用了document.getElementById(...)我认为可以用 jQuery 选择器替换的$("#..."),但我被卡住了,因为从 jQuery 选择器返回的对象无法访问contentWindowwhile 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(...).

4

1 回答 1

7
$("#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!

更新小提琴

但是我发现使用 jQuery 选择id然后从中提取 DOM 元素而不使用 jQuery 很尴尬。怎么了document.getElementById?那15个额外的字符?

于 2012-04-25T20:31:54.083 回答