JavaScript页面后退或关闭

JavaScript页面后退或关闭后退方法history.go(-1)如果无法后退时,会返回一个undefined,利用这一点来判断是否可以后退,不能后退时执行window.close();if(!history.go(-1)){window.close();}window.close();对于火狐浏览器经常会无法关闭。因为火狐浏览器只能关闭通过JS新建的窗口,即有target=”_blank”属性的标签,或者

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

后退方法history.go(-1)如果无法后退时,会返回一个undefined,利用这一点来判断是否可以后退,不能后退时执行window.close();

if (!history.go(-1)) {
    window.close();
}

window.close();对于火狐浏览器经常会无法关闭。因为火狐浏览器只能关闭通过JS新建的窗口,即有target="_blank"属性的<a>标签,或者window.open("","_blank")方式打开的页面。
对此通常采用跳转到about:blank空白页面来实现关闭。

兼容性后退或关闭

if (!history.go(-1)) {
    if (getBrowserType() == "Firefox") {
        window.open("about:blank","_self").close();
    } else {
        window.close();
    }
}

window.open("about:blank","_self").close();用来处理火狐浏览器跳转空白页,及在页面使用JS代码打开的情况下做到关闭页面。

另附getBrowserType()方法
详见 使用userAgent区分浏览器版本

//判断浏览器类型
function getBrowserType() { 
   
    var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串

    if (userAgent.indexOf("Firefox") > -1) {
        return "Firefox";
    } else if (userAgent.indexOf("Edge") > -1) {
        return "Edge";
    } else if (userAgent.indexOf("Opera") > -1 || userAgent.indexOf("OPR") > -1) {
        return "Opera";
    } else if (userAgent.indexOf("Chrome") > -1) {
        return "Chrome";
    } else if (userAgent.indexOf("Safari") > -1) {
        return "Safari";
    } else if (userAgent.indexOf("MSIE") > -1 || userAgent.indexOf("Trident") > -1) {
        return "IE";
    }
}

代码测试于Firefox 54,Chrome 59,Edge 15,Opera 46,Safari 534,IE 11,可达到预期效果

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164163.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月25日 下午12:00
下一篇 2022年7月25日 下午12:00


相关推荐

  • Android studio断点调试

    Android studio断点调试有人说Android的调试是最坑的,那我只能说是你不会用而已,我可以说AndroidStudio的调试是我见过最棒的。下面会将debug模式和Attach模式的断点调试好了开始写一个简单的调试程序,我们先来一个for循环设置断点(点击红点位置添加或取消断点)点击debug模式运行查看调试面板一、简单调试1.stepover:…

    2022年5月21日
    223
  • Python学习—面向对象学习下

    Python学习—面向对象学习下

    2021年6月12日
    100
  • Integer对象范围

    Integer对象范围Integerinteg newInteger 10 Integerinteg newInteger 10 System out println integer integer1 falseInteger 127 Integerb 127 System out println a b true Integera1 128

    2026年3月18日
    2
  • 深度学习中模型计算量(FLOPs)和参数量(Params)的理解以及四种计算方法总结

    深度学习中模型计算量(FLOPs)和参数量(Params)的理解以及四种计算方法总结深度学习中模型参数量和计算量的理解与计算 首先什么是计算量 什么是参数量 如何计算 参数量 计算量 对于换算计算量 对于各个经典网络 计算量与参数量对于硬件要求 6 计算量 FLOPs 和参数量 Params 第一步 安装模块第二步 计算参考资料接下来要分别概述以下内容 首先什么是参数量 什么是计算量 如何计算 参数量 如何统计 计算量 换算参数量 把他换算成我们常用的单位 比如 mb 对于各个经典网络 论述他们是计算量大还是参数两 有什么好处 计算量 参数量分别对显存 芯

    2026年3月19日
    2
  • TiDB 在银行核心金融领域的研究与两地三中心实践

    TiDB 在银行核心金融领域的研究与两地三中心实践作者介绍:于振华,北京银行软件开发部资深架构师,长期从事银行核心系统研发、规划,参与过多个核心信息系统建设工作,包括一、二代支付系统、第四代银行核心系统建设、分布式核心系统建设等企业级项目工作。当前主要研发方向集中在构建先进、高效、面向OLTP的银行交易系统,提升银行信息系统服务能力。本文整理自于振华老师在TiDBDevCon2019上的演讲实录,演讲主题为《TiDB在…

    2022年6月17日
    85
  • matlab 画圆

    matlab 画圆一、绘制圆点plot(1,2,’ro’)二、绘制圆形1、空心圆:11、plot>>aplha=0:pi/40:2*pi;>>r=2;>>x=r*cos(aplha);>>y=r*sin(aplha);>>plot(x,y,’-‘);>>axisequal22、rectanglerectangle(‘position’,[0-3,0

    2022年6月19日
    75

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号