网页QQ web2关闭浏览器提示效果

luojihaidao 2011-04-14 07:14:13
好久不上CSDN了。 今天发现个东西。 希望各位帮忙。嘿

QQ推出了网页版本。登录网址:http://web2.qq.com

今天我使用FireFox登录后。使用了一下,感觉还不错。只是功能没有那么全。

当我点Firefox右上角关闭浏览器或关闭QQ所在的标签时。 它会提示是否退出?


我记的Firefox 没有标签关半和浏览器关闭时的响应函数吧。 (还是我孤陋寡闻。。。)


请教的功能应该怎么实现的。 大虾们指教下。

大家可以登录网页QQ 试试。 嘿嘿
...全文
337 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
se7en 2011-05-06
  • 打赏
  • 举报
回复
现在已经是3.0了 ,
TempOneUser 2011-05-05
  • 打赏
  • 举报
回复
hch126163 2011-04-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 toury 的回复:]

难点问题不在关闭网页出现提示。下面的测试代码基本兼容主流浏览器:
JScript code

window.onbeforeunload=function(e){
e=e||window.event;
e.returnValue="\n真的离开??\n"
//do something。。。。。。。
}


但难点问题主要有两个:
1、如何处理将刷新与关闭(包括跳转到其他页面)……
[/Quote]

+++
多标签浏览器。都判断不了是关闭还是刷新。还是跳转页面
toury 2011-04-15
  • 打赏
  • 举报
回复
难点问题不在关闭网页出现提示。下面的测试代码基本兼容主流浏览器:

window.onbeforeunload=function(e){
e=e||window.event;
e.returnValue="\n真的离开??\n"
//do something。。。。。。。
}

但难点问题主要有两个:
1、如何处理将刷新与关闭(包括跳转到其他页面)区分开来。
2、如何在用户选择了取消,不离开页面时,保证不做那个do something。

第一个难点,在IE中可以判断鼠标位置来弥补;但FF就无效了
luojihaidao 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 t5500 的回复:]

引用 5 楼 luojihaidao 的回复:

昨天发贴没有环境,今天测试了下。

onbeforeunload 支持:IE5.5 IE6 IE7 IE8 firefox Netscape Navigator
不支持:Safari Opera chrome

safari、chrome都试过,直接点浏览器关闭按钮可以触发onbeforeunload()事件。
[/Quote]

呵呵。。 测试写错了。
乌镇程序员 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 luojihaidao 的回复:]

昨天发贴没有环境,今天测试了下。

onbeforeunload 支持:IE5.5 IE6 IE7 IE8 firefox Netscape Navigator
不支持:Safari Opera chrome
[/Quote]
safari、chrome都试过,直接点浏览器关闭按钮可以触发onbeforeunload()事件。
luojihaidao 2011-04-15
  • 打赏
  • 举报
回复
上面测试结果写法是:
<body onbeforeunload="event.returnValue='确定退出吗'" >
</body>

写在body里面去了。

正确的写法应该:

window.onbeforeunload=function(){
return "请点击取消留在此页";
}


相信对于document window body的区别大家都知道了。。

最后测试是onbeforeunload事件只在Opera中不支持。(当然比较老的firefox 也不支持。)
luojihaidao 2011-04-15
  • 打赏
  • 举报
回复
这里说的比较清楚了。

http://www.w3help.org/zh-cn/causes/BX2047
luojihaidao 2011-04-15
  • 打赏
  • 举报
回复
昨天发贴没有环境,今天测试了下。

onbeforeunload 支持:IE5.5 IE6 IE7 IE8 firefox Netscape Navigator
不支持:Safari Opera chrome
jhrxx 2011-04-15
  • 打赏
  • 举报
回复
看触发方式应该是 onbeforeunload
乌镇程序员 2011-04-14
  • 打赏
  • 举报
