js判断当页面无法回退时关闭网页否则就history.go(-1)


Posted in Javascript onAugust 07, 2014

在做一个Web项目时遇到一个需求,当页面没有前驱历史记录时(就是当前为新弹出的页面,没法做goback操作即history.go(-1)),点击返回按钮时直接关闭页面,否则就退回到前一页。

遇到的问题就是如何判断 是否有history可以回退,这个非常麻烦,因为没有这样的函数直接能获取到,只能通过history.length这个变量做变通的处理,但是对于IE,和非IE的length的返回值不同,ie: history.length=0, 非IE的为1,因此写了一个函数实现前面所需求的这个功能。分享给大家。

/** 
* 返回前一页(或关闭本页面) 
* <li>如果没有前一页历史,则直接关闭当前页面</li> 
*/ 
function goBack(){ 
if ((navigator.userAgent.indexOf('MSIE') >= 0) && (navigator.userAgent.indexOf('Opera') < 0)){ // IE 
if(history.length > 0){ 
window.history.go( -1 ); 
}else{ 
window.opener=null;window.close(); 
} 
}else{ //非IE浏览器 
if (navigator.userAgent.indexOf('Firefox') >= 0 || 
navigator.userAgent.indexOf('Opera') >= 0 || 
navigator.userAgent.indexOf('Safari') >= 0 || 
navigator.userAgent.indexOf('Chrome') >= 0 || 
navigator.userAgent.indexOf('WebKit') >= 0){ 

if(window.history.length > 1){ 
window.history.go( -1 ); 
}else{ 
window.opener=null;window.close(); 
} 
}else{ //未知的浏览器 
window.history.go( -1 ); 
} 
} 
}
Javascript 相关文章推荐
异步动态加载JS并运行(示例代码)
Dec 13 Javascript
js关于字符长度限制的问题示例探讨
Jan 24 Javascript
JavaScript之Object类型介绍
Apr 01 Javascript
jQuery插件jRumble实现网页元素抖动
Jun 05 Javascript
4种JavaScript实现简单tab选项卡切换的方法
Jan 06 Javascript
详解ES6通过WeakMap解决内存泄漏问题
Mar 09 Javascript
浅谈Angular HttpClient简单入门
May 04 Javascript
小程序实现展开/收起的效果示例
Sep 22 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
Jan 15 Javascript
vue中移动端调取本地的复制的文本方式
Jul 18 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
Jul 26 Javascript
详解Vue.js3.0 组件是如何渲染为DOM的
Nov 10 Javascript
js和jquery设置disabled属性为true使按钮失效
Aug 07 #Javascript
javascript中为某个元素指定事件的三种方式
Aug 07 #Javascript
谷歌地图打不开的解决办法
Aug 07 #Javascript
JavaScript验证18位身份证号码最后一位正确性的实现代码
Aug 07 #Javascript
jquery bind(click)传参让列表中每行绑定一个事件
Aug 06 #Javascript
jQuery html()方法使用不了无法显示内容的问题
Aug 06 #Javascript
JQuery设置获取下拉菜单某个选项的值(比较全)
Aug 05 #Javascript
You might like
PHP foreach循环使用详解与实例代码
2010/05/08 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
laravel5.2表单验证,并显示错误信息的实例
2019/09/29 PHP
浅谈PHP array_search 和 in_array 函数效率问题
2019/10/15 PHP
你的编程语言可以这样做吗?
2006/09/07 Javascript
List Installed Software Features
2007/06/11 Javascript
基于jquery的无缝循环新闻列表插件
2011/03/07 Javascript
onkeyup,onkeydown和onkeypress的区别介绍
2013/10/21 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
简单谈谈gulp-changed插件
2017/02/21 Javascript
浅析Angular2子模块以及异步加载
2017/04/24 Javascript
JavaScript正则表达式简单实用实例
2017/06/23 Javascript
详解vue 数据传递的方法
2018/04/19 Javascript
js运算符的一些特殊用法
2018/07/29 Javascript
VUE组件中的 Drawer 抽屉实现代码
2019/08/06 Javascript
JS常见内存泄漏及解决方案解析
2020/05/30 Javascript
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
2020/08/10 Javascript
Vue select 绑定动态变量的实例讲解
2020/10/22 Javascript
原生js实现简单轮播图
2020/10/26 Javascript
Django csrf 验证问题的实现
2018/10/09 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
2019/08/09 Python
简单了解python列表和元组的区别
2020/05/14 Python
简单的Python人脸识别系统
2020/07/14 Python
python3中TQDM库安装及使用详解
2020/11/18 Python
CSS3动画之流彩文字效果+图片模糊效果+边框伸展效果实现代码合集
2017/08/18 HTML / CSS
使用CSS实现阅读进度条
2017/02/27 HTML / CSS
美国家具网站:Cymax
2016/09/17 全球购物
域名注册、建站工具、网页主机、SSL证书:Dynadot
2017/01/06 全球购物
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
雷曼兄弟的五金店:Lehman’s Hardware Store
2019/04/10 全球购物
奥地利体育网上商店:Gigasport
2019/10/09 全球购物
办理退休介绍信
2014/01/09 职场文书
Django集成富文本编辑器summernote的实现步骤
2021/05/31 Python
解决SpringBoot跨域的三种方式
2021/06/26 Java/Android
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android
Nginx如何配置多个服务域名解析共用80端口详解
2022/09/23 Servers