[英]Javascript window.opener in iframe
我正在尝试使用弹出窗口的脚本文件中的window.opener引用访问弹出窗口的打开器。
考虑以下popup.html中包含的脚本:
http://localhost/test/popup.html
<script> alert(window.opener.test_dom); </script>
当不涉及iframe时,此方法有效,我们将从popup.html中看到警报消息:
http://localhost/test/base.html
<html> ... <script> var test_dom = 'test_dom'; var popup = window.open("http://localhost/test/popup.html",... </script> </html>
当有3个文件时,就会出现问题。.带有iframe的容器页面会从该iframe中启动弹出窗口。 当弹出窗口出现时,这不会显示警报消息:
C:\\ TestContainer \\ container.html
<html> ... <iframe src="http://localhost/test/base.html"> <script> var test_dom = 'test_dom'; var popup = window.open("http://localhost/test/popup.html",... </script> <iframe> </html>
也许这是安全限制? AFAIK base.html和popup.html在同一域中,因此我认为没有理由。 还有其他方法可以通过popup.html脚本中的其他DOM属性访问打开器吗? 我已经坚持了一天。
除了对opener的引用,其他所有内容似乎都可以在所有脚本中正常工作。
使用IE 11。
任何帮助表示赞赏!
iframe
没有window.opener
。 它具有window.parent
(嵌入iframe的窗口)。 如果父级确实是顶级窗口,则该窗口可能具有window.opener
如果它是实际的弹出窗口)。
您尚未显示特定的HTML情况,但是也许从iframe中想要的是这样的:
window.parent.opener
我想出了解决此问题的方法。 在我的情况下,弹出窗口非常简单,因此我所做的就是将其html嵌入到基础页面的隐藏div中。 然后,当需要弹出窗口时,我只是使窗口显示隐藏的html的内容。
不幸的是,完成此操作后,不会自动设置在弹出窗口中找到的按钮的事件处理,因此一旦显示窗口,我就必须使用addEventListener手动设置它们(即,将'onclick'事件放入html标签中不会工作)。
var popup = window.open("", "_blank", "..", false);
var popup_html = window.document.getElementById('hidden_popup_contents').innerHTML;
popup.document.writeln(popup_html);
popup.document.getElementById('popup_button').addEventListener('click', SomeFunction);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.