js 推断 当页面无法回退时(history.go(-1)),关闭网页[通俗易懂]

js 推断 当页面无法回退时(history.go(-1)),关闭网页

大家好,又见面了,我是全栈君。

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

遇到的问题就是怎样推断 是否有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 );
        }
    }
}

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • css3选择器(一)

    css3选择器(一)直接开始正文。一、css3同级元素通用选择器【update20161228】选择器:E~F匹配任何在E元素之后的同级F元素Note:E~F选择器选中的是E元素后面同级元素中的全部F元素。例:

    2022年7月4日
    29
  • 微信开放平台网站应用扫码登陆[通俗易懂]

    微信开放平台网站应用扫码登陆[通俗易懂]cookie问题现象:接收微信回调数据后,后端存储cookie,未超出cookie有效期,但cookie在浏览器关闭页面重新打开后消失原因:在微信开放平台填写授权回调域名为xx.com,但在浏览器重新打开页面时,域名默认为www.xx.com,而www.xx.cn无法获取到xx.com的cookie信息,看起来就像cookie消失了一样解决办法:在微信开放平台填写授权回调域名为www….

    2022年6月7日
    28
  • Python的面试题

    Python的面试题 (1)怎么把一个字符串转换成整型?可以使用int函数如int('3')结果由字符串'3'变为整型3(2)python内建数据类型有哪些?int、bool、

    2022年7月6日
    15
  • kali linux破解wifi密码-超详细过程

    前期准备VMwareWorkstation虚拟机在虚拟机安装好kaillinunx系统无线网卡(芯片为3070或者1887L都支持Linux)一.打开终端,用airmon-ng命令查看如果出现无法访问…没有那个文件或目录解决办法:先在window主机上按win+r键然后输入services.msc回车找到VMwareUSBArbitrationService,双击…

    2022年4月8日
    1.5K
  • c#程序调试(如何使用debug调试)

    c#的Debug.WriteLine()和Trace.WriteLine()有没有例子?1.区别://输出跟踪信息Trace.WriteLine()将有关跟踪的信息写入Listeners集合中的跟踪侦听器在调试和release模式都输出!默认是写到输出窗口的,也可以指定写到指定文件,或系统日志中!//输出调试信息Debug.WriteLine()将有关调试的信息写入Listener

    2022年4月17日
    92
  • Typora+PicGo+Gitee+坚果云实现Win+Linux+手机端完美Markdown云笔记套件

    Typora+PicGo+Gitee+坚果云实现Win+Linux+手机端完美Markdown云笔记套件Typora+PicGo+Gitee+坚果云实现Win+Linux+手机端完美Markdown云笔记套件写在前面Typora是什么?PicGo是什么?为什么用Gitee?为什么用坚果云?1.安装Typora2.安装PicGo3.安装nodejs4.安装Gitee插件5.注册并配置Gitee6.配置PicGo的Gitee图床设置7.配置Typora的图床8.手机端查看写在前面关于笔记软件,多年…

    2022年5月12日
    55

发表回复

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

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