这个页面是怎么做到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。
如果有兼容全部浏览器的方法也可以,但是最好不是通过判断客户端浏览器执行不同代码的方法。
...全文
537 9 打赏 收藏 转发到动态 举报
写回复
用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!";
   };
}
提取,编辑和轻松评估XPath查询。 XPath的助手很容易提取,编辑,并在任何网页评估XPath查询。 重要提示:安装此扩展后,必须重新加载任何现有的选项卡或重新启动Chrome浏览器扩展工作。 说明: 1.打开一个新的标签,并导航到任何网页。 2.按Ctrl-Shift键-X(或OS X命令移-X),或单击工具栏上的XPath的助手按钮,以打开XPath助手控制台。 3.按住Shift键将鼠标悬停在页面上的元素。查询框将不断更新,以显示鼠标指针下方的元件XPath查询,结果框将显示当前查询的结果。 4.如果需要,请在控制台直接编辑XPath查询。结果框会立即反映更改。 5.重复步骤(2)关闭控制台。 如果控制台在你的方式获得,按住Shift键,然后将鼠标移动到它; 它会移动到页面的相对侧。 一个忠告:当渲染HTML表格,浏览器插入人工标记到DOM,这将在随后通过该扩展提取查询显示出来。 Extract, edit, and evaluate XPath queries with ease. XPath Helper makes it easy to extract, edit, and evaluate XPath queries on any webpage. IMPORTANT: After installing this extension, you must reload any existing tabs or restart Chrome for the extension to work. Instructions: 1. Open a new tab and navigate to any webpage. 2. Hit Ctrl-Shift-X (or Command-Shift-X on OS X), or click the XPath Helper button in the toolbar, to open the XPath Helper console. 3. Hold down Shift as you mouse over elements on the page. The query box will continuously update to show the XPath query for the element below the mouse pointer, and the results box will show the results for the current query. 4. If desired, edit the XPath query directly in the console. The results box will immediately reflect your changes. 5. Repeat step (2) to close the console. If the console gets in your way, hold down Shift and then move your mouse over it; it will move to the opposite side of the page. One word of caution: When rendering HTML tables, Chrome inserts artificial tags into the DOM, which will consequently show up in queries extracted by this extension.

87,907

社区成员

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

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