如何使用jquery从window.open js函数中获取元素和html

我试图打开这样一个弹出窗口:

$('#btn').click(function () { var popup = window.open('mypage.php', '_blank', 'width=500,height=500'); var dom = popup.document.body; for (i in dom) { console.log(dom[i]); } }); 

现在我想要做的是从弹出窗口获取html,也可以使用window.opener(打开弹出窗口的页面)中的jQuery函数

PS。 在控制台中有很多东西打印但没有html源。

用这个来试试: http : //jsfiddle.net/JRqTy/

提前致谢。

尝试:

 var html = popup.document.documentElement.outerHTML 

编辑

窗口未立即加载。 假设你没有试图违反同源政策 ,这样的事情就会起作用:

 $('#btn').click(function() { var popup = window.open('[Your URL HERE]', '_blank', 'width=500,height=500'); popup.onload = function() { setTimeout(function(){ console.log(popup.document.documentElement.outerHTML) }, 2000); } });​ 

这是一个工作小提琴 。

注意:如果你同时控制父源和子源,你也可以让子调用传递它的html的父方法:

儿童窗口

 // Call when body is loaded function SendHtmlToParent() { window.opener.HtmlReceiver(document.outerHTML); } 

 function HtmlReceiver(html) { console.log(html); } 

等待…

请注意,远程URL不会立即加载。 当window.open()返回时,窗口始终包含about:blank。 实际获取URL是在当前脚本块完成执行后延迟并启动。 窗口创建和引用资源的加载是异步完成的。

MDN

如果你等了,你会收到这个错误:

不安全的JavaScript尝试使用URL http://fiddle.jshell.net/_display/访问带有URL https://www.google.co.il/的框架。 域,协议和端口必须匹配。

所以它可以用谷歌完成,除非你在那里工作……

小提琴

如果您打开“有效”的东西,它将正常工作。

工作演示