最新版的chrome无法用js关闭窗口,怎么解决

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-04
最新版的chrome无法用js关闭窗口,怎么解决

用self.close() 实在不行,用location.href重定向

遇到同样的问题,说明下:

Chrome自version37起已经默认停止了对window.showModalDialog的支持(可以修改注册表获得2015年5月之前,这种修改都有效)。
而对于从浏览器手动打开的非modal的窗口,在我意识到self close问题以来,Chrome都是不支持的——比如你给自己的page做了个logout的功能,点击之后想用你提到的self close方法关闭这个page,在Chrome上是关不掉的(但是你可以指定到另一个显示logout状态page,效果一样,logout也不一定就非要把那页关掉不是)。

既然它现在停止了支持showModalDialog,非modal窗口又不允许self close,那全面取缔从代码里self close也是情理之中迟早的事情吧。

解决方案:

对于解决showModalDialog问题,你可以自己用iframe之类的自己去模拟一个modal窗口,就像微博的转发窗口,点开之后用户将无法操作原页面的其他element。但是模拟的话,主要会遇到JS继续执行的问题,showModalDialog是会阻止原页面JS继续执行的,直到获取到新窗口的的返回结果,自己模拟这个行为的话,可以考虑call back方式,时间篇幅所限,不细说了哈,想取代showModalDialog都遇到这个问题,网上应该能搜到不少封装好的方法。

再说一点你需要自己写一个showModalDialog的原因,在Chrome宣布停止支持showModalDialog之后,FireFox也首次在文档和DebugTool里标明他们也会停止对showModalDialog的支持。暂时还没正式停止,大概是在等用户对Chrome这个操作的反应。
showModalDialog原来毕竟是IE独有的东西,一直没纳入W3C标准。Chrome对它的支持一直很差,比如从一个page打开showModalDialog,你还可以去其他page操作,也可以查看原page,甚至可以在原page上操作,只是这些操作只有在你关闭了showModalDialog之后才会起作用。
但是FireFox对showModalDialog的支持其实一直是很好的,基本跟IE上用起来基本无差,但是IE也在慢慢遵循W3C标准(特别是新出的IE11),FireFox抛弃showModalDialog也是早晚的事情。

最后,自己"画"的modal dialog完全在你的控制之下,可以暴露一个close接口来允许从子窗口里关闭父窗口打开的modal dialog。

