html退出页面时提示信息,js监听离开或刷新页面时的弹窗提示

一、看图

0818b9ca8b590ca3270a3433284dd417.png

二、使用场景。

填写表单时内容,当离开页面或者刷新的时候回丢失页面的内容,因此人性化的设计该有一个提示。所以这样的功能也就应用而生了。

三、思路。

1,页面内容改变。2,离开或刷新浏览器触发事件。

四、知识点。

1,如图需要填写内容的地方(即会发生改变的地方)包括input[radio],input[text],select,textarea几种。

2,触发事件选用onchange。

3,离开页面触发的事件选用onbeforeunload。

五、上代码了,就这么简单:

$(document).on("change","input,textarea,select",function(){

window.onbeforeunload = function(event) {

return "您编辑的信息尚未保存,您确定要离开吗?"//这里内容不会显示在提示框,为了增加语义化。

};

});

六、其他方法

可以保存到一个json里边,然后比较json是否相同,不过这样就比较复杂了。

提供一个demo,感兴趣的同学看一下效果。

var jsonObjA = {

"Name": "MyName",

"Company": "MyCompany",

"Infos": [{

"Age": "100"

},

{

"Box": [{

"Height": "100"

},

{

"Weight": "200"

}

]

}

],

"Address": "弗洛伦萨"

}

var jsonObjB = {

"Name": "MyName",

"Company": "MyCompany",

"Infos": [{

"Age": "100"

},

{

"Box": [{

"Height": "100"

},

{

"Weight": "200"

}

]

}

],

"Address": "达芬奇的故乡"

}

function isObj(object) {

return object && typeof(object) == 'object' && Object.prototype.toString.call(object).toLowerCase() == "[object object]";

}

function isArray(object) {

return object && typeof(object) == 'object' && object.constructor == Array;

}

function getLength(object) {

var count = 0;

for(var i in object) count++;

return count;

}

function Compare(objA, objB) {

if(!isObj(objA) || !isObj(objB)) return false; //判断类型是否正确

if(getLength(objA) != getLength(objB)) return false; //判断长度是否一致

return CompareObj(objA, objB, true); //默认为true

}

function CompareObj(objA, objB, flag) {

for(var key in objA) {

if(!flag) //跳出整个循环

break;

if(!objB.hasOwnProperty(key)) {

flag = false;

break;

}

if(!isArray(objA[key])) { //子级不是数组时,比较属性值

if(objB[key] != objA[key]) {

flag = false;

break;

}

} else {

if(!isArray(objB[key])) {

flag = false;

break;

}

var oA = objA[key],

oB = objB[key];

if(oA.length != oB.length) {

flag = false;

break;

}

for(var k in oA) {

if(!flag) //这里跳出循环是为了不让递归继续

break;

flag = CompareObj(oA[k], oB[k], flag);

}

}

}

return flag;

}

var result = Compare(jsonObjA, jsonObjB);

console.log(result); // true or false

七、遇到的问题。

提示框的样式不能改变,个人感觉不太美观,有方法改变的同学一定告诉我哈。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值