Chrome下window.alert下禁止此页再显示此对话框问题

写在前面

最近快过年了,然后大大小小的领导都回家了,那总归不会让我们这些小打杂的在这玩着吧,好吧。

领导在去回家之前先没事也给找出点事情来让我们这些小打杂的做,事情就是原先在chrome不兼容的特性现在你把它做兼容吧。

这一句话说的好轻巧呀,这可要我的老命吧。就拿一个小问题来举例说明吧

问题的根由

测试人员测出来的问题是

我细细一看代码,原来代码是这样写的(这是asp的代码)。

        Response.Write "    <script language="" javascript"">"
        Response.Write "window.alert(‘" & strMsg & "‘);window.location.href = ‘CorpAirwaysAuditList.asp‘;"
        Response.Write "</script>"

我就搞不清楚明明就只有一次window.alert,但是chrome下面就会出现那个“禁止此页再显示对话框”。显示出这个“禁止此页再显示对话框”,显示这个也不是什么问题,关键是测试的手痒偏偏就把那处复选框给点了,结果后续这个页面的操作都不再弹框了,也许在我们开发人员看来,这个根本就不是什么问题,但是呢,测试偏偏就说这就是不兼容的bug,你必须得改好。

好吧,总归身在其位得谋其职吧,乖乖的干活吧

那我就只想到了用插件的形式来替换window.alert

用插件来替换window.alert

大家想想明明一个javascript内置的函数,现在换成用插件来实现得多麻烦,我得把相关的css和js都引用吧,我得重写相关的方法吧,于是乎变成如下代码了

<link href="css/dialogDefault.css" rel="stylesheet" />
<script src="js/artDialog.js" type="text/javascript"></script>
    function myAlertDialog(msg) {
        art.dialog({
            title: ‘友情提示‘,
            content: msg,
            width: ‘20em‘,
            button: [{
                name: ‘确定‘,
                callback: function () {
                    window.location.href = ‘CorpAirwaysAuditList.asp‘;
                },
                focus: true
            }]
        });
    }
    Response.Write "<script language=""javascript"">"

    Response.Write "myAlertDialog(‘" & strMsg & "‘);   "
    Response.Write "</script>"

还好artDialog有回调函数,因为window.alert是那种阻塞进程的,所以只有把后续的代码放到回调函数里面才不会出现修改代码引发的新问题。

同事mm帮忙想的绝招

我有位大领导是个心地善良的主,也很平易近人,这不我遇到问题了,找他帮忙了。他叫他手一个前端高手的mm想了一个法子。我应该怎么描述一下呢,举例子说。原先你的代码是这样的

        function myDemo() {
            alert(‘ddd‘);
            alert(‘ddd‘);
            alert(‘ddd‘);
            alert(‘ddd‘);
            alert(‘ddd‘);
        }
        myDemo();

然后我那个前端高手的漂亮mm想的方法是这样的

        (function () {
            window.newAlert = window.alert; var timer;
            window.alert = function (txt) {
                clearTimeout(timer);
                timer = setTimeout(function () { newAlert(txt) }, 100)
            };
        })();

这样的话似乎解决了我的问题,可是原先是可以弹出5次ddd,但是加了漂亮mm的代码之后就只弹出一次ddd,后续的对话框怎么着也出不来了。

最后的话

上面写了一堆费话,事实上保持浏览器兼容是势在必行的事情(刚刚说是领导故意找的事情让我做只是哗众取宠的话而已)。

只求有大神能够帮忙想想解决方法,有没有更好的方式来实现(事实上作为开发人员来说,我到现在都不觉得这是个bug)

如果有哪位大神知道最佳方案,还请不吝赐教哦

如果觉得这篇文章还算用心,请劳驾点右下角的推荐。小女子在此谢过了。^_^

时间: 2024-11-29 09:22:48

Chrome下window.alert下禁止此页再显示此对话框问题的相关文章

vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件

vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件/库 一提到移动端的下拉刷新上拉翻页,你可能就会想到iScroll插件,没错iScroll是一个高性能,资源占用少,无依赖,多平台的javascript滚动插件.iScroll不仅仅是 滚动.它可以处理任何需要与用户进行移动交互的元素.在你的项目中包含仅仅4kb大小的iScroll,你的项目便拥有了滚动,缩放,平移,无限滚动,视差滚动,旋转功能.iScroll的强大毋庸置疑,本人也非常欢迎大家使用iScr

window环境下将solr6.3部署到tomcat中

1.我下载的solr是6.3版本的,需要jdk1.8及以上,tomcat8 JDK1.8的下载地址:http://www.Oracle.com/technetwork/Java/javase/downloads/jdk8-downloads-2133151.html tomcat8的下载地址:http://tomcat.apache.org/download-80.cgi 注意:Window环境下下载的都是zip包 2.安装jdk,这里就省略了,参考其他文章 3.solr6.3发布版本本身就有一

在Window平台下安装xgboost的Python版本

原文:http://blog.csdn.net/pengyulong/article/details/50515916 原文修改了两个地方才安装成功,第3步可以不用,第2步重新生成所有的就行了. 第4步,有“xgboost_wrapper.dll”以后,将该文件复制到/python-package/xgboost/中,继续后面步骤就可以了. 特别注意如果你的python是32位的,第二步就不要选择x64,而是选择win32.对应的文件也不是在x64下了.一定可以运行. xgboost的全称是eX

[转载]window系统下TCP参数优化

注:此文转载自红黑联盟,最近服务器遇到周期性down掉的问题,拖了两三周请教了前辈之后才知道无关应用和数据库的事情,是tcp设置的问题.从网上找个这篇文章,解释的很不错.有兴趣请至红黑联盟翻阅原文. TCP连接的状态与关闭方式及其对Server与Client的影响 http://www.2cto.com/net/201304/206071.html 通常会采用修改注册表的方式改进Windows的系统参数.下面将为大家介绍Windows系统下的TCP参数优化方式,适用于Windows 2003.W

shell文件管理jenkins构建过程---window环境下报错:找不到shell文件

window环境下报错:找不到shell文件.查看jenkins本地文件,可以查看到shell文件: 检查job配置: 发现使用的是Execute shell; 这个项目只能在liunx下使用,在window环境只能使用 Execute Windows batch command

jQuery下 $(window)和$(document)的width、height方法值得区别

在没有垂直滚动条的时候 $(window)和$(document) 的宽高一致在有垂直滚动条的时候 $(window)和$(document) 的宽度一致 window的高度为可视区域的高度,document为整个html文档的高度(包含margin padding border就是总的) 在没有水平滚动条的时候 $(window)和$(document) 的宽高一致在有水平滚动条的时候 $(window)和$(document) 的高度一致window的宽度为可视区域的宽度,document

window环境下glog的安装

window环境下glog的安装 分类: c++2014-09-23 14:12 32人阅读 评论(0) 收藏 举报 下载后解压,利用Visual Studio打开google-glog.sln.生成解决方案 安装: 方法一:将libglog.dll和libglog.lib文件,拷贝文件到你的工程文件夹下,并拷贝src\windows\下的glog目录到你的工程文件下. 方法二:你也可以将这两个文件拷贝到系统文件夹下,实现全局访问. 1. 将libglog.dll拷贝到C:\Program Fi

window作用域下,a = 1和var a = 1&quot;

a = 1相当于window.a = 1,是动态地为window添加一个成员: var a = 1是在当前作用域(也就是window)下声明一个a,这个声明是在整个作用域内都有效的. 换句话说,其实区别就在于var a = 1比a = 1多了一个声明的行为. var a = 1 声明的话: console.log(a);----undefinedvar a=1;------已经声明,但是顺序问题 a=1:: 例子: console.log(a);----a is not defined a=1;

window 环境下vb &nbsp; 磁盘空间监控脚本!

Set objFSO = CreateObject ("Scripting.FileSystemObject") Set colDrives = objFSO.Drives Dim msg For Each objDrive in colDrives If objDrive.IsReady and  objDrive.DriveLetter ="D" and  int(objDrive.FreeSpace/(1024*1024*1024))<=400 Then