从任何地方关闭javascript-pop -window
Close javascript-popup-window from anywhere
我正在尝试建立一个可以从任何地方关闭的弹出窗口。
在主页上,您可以选择打开它。在浏览主页的任何时候,用户都应该能够再次关闭它。
我发现这个基本的pop-control:
function popuponclick()
{
my_window = window.open("", "mywindow","status=1,width=350,height=150");
}
function closepopup()
{
my_window.close ();
}
问题是,一旦您离开打开弹出窗口的页面,该函数就会失去连接,弹出窗口将不再关闭。
是否有办法解决和关闭这个特定的弹出页面?
根据实际问题,我提出了三种解决方案。
1) closepopup()在其他页面不起作用
如果你需要关闭从页B弹出,当它从页A打开,下面的代码将允许你从页B获得一个对弹出的引用并关闭它。参考:查找window.open
打开的窗口PageA.html
<script>
function popuponclick()
{
my_window = window.open("http://google.com", "mywindow","status=1,width=350,height=150");
}
function closepopup()
{
my_window.close ();
}
</script>
<a href="javascript:popuponclick()">Open window...</a></br>
<a href="PageB.html">Go to Page B</a>
</body>
</html>
PageB.html
<html>
<body>
<script>
function closepopup()
{
var popupPlayer= window.open('', 'mywindow', 'status=1,width=350,height=150') ;
popupPlayer.focus();
popupPlayer.close();
}
</script>
<a href="javascript:closepopup()">Close window...</a></br>
</body>
</html>
2) closepopup()在打开窗口的同一页面上不起作用
需要一个对my_window的全局引用,所以你需要像这样修改代码:
var my_window; //global reference here
function popuponclick()
{
my_window = window.open("", "mywindow","status=1,width=350,height=150");
}
function closepopup()
{
my_window.close ();
}
3)使用帧
的最后第三种解决方案你把你的页面分成1个帧(一个是100%)和另一个是0%。
在父框架中添加窗口打开/关闭代码。然后通过跨框架javascript命令调用窗口控制代码。
Frames HTML contains Javascript
<html>
<head>
<title>My example</title>
<script>
var my_window;
function popuponclick()
{
my_window = window.open("", "mywindow","status=1,width=350,height=150");
}
function closepopup()
{
my_window.close ();
}
</script>
</head>
<frameset cols="100%,0%">
<frame src="frame.html"/>
<frame/>
</frameset>
</html>
内部框架(Frame .html) -调用父Javascript
<html>
<body>
<a href="javascript:parent.popuponclick()"> Open Window </a><br/>
<a href="javascript:parent.closepopup()"> Close Window </a><br/>
<a href="javascript:location.href=location.href"> Refresh Frame (and try again)</a><br/>
</body>
</html>
如果您试图从iframe中关闭它…
top.my_window.close();
我认为你需要走出一个级别,因为该变量是在父窗口上设置的。
如果您只需要在您离开主页时自动关闭弹出窗口(如评论中建议的),您只需要做以下操作:
$(window).unload(closepopup);
相关文章:
- 正在寻找比$(document).ready慢的$(window).load的替代方案
- 直接下载文件,而不是从window.open(url)
- $window.ga在AngularJS事件中未定义
- 如何将PDF作为二进制文件传递到window.open()
- window.onload没有'无法在Android WebView中工作
- window.location替换并传递URL历史记录条目中的变量
- window.on.scroll事件未启动
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- 为什么window.open不打开一个以变量形式给出的链接
- window.location使用jquery mobile实现chrome跳转
- window.opener.document在ie中不起作用
- window.onpopstate不工作;当我导航回页面时,不会发生任何事情
- 未捕获的类型错误:topFrame.window.changeSelectedBarStyle不是函数,原因是什么
- 通过window.opener将弹出窗口中的值传递给父窗口
- $(document).height和$(window).heaght都返回相同的值-使用的是正确的doctype
- 如何在`window.open`之后执行回调
- Windows.Open 在 window.Location 工作时不起作用
- javascript window.open将无法在Chrome控制台上工作
- $(window).height() inside iframe?
- window.open根据动态内容自动调整高度和宽度