(近期没少受此困扰,码了这么多,跟吐槽似的了……)

  遇到同样的问题,说明下:

  Chrome自version37起已经默认停止了对window.showModalDialog的支持(可以修改注册表获得2015年5月之前,这种修改都有效)。
  而对于从浏览器手动打开的非modal的窗口,在我意识到self close问题以来,Chrome都是不支持的——比如你给自己的page做了个logout的功能,点击之后想用你提到的self close方法关闭这个page,在Chrome上是关不掉的(但是你可以指定到另一个显示logout状态page,效果一样,logout也不一定就非要把那页关掉不是)。

  既然它现在停止了支持showModalDialog,非modal窗口又不允许self close,那全面取缔从代码里self close也是情理之中迟早的事情吧。

  解决方案:

  对于解决showModalDialog问题,你可以自己用iframe之类的自己去模拟一个modal窗口,就像微博的转发窗口,点开之后用户将无法操作原页面的其他element。但是模拟的话,主要会遇到JS继续执行的问题,showModalDialog是会阻止原页面JS继续执行的,直到获取到新窗口的的返回结果,自己模拟这个行为的话,可以考虑call back方式,时间篇幅所限,不细说了哈,想取代showModalDialog都遇到这个问题,网上应该能搜到不少封装好的方法。

  再说一点你需要自己写一个showModalDialog的原因,在Chrome宣布停止支持showModalDialog之后,FireFox也首次在文档和DebugTool里标明他们也会停止对showModalDialog的支持。暂时还没正式停止,大概是在等用户对Chrome这个操作的反应。
  showModalDialog原来毕竟是IE独有的东西,一直没纳入W3C标准。Chrome对它的支持一直很差,比如从一个page打开showModalDialog,你还可以去其他page操作,也可以查看原page,甚至可以在原page上操作,只是这些操作只有在你关闭了showModalDialog之后才会起作用。
  但是FireFox对showModalDialog的支持其实一直是很好的,基本跟IE上用起来基本无差,但是IE也在慢慢遵循W3C标准(特别是新出的IE11),FireFox抛弃showModalDialog也是早晚的事情。

  最后,自己"画"的modal dialog完全在你的控制之下,可以暴露一个close接口来允许从子窗口里关闭父窗口打开的modal dialog。

  (近期没少受此困扰,码了这么多,跟吐槽似的了……)

  • chrome浏览器老是跳出“当前页面的脚本发生错误”,请问chrome如何关闭...
    答:在设置里面的隐私设置里面设置。
  • JS捕获关闭浏览器事件之chrome浏览器真支持onbeforeunload事件吗...
    答:用普通的js无法实现在兼容监听IE,FF,Google等浏览器的关闭事件。 经过测试,用jq是可以实现兼容的,不过并不保证完全兼容,还需要你自己测试一下,只需一句简短的语句就可以至少兼容三大浏览器了:view plainprint? window.onbeforeunload = function() {return 'Sure to leave?';}; 但:chrome浏览器支...
  • chrome不支持js对象编程
    答:使用Chrome时遇到了不支持JavaScript对象编程的问题,那可能是因为你的浏览器设置或者你访问的网站有特定的安全策略限制了JavaScript的执行。你可以尝试以下步骤来解决问题:1、确认你的浏览器设置允许运行JavaScript。在Chrome中,你可以通过设置 -> 隐私和安全 -> 网站设置 -> JavaScript来检查和更改这个设置...
  • JS捕获关闭浏览器事件之chrome浏览器真支持onbeforeunload事件吗...
    答:不支持的,只能用onunload事件。另外,用onload表示等待dom加载完毕执行JS
  • chrome扩展浏览器关闭background.js还在执行
    答:chrome扩展浏览器关闭background.js还在执行方法如下:1、使Chrome提前启动,然后延迟关闭,以便使应用和扩展程序的使用寿命更长。2、将"background"添加到扩展程序manifest.json中列出的权限中,它将在Chrome打开之前和Chrome关闭之后继续运行。
  • JS捕获关闭浏览器事件之chrome浏览器真支持onbeforeunload事件吗...
    答:建议换个同样可以支持这个事件的浏览器。注意事项:1、不要试图用addEventListener或attachEvent绑定这两个事件,浏览器不兼容。2、应该在onbeforeunload 中询问,而将退出动作放在onunload 中,这样逻辑好清晰。3、如果是ajax请求放在onunload 事件中,需要同步执行ajax,否则是不能保证这个ajax请求会成功的。
  • 在Chrome中怎么用JS获取关闭选项卡事件?
    答:alert()方法不会被执行。可以这样window.onbeforeunload = function(e) { myfunction(); //alert不会执行的。console.log(1);//return 'Dialog text here.';};
  • chrome 无法运行js脚本,ie能运行,求大神解答
    答:亲,你的事件对象没有处理兼容性,只有IE浏览器才可以使用event,改成这样看看 .move_out{position:relative;cursor:hand;font-family: "华文行楷";} var x,y,z;var move_out=false;function move(ev){ var oEvent=ev||event;//处理事件对象兼容性// if(oEvent.button==move_out)//documen...
  • JS捕获关闭浏览器事件之chrome浏览器真支持onbeforeunload事件吗...
    答:= document.getElementById('div1');div1.innerHTML = '11111111111111111111111111111111111111111111111111111111';}4.运行代码,按 F5 刷新网页的一瞬间可以看到里面的文字变成 1111... 了,证明浏览器已经调用了 onbeforeunload事件;总结:虽然浏览器调用onbeforeunload事件,但是无法阻止浏览器关闭 ...
  • chrome缓存怎么关啊,js调试真烦
    答:你好 很高兴为您解答 如楼下所说 如果是pc你可以试试ctrl+shift+i,或者Settings->General->Disable cache (while DevTools is open)