如何使用jquery从window.open js函数中获取元素和html
How to get element and html from window.open js function with jquery
我正试图打开一个弹出窗口,如下所示:
$('#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
如果你打开一些"有效"的东西,它会正常工作。
工作演示
相关文章:
- 如何在jQuery中获取元素的形式
- 通过id和class属性获取元素
- Javascript:Can't使用getElementById获取元素
- 使用jquery.html()获取元素本身的html
- 如何从iframe内部获取元素
- Javascript函数获取元素内容
- 使用模板后,使用Angular获取元素属性值
- 获取元素类名的部分
- 从JSON.parse获取元素
- 获取元素内部的缩写
- 在不引用文档的情况下使用AngularJS获取元素
- 如何获取元素's的title属性
- 使用Javascript,获取元素的方法是什么,基于打开和关闭标记之间的文本
- Javascript获取元素背景图像,但消除了“;url()”;
- Javascript:按类获取元素,但跳过某个类
- 当display:none时,getElementById()无法获取元素
- 我的ID获取元素不起作用
- 如何获取元素:使用javascript和CORS悬停背景
- 能够获取元素长度,但不能获取内部 HTML
- 如何使用jQuery在模板kendo UI中获取元素类