后退方法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,可达到预期效果

JavaScript页面后退或关闭相关推荐

  1. javascript页面后退前进刷新示例

    一.页面刷新示例 为了及时反映站点数据的变化,通常需要页面进行自动刷新:可以将刷新结果指向当前页面,也可以转换到指定页面.重点是meta元素,其属性"HTTP-EQUIV"设置为& ...

  2. php脚本判断页面刷新,javascript判断网页是关闭还是刷新

    原理就是通过离开页面行为时间onunload触发时间去检测此时的浏览器的窗口大小,根据大小由此判断用户是刷新,跳转或是关闭行为程序 代码如下 window.onunload = function(){ ...

  3. js捕捉IE窗口失去焦点事件,判断离开页面刷新或关闭的方法

    js捕捉IE窗口失去焦点事件,判断离开页面刷新或关闭的方法 javascript如何捕捉IE窗口失去焦点事件 window.onblur = function(e) { //you code }; 弹 ...

  4. html自动关闭当前页面,html如何关闭当前页面

    html关闭当前页面的方法:1.自定义提示关闭:2.在即将离开当前页面时,用户点浏览器的最大化最小化关闭按钮中的关闭按钮onbeforeunload事件. 本教程操作环境:windows7系统.htm ...

  5. 梅花雨做的一个日历 Javascript 页面脚本控件

    梅花雨做的一个日历 Javascript 页面脚本控件 比较好用,背景颜色可以自己用替换的形式改 //------------------------------------------------- ...

  6. html5新特性:利用history的pushState等方法来解决使用ajax导致页面后退和前进的问题

    html5新特性:利用history的pushState等方法来解决使用ajax导致页面后退和前进的问题 参考文章: (1)html5新特性:利用history的pushState等方法来解决使用aj ...

  7. 点击页面空白处就关闭某个层是怎么做到的

    如果用document事件的话,那点那个层里面也会触发,这不是想要的结果,怎么能做到点击除了那个层内部的区域外的任何地方,就触发事件 --------------------------------- ...

  8. readonly时禁用删除键,readonly按删除键后页面后退解决方案

    readonly时禁用删除键, readonly按删除键后页面后退解决方案 >>>>>>>>>>>>>>>&g ...

  9. vue 禁止显示本网页由、、_【VUE/JS】vue和js禁止浏览器页面后退

    1.vue 禁止浏览器后退 需求是:需要某个路由不能通过浏览器返回,同时不影响相互之间的切换 整理一下解决方法 和 使用方法: 1.在路由配置中给这个路由添加meta信息,比如: { path: '/ ...

最新文章

  1. 5分钟理解一致性哈希算法
  2. luoguSP1805,POJ2559-Largest Rectangle in a Histogram【单调栈】
  3. C#LeetCode刷题之#110-平衡二叉树(Balanced Binary Tree)
  4. 你们网贷逾期最长多少时间,你们怎么处理的
  5. seo代码优化工具_谁是「南京SEO」搜索引擎网站关键词排名优化专家
  6. 精雕道路怎么遍弧形_沥青冷补料多少钱一吨?怎么施工?效果怎么样?
  7. content='width=device-width, initial-scale=1.0'的解释
  8. numpy手写NLP模型(四)———— RNN
  9. Python 实现超级玛丽游戏
  10. bde oracle 商友的流程_BDE动态连接Oracle数据库
  11. python爬虫进阶案例,Python进阶(二十)-Python爬虫实例讲解
  12. JDK8新特性Stream流使用详解
  13. A Survey of Zero-Shot Learning: Settings, Methods, and Applications [reading notes]
  14. Accuracy and precision 意义
  15. 紫微斗数:命主和身主
  16. Spyder: You have missing dependencies! #Mandatory: rtree>=0.9.7
  17. 家居家具行业如何做好舆情风险防范?
  18. 基于用户画像的精准营销决策建议
  19. Python模糊控制库使用(基本操作与仿真结果3D显示)
  20. arduino的C语言基础

热门文章

  1. 《禅者的初心》读书笔记
  2. 用chatgpt跟女友聊天
  3. python用泰勒级数计算圆周率_利用泰勒级数加速计算
  4. IPV4优先于IPV6设置
  5. ble传输是断续的吗
  6. 斯坦福UE4 + C++课程学习记录 22:击败动画
  7. 免费的大数据学习资料及学习路线、这一份就足够了
  8. 三种方法详解斐波那契数列
  9. 新品牌进入市场的小红书推广方案上海氖天
  10. [BugFix] The font Arial cannot be found