回复
在Safari下的JS控制台找了好久没找到onbeforeunload,我的妈呀,webqq内部的文档对象太复杂了。。是学习js的好东东!
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>EQQ Proxy 2011-03-31-02</title>
</head>
<body>
<script>
document.domain = "qq.com";
// 兼容不同浏览器的 Adapter 适配层
if(typeof window.XMLHttpRequest === "undefined"){
window.XMLHttpRequest = function(){
return new window.ActiveXObject(navigator.userAgent.indexOf("MSIE 5") >=0 ? "Microsoft.XMLHTTP" : "Msxml2.XMLHTTP");
};
}
/**
* 这是Ajax对象名字空间的一个方法
*
* @memberOf Http
* @method ajax
*
* @param {Object} options 一个配置对象
* @return {Object} ajax 返回一个ajax对象
*/
var ajax = function(uri, options){
var httpRequest,
httpSuccess,
timeout,
isTimeout = false,
isComplete = false;
options = {
method: options.method || "GET",
data: options.data || null,
arguments: options.arguments || null,
onSuccess: options.onSuccess || function(){},
onError: options.onError || function(){},
onComplete: options.onComplete || function(){},
//尚未测试
onTimeout: options.onTimeout || function(){},
isAsync: options.isAsync || true,
timeout: options.timeout ? options.timeout : 30000,
contentType: options.contentType ? options.contentType : "utf-8",
type: options.type || "xml"
};
uri = uri || "",
timeout = options.timeout;
httpRequest = new window.XMLHttpRequest();
httpRequest.open(options.method, uri, options.isAsync);
//设置编码集
//httpRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
httpRequest.setRequestHeader("Content-Type",options.contentType);
/**
* @ignore
*/
httpSuccess=function(r){
try{
return (!r.status && location.protocol == "file:")
|| (r.status>=200 && r.status<300)
|| (r.status==304)
|| (navigator.userAgent.indexOf("Safari")>-1 && typeof r.status=="undefined");
}catch(e){}
return false;
}
//httpRequest.UPDATE_TIME_STAMP = "20110331001";
httpRequest.onreadystatechange=function (){
if(httpRequest.readyState==4){
if(!isTimeout){
var o={};
o.responseText = httpRequest.responseText;
o.responseXML = httpRequest.responseXML;
o.uri=uri;
o.arguments=options.arguments;
o.status= httpRequest.status;
o.data = options.data;
if(httpSuccess(httpRequest)){
if(options.type === "script"){
eval.call(window, data);
}
try{
if(options && options.onSuccess){
options.onSuccess(o);
}
}catch(e){}
}else{
try{
options.onError(o);
}catch(e){}
}
try{
options.onComplete(o);
}catch(e){}
}
isComplete = true;
//删除对象,防止内存溢出
httpRequest = null;
}
};
httpRequest.send(options.data);
window.setTimeout(function(){
var o;
if(!isComplete){
isTimeout = true;
o={};
o.uri=uri;
o.arguments=options.arguments;
if(httpRequest){
httpRequest.abort();
httpRequest = null;
}
try{
options.onTimeout(o);
options.onComplete(o);
}catch(e){}
}
}, timeout);
return httpRequest;
};
function GetRequest(){
var url = location.search; //获取url中"?"符后的字串
var theRequest = new Object();
if(url.indexOf("?") != -1)
{
var str = url.substr(1);
strs = str.split("&");
for(var i = 0; i < strs.length; i ++)
{
theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
}
}
return theRequest;
}
var urlParam = GetRequest();
//这里为了安全,不直接传回调函数过来,这里做一层map
if(urlParam["callback"]){
parent.alloy.ajaxProxyCallback(parseInt(urlParam["callback"]), parseInt(urlParam["id"]));
}
</script>
</body>
</html>
燚焱炎火 2011-04-14
  • 打赏
  • 举报
回复
linux可以用的吧。。O(∩_∩)O哈哈~
KK3K2005 2011-04-14
  • 打赏
  • 举报
回复
<body onbeforeunload="event.returnValue='确定退出吗'" >
</body>
不是所有浏览器全支持

5,007

社区成员

发帖
与我相关
我的任务
社区描述
解读Web 标准、分析和讨论实际问题、推动网络标准化发展和跨浏览器开发进程,解决各种兼容性问题。
社区管理员
  • 跨浏览器开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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