我有一个需要访问父 dom 以生成打印页面的弹出窗口。打印页面的结构与父页面的结构明显不同,因此打印 css 无法解决问题。我基本上想弹出一个窗口,然后让该窗口从父级获取一些数据,甚至从弹出窗口访问 dom 并生成打印页面,而无需再次访问服务器。有什么想法我能做到这一点吗?
我使用标准
window.open()
弹出一个窗口。我需要这个解决方案不是黑客,而是与所有主要浏览器兼容的跨浏览器。
提前致谢!
我有一个需要访问父 dom 以生成打印页面的弹出窗口。打印页面的结构与父页面的结构明显不同,因此打印 css 无法解决问题。我基本上想弹出一个窗口,然后让该窗口从父级获取一些数据,甚至从弹出窗口访问 dom 并生成打印页面,而无需再次访问服务器。有什么想法我能做到这一点吗?
我使用标准
window.open()
弹出一个窗口。我需要这个解决方案不是黑客,而是与所有主要浏览器兼容的跨浏览器。
提前致谢!
Sajjan 的回答是一个开始,但最好在尝试访问它们之前确保您的对象可用:
var opener = window.opener;
if(opener) {
var oDom = opener.document;
var elem = oDom.getElementById("your element");
if (elem) {
var val = elem.value;
}
}
否则,您确实会冒开瓶器不响应您的初始调用,并且您无法从中获取元素的风险。
作为 jQuery,我认为(基于一个答案,这里:如何使用 jquery 访问父窗口对象?):
var opener = window.opener;
if(opener) {
var elem = opener.$("#elementId");
if (elem) {
var val = elem.val(); // I forgot we're dealing with a jQuery obj at this point
}
}
window.opener.document.getElementById("你的元素").value
parent.document 在我的情况下有所帮助。
var elem = parent.document.getElementById("overlay_modal");
if (elem) {
alert('setting attribute');
elem.setAttribute("onclick", "Windows.close('2', event);");
}