兼容各版本浏览器的关闭事件window.close

本文介绍了一段JavaScript代码,用于清除浏览器顶部窗口并重新打开当前页面的实例。通过设置`top.window.opener=null;`来解除与父窗口的链接,使用`top.window.open`方法创建一个新的窗口实例,并通过`top.window.close()`关闭顶部窗口。

top.window.opener = null;

       top.window.open('','_self','');

       top.window.close();

解决安卓浏览器无法使用`window.close`方法关闭窗口问题,可从以下方面着手: ### 检查WebView设置 若在安卓WebView中遇到问题,需确保重写`WebChromeClient`的`onCreateWindow`方法。当调用`window.open`时,会回调该方法,可在此方法中通过新创建一个WebView来加载新的网页地址。若不重写,用同一个WebView加载新页面,调用`window.close`时,系统发现只有一个窗口,该方法会失效。示例代码如下: ```java webView.setWebChromeClient(new WebChromeClient() { @Override public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) { WebView newWebView = new WebView(view.getContext()); // 配置新的WebView newWebView.getSettings().setJavaScriptEnabled(true); WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; transport.setWebView(newWebView); resultMsg.sendToTarget(); return true; } }); ``` ### 浏览器兼容性问题 不同浏览器对`window.close`的支持存在差异。如在RTMP直播项目测试中,部分安卓浏览器可正常使用`window.close`,但IOS浏览器均无法使用,QQ和百度浏览器对`window.close`和RTMP推流的支持较好[^3]。若遇到兼容性问题,可尝试引导用户使用支持该功能的浏览器。 ### 网页代码逻辑检查 确保网页代码中`window.close`的调用逻辑正确,且在合适的时机调用。例如,在通过`window.open`打开新窗口后,再在新窗口中调用`window.close`关闭该窗口。示例代码如下: ```javascript // 在A页面打开B页面 var newWindow = window.open('B.html', '_blank'); // 在B页面选择完毕后关闭窗口并传值给A页面 function closeAndSendValue() { var selectedValue = 'some value'; window.opener.someFunction(selectedValue); window.close(); } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值