这个页面是怎么做到Chrome的关闭提示的?

申祷无 2013-09-03 09:48:59
刚才了解到Chrome和Opera是不支持onunload的,但是之后突然想起来这个网站在Chrome上是有关闭提示的:
http://www.compileonline.com/compile_cpp11_online.php(加载时间相对来说有点长)
但是这个网站的关闭提示只在Chrome和Firefox上是有效的,IE9,Opera都是无效的。但是我已经决定不兼容IE了,兼容IE对我来说就是个噩梦。鉴于Opera那么点可怜的市场占有率我也不想兼容Opera了。

这个网站上的代码太多了,我的技术又很烂,所以看不出哪部分是实现关闭提示的。所以请高手将关闭提示的那部分提取出来。另外这个方法能执行AJAX么?我想执行的是就算没有执行也不会造成很严重的后果的AJAX。
如果有兼容全部浏览器的方法也可以,但是最好不是通过判断客户端浏览器执行不同代码的方法。
...全文
597 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
申祷无 2013-09-23
  • 打赏
  • 举报
回复
引用 8 楼 charrys 的回复:
AJAX 就不会弹出提示。刷新页面就会有提示。
6楼的代码无法保证每次AJAX都能成功执行,而且无法成功执行的概率很大。而且有时候成功率很大,有时候很小,但是基本找不出规律。
86y 2013-09-06
  • 打赏
  • 举报
回复
AJAX 就不会弹出提示。刷新页面就会有提示。
申祷无 2013-09-06
  • 打赏
  • 举报
回复
引用 3 楼 charrys 的回复:

 //禁止用F5键    
var UnloadConfirm = {};
UnloadConfirm.MSG_UNLOAD = "数据尚未保存,离开后可能会导致数据丢失\n\n您确定要离开吗?";
UnloadConfirm.set = function(a) {
    window.onbeforeunload = function(b) {
        b = b || window.event;
        b.returnValue = a;
        return a
    }
};
UnloadConfirm.clear = function() {
    fckDraft.delDraftById();
    window.onbeforeunload = function() {}
};
UnloadConfirm.set(UnloadConfirm.MSG_UNLOAD);
这个用的是什么原理?难道是BUG?这里面用的几个对象和方法网上根本就搜不到。
申祷无 2013-09-06
  • 打赏
  • 举报
回复
引用 3 楼 charrys 的回复:

 //禁止用F5键    
var UnloadConfirm = {};
UnloadConfirm.MSG_UNLOAD = "数据尚未保存,离开后可能会导致数据丢失\n\n您确定要离开吗?";
UnloadConfirm.set = function(a) {
    window.onbeforeunload = function(b) {
        b = b || window.event;
        b.returnValue = a;
        return a
    }
};
UnloadConfirm.clear = function() {
    fckDraft.delDraftById();
    window.onbeforeunload = function() {}
};
UnloadConfirm.set(UnloadConfirm.MSG_UNLOAD);
我把这三行 b = b || window.event; b.returnValue = a; return a 换成调用发送AJAX的函数的语句了,就不弹出窗口了。其他的东西还能删么?试着删了几个东西,删掉之后就没有效果了。
申祷无 2013-09-06
  • 打赏
  • 举报
回复
引用 3 楼 charrys 的回复:

 //禁止用F5键    
var UnloadConfirm = {};
UnloadConfirm.MSG_UNLOAD = "数据尚未保存,离开后可能会导致数据丢失\n\n您确定要离开吗?";
UnloadConfirm.set = function(a) {
    window.onbeforeunload = function(b) {
        b = b || window.event;
        b.returnValue = a;
        return a
    }
};
UnloadConfirm.clear = function() {
    fckDraft.delDraftById();
    window.onbeforeunload = function() {}
};
UnloadConfirm.set(UnloadConfirm.MSG_UNLOAD);
怎么才能不弹出提示框?我只想发送个AJAX而已。
似梦飞花 2013-09-06
  • 打赏
  • 举报
回复
那个方法chrome倒是可以 但是opera仿佛不支持
86y 2013-09-06
  • 打赏
  • 举报
回复

 //禁止用F5键    
var UnloadConfirm = {};
UnloadConfirm.MSG_UNLOAD = "数据尚未保存,离开后可能会导致数据丢失\n\n您确定要离开吗?";
UnloadConfirm.set = function(a) {
    window.onbeforeunload = function(b) {
        b = b || window.event;
        b.returnValue = a;
        return a
    }
};
UnloadConfirm.clear = function() {
    fckDraft.delDraftById();
    window.onbeforeunload = function() {}
};
UnloadConfirm.set(UnloadConfirm.MSG_UNLOAD);
申祷无 2013-09-06
  • 打赏
  • 举报
回复
引用 1 楼 KongHuLu 的回复:
[quote=引用 楼主 shendaowu 的回复:] 刚才了解到Chrome和Opera是不支持onunload的,但是之后突然想起来这个网站在Chrome上是有关闭提示的: http://www.compileonline.com/compile_cpp11_online.php(加载时间相对来说有点长) 但是这个网站的关闭提示只在Chrome和Firefox上是有效的,IE9,Opera都是无效的。但是我已经决定不兼容IE了,兼容IE对我来说就是个噩梦。鉴于Opera那么点可怜的市场占有率我也不想兼容Opera了。 这个网站上的代码太多了,我的技术又很烂,所以看不出哪部分是实现关闭提示的。所以请高手将关闭提示的那部分提取出来。另外这个方法能执行AJAX么?我想执行的是就算没有执行也不会造成很严重的后果的AJAX。 如果有兼容全部浏览器的方法也可以,但是最好不是通过判断客户端浏览器执行不同代码的方法。
源代码第41行开始

if ( $.browser.msie ) {
/*
   window.onbeforeunload = function(e){
    var tabClick = false;
    $('#tt').tabs({
        onSelect:function(title,index){
           tabClick = true;
           return true;
        }
    });
    if( !tabClick ){
      return "Leaving this page may cause loss of your code!";
    }
   };
*/
}else{
   window.onbeforeunload = function(){
      return "Leaving this page may cause loss of your code!";
   };
}
[/quote]你试过了?我是在本地运行的根本就不好使。
潮起潮落 2013-09-03
  • 打赏
  • 举报
回复
引用 楼主 shendaowu 的回复:
刚才了解到Chrome和Opera是不支持onunload的,但是之后突然想起来这个网站在Chrome上是有关闭提示的: http://www.compileonline.com/compile_cpp11_online.php(加载时间相对来说有点长) 但是这个网站的关闭提示只在Chrome和Firefox上是有效的,IE9,Opera都是无效的。但是我已经决定不兼容IE了,兼容IE对我来说就是个噩梦。鉴于Opera那么点可怜的市场占有率我也不想兼容Opera了。 这个网站上的代码太多了,我的技术又很烂,所以看不出哪部分是实现关闭提示的。所以请高手将关闭提示的那部分提取出来。另外这个方法能执行AJAX么?我想执行的是就算没有执行也不会造成很严重的后果的AJAX。 如果有兼容全部浏览器的方法也可以,但是最好不是通过判断客户端浏览器执行不同代码的方法。
源代码第41行开始

if ( $.browser.msie ) {
/*
   window.onbeforeunload = function(e){
    var tabClick = false;
    $('#tt').tabs({
        onSelect:function(title,index){
           tabClick = true;
           return true;
        }
    });
    if( !tabClick ){
      return "Leaving this page may cause loss of your code!";
    }
   };
*/
}else{
   window.onbeforeunload = function(){
      return "Leaving this page may cause loss of your code!";
   };
}

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