如果你的 iframe 来自不同的域,就像你的小提琴一样,那么你的 JavaScript 代码根本无法访问它的内容,对不起!
正如@Max 指出的那样,您可以使用postMessage()
URL 片段 hack 与不同域中的 iframe 进行通信,如果该 iframe 中有代码来处理来自该端的通信。
使用来自 tumblr.com 的 iframe,您可以查看他们的文档,看看它是否谈到在 iframe 中使用此页面并跨域障碍与其通信。
现在,如果您正在谈论与您的页面来自同一域的 iframe,那么这很容易。给定一个iframe
名为 的变量中的元素myframe
,您可以使用myframe.contentWindow
它来获取它的window
对象并myframe.contentWindow.document
获取它的document
对象。从那里你可以做你需要的事情。例如:
var $myframe = $('#myframe'),
myframe = $myframe[0],
myframewin = myframe.contentWindow,
myframedoc = myframewin.document;
$(myframedoc).find('a').on( 'click', function() {
alert( 'Clicked!' );
});
在主页中使用 jQuery 的副本来访问 iframe 中的内容时,您可能仍然会遇到一些麻烦,但使用最新版本应该会有更好的运气。在最坏的情况下,您可以为此使用本机 DOM 事件和方法,但 jQuery 确实在这个更新的 fiddle中工作。
这个小提琴使用 document.write 将内容放入 iframe 中,但访问框架的 jQuery 代码将是相同的。当然,要注意的一件事是,当您尝试访问 iframe 时,它是否已完全加载。
我认为您可以在包含页面中的元素上侦听load
事件iframe
,但最坏的情况是您可以使用setTimeout()
或setInterval()
等待您正在寻找的元素可用。