搜索
javascript - 关于关闭的窗口时的数据比较
阿神
阿神 2017-04-10 15:46:12
[JavaScript讨论组]
var checkValue={};
checkValue.arr1=[];
checkValue.arr2=[];

function check(arr){
    var inputs=document.getElementsByTagName('input');
    var textArea=document.getElementsByTagName('textarea');
    for(var i= 0;i<inputs.length;i++){
        if(inputs[i].type==='text'){arr.push(inputs[i].value)}
        if(inputs[i].type==='radio' || inputs[i].type==='checkbox'){arr.push(inputs[i].checked)}
    }
    for(var i=0;i<textArea.length;i++){
        arr.push(textArea[i].innerHTML);
    }
}
//页面加载完毕,先获得所有表单数据值并储存在checkValue.arr1。
window.onload= function () {
    check(checkValue.arr1);
};
//页面离开时,获得所有表单数据值并储存在checkValue.arr2。再进行数据比较,判断是否修改了数据
window.onbeforeunload = function () {
    alert(1);
    check(checkValue.arr2);
    console.log(checkValue.arr2)
    if (checkValue.arr1.toString()!== checkValue.arr2.toString()) {
        return "changed"
    }
};


问题1.为什么window.onbeforeunload里面的   alert(1);不能执行
问题2 为什么改了textarea里面的数据之后,不弹窗,明明2次的数据不一样。
阿神
阿神

闭关修行中......

全部回复(2)
怪我咯

alert会被ignore, 这是标准规定的: https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload

迷茫

alert(1)控制台会报错(有木有大神讲解下原因,为什么不能被阻塞掉)

beforeunload默认会有一个弹出框,要显示必须有一些设置:
IE和FireFox下:将event.returnValue的值设为要显示的字符串
Chrome和Safari下:作为函数的返回值,即return '要显示的字符串';

但Firefox(版本39.0)下显示都是一样的

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号