Javascript JQuery:使用JQuery选择iframe下的div

Javascript JQuery:使用JQuery选择iframe下的div,javascript,jquery,Javascript,Jquery,我正在尝试选择iframe中使用的div,但select指令始终返回空对象,请了解如何解决此问题: console.log($(this).contents().find('div')); jsiddle:Div是不可访问的,因为它不是DOM的一部分,而是iframe的一部分,iframe本身就由其他地方的不同DOM组成 为了获得iframe的div,需要获取iframe的所有内容,然后找到所需的div 下面的代码可以用来获取iframe内容,但它应该在同一个域中,否则将抛出跨域错误 $('i

我正在尝试选择iframe中使用的div,但select指令始终返回空对象,请了解如何解决此问题:

console.log($(this).contents().find('div'));

jsiddle:

Div是不可访问的,因为它不是DOM的一部分,而是
iframe
的一部分,iframe本身就由其他地方的不同DOM组成

为了获得iframe的div,需要获取iframe的所有内容,然后找到所需的div

下面的代码可以用来获取iframe内容,但它应该在同一个域中,否则将抛出跨域错误

$('iframe').contentWindow.document.body.innerHTML
或者,您可以在Javascript中使用跨文档消息传递,将消息发送到iFrame,并相应地响应iFrame

主页

 myIframe.contentWindow.postMessage('hello', '*');
iframe

window.onmessage = function(e){
    if (e.data == 'hello') {
        alert('It works!');
    }
};
有关更多详细信息,请参阅链接


还有一些插件可以更快地执行这类任务。

您无法访问其他域的DOM,因为

根据该政策,web浏览器允许包含在第一个文件中的脚本 web页访问第二个web页中的数据,但仅当两个web页 页面具有相同的来源

此策略可防止一个页面上的恶意脚本获取 通过另一网页的 文档对象模型


当然,您可以在服务器端执行GET/POST请求来实现这一点。另外,除非另一个域具有标头,否则不能从javascript(ajax)执行GET/POST请求

可能重复我如何获取iframe的内容?谢谢,因此如果它不在同一个域中,则无法操作iframe下的div?有一些方法可用于操作iframe内容,但需要管理跨iframe和html的消息发送和接收