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

How to get element and html from window.open js function with jquery

本文关键字:获取 元素 html 函数 js jquery 何使用 window open      更新时间:2023-09-26

我正试图打开一个弹出窗口,如下所示:

$('#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:black。URL的实际获取被推迟,并在当前脚本块完成执行后开始。窗口的创建和引用资源的加载是异步完成的。

MDN-

如果你等待,你会得到这个错误:

不安全的JavaScript尝试访问具有URL的帧https://www.google.co.il/来自具有URL的帧http://fiddle.jshell.net/_display/.域、协议和端口必须匹配。

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

Fiddle

如果你打开一些"有效"的东西,它会正常工作。

工作演示