DooIT@江西搜才网
博客园
::
首页
::
新随笔
::
联系
::
订阅
::
管理
::
49 随笔 :: 17 文章 :: 1146 评论 :: 28 引用
MSN消息提示类(II)
纯js编写
跨框架
无图片
支持调速度
任意位置弹出
需要ie5.5以上
<
HTML
><
HEAD
>
<
SCRIPT language
=
JavaScript
>
<!--
/**/
/*
** ==================================================================================================
** 类名:CLASS_MSN_MESSAGE
** 功能:提供类似MSN消息框
** 示例:
---------------------------------------------------------------------------------------------------
var MSG = new CLASS_MSN_MESSAGE("aa",200,120,"短消息提示:","您有1封消息","今天请我吃饭哈");
MSG.show();
---------------------------------------------------------------------------------------------------
** 作者:ttyp
** 邮件:ttyp@21cn.com
** 日期:2005-3-18
** ==================================================================================================
*
*/
/**/
/*
* 消息构造
*/
function
CLASS_MSN_MESSAGE(id,width,height,caption,title,message,target,action)
{
this
.id
=
id;
this
.title
=
title;
this
.caption
=
caption;
this
.message
=
message;
this
.target
=
target;
this
.action
=
action;
this
.width
=
width
?
width:
200
;
this
.height
=
height
?
height:
120
;
this
.timeout
=
150
;
this
.speed
=
20
;
this
.step
=
1
;
this
.right
=
screen.width
-
1
;
this
.bottom
=
screen.height;
this
.left
=
this
.right
-
this
.width;
this
.top
=
this
.bottom
-
this
.height;
this
.timer
=
0
;
this
.pause
=
false
;
this
.close
=
false
;
this
.autoHide
=
true
;
}
/**/
/*
* 隐藏消息方法
*/
CLASS_MSN_MESSAGE.prototype.hide
=
function
()
{
if
(
this
.onunload())
{
var
offset
=
this
.height
>
this
.bottom
-
this
.top
?
this
.height:
this
.bottom
-
this
.top;
var
me
=
this
;
if
(
this
.timer
>
0
)
{
window.clearInterval(me.timer);
}
var
fun
=
function
()
{
if
(me.pause
==
false
||
me.close)
{
var
x
=
me.left;
var
y
=
0
;
var
width
=
me.width;
var
height
=
0
;
if
(me.offset
>
0
)
{
height
=
me.offset;
}
y
=
me.bottom
-
height;
if
(y
>=
me.bottom)
{
window.clearInterval(me.timer);
me.Pop.hide();
}
else
{
me.offset
=
me.offset
-
me.step;
}
me.Pop.show(x,y,width,height);
}
}
this
.timer
=
window.setInterval(fun,
this
.speed)
}
}
/**/
/*
* 消息卸载事件,可以重写
*/
CLASS_MSN_MESSAGE.prototype.onunload
=
function
()
{
return
true
;
}
/**/
/*
* 消息命令事件,要实现自己的连接,请重写它
*
*/
CLASS_MSN_MESSAGE.prototype.oncommand
=
function
()
{
this
.close
=
true
;
this
.hide();
}
/**/
/*
* 消息显示方法
*/
CLASS_MSN_MESSAGE.prototype.show
=
function
()
{
var
oPopup
=
window.createPopup();
//
IE5.5+
this
.Pop
=
oPopup;
var
w
=
this
.width;
var
h
=
this
.height;
var
str
=
"
<DIV style='BORDER-RIGHT: #455690 1px solid; BORDER-TOP: #a6b4cf 1px solid; Z-INDEX: 99999; LEFT: 0px; BORDER-LEFT: #a6b4cf 1px solid; WIDTH:
"
+
w
+
"
px; BORDER-BOTTOM: #455690 1px solid; POSITION: absolute; TOP: 0px; HEIGHT:
"
+
h
+
"
px; BACKGROUND-COLOR: #c9d3f3'>
"
str
+=
"
<TABLE style='BORDER-TOP: #ffffff 1px solid; BORDER-LEFT: #ffffff 1px solid' cellSpacing=0 cellPadding=0 width='100%' bgColor=#cfdef4 border=0>
"
str
+=
"
<TR>
"
str
+=
"
<TD style='FONT-SIZE: 12px;COLOR: #0f2c8c' width=30 height=24></TD>
"
str
+=
"
<TD style='PADDING-LEFT: 4px; FONT-WEIGHT: normal; FONT-SIZE: 12px; COLOR: #1f336b; PADDING-TOP: 4px' vAlign=center width='100%'>
"
+
this
.caption
+
"
</TD>
"
str
+=
"
<TD style='PADDING-RIGHT: 2px; PADDING-TOP: 2px' vAlign=center align=right width=19>
"
str
+=
"
<SPAN title=关闭 style='FONT-WEIGHT: bold; FONT-SIZE: 12px; CURSOR: hand; COLOR: red; MARGIN-RIGHT: 4px' id='btSysClose' >×</SPAN></TD>
"
str
+=
"
</TR>
"
str
+=
"
<TR>
"
str
+=
"
<TD style='PADDING-RIGHT: 1px;PADDING-BOTTOM: 1px' colSpan=3 height=
"
+
(h
-
28
)
+
"
>
"
str
+=
"
<DIV style='BORDER-RIGHT: #b9c9ef 1px solid; PADDING-RIGHT: 8px; BORDER-TOP: #728eb8 1px solid; PADDING-LEFT: 8px; FONT-SIZE: 12px; PADDING-BOTTOM: 8px; BORDER-LEFT: #728eb8 1px solid; WIDTH: 100%; COLOR: #1f336b; PADDING-TOP: 8px; BORDER-BOTTOM: #b9c9ef 1px solid; HEIGHT: 100%'>
"
+
this
.title
+
"
<BR><BR>
"
str
+=
"
<DIV style='WORD-BREAK: break-all' align=left><A href='javascript:void(0)' hidefocus=true id='btCommand'><FONT color=#ff0000>
"
+
this
.message
+
"
</FONT></A></DIV>
"
str
+=
"
</DIV>
"
str
+=
"
</TD>
"
str
+=
"
</TR>
"
str
+=
"
</TABLE>
"
str
+=
"
</DIV>
"
oPopup.document.body.innerHTML
=
str;
this
.offset
=
0
;
var
me
=
this
;
oPopup.document.body.onmouseover
=
function
()
{me.pause
=
true
;}
oPopup.document.body.onmouseout
=
function
()
{me.pause
=
false
;}
var
fun
=
function
()
{
var
x
=
me.left;
var
y
=
0
;
var
width
=
me.width;
var
height
=
me.height;
if
(me.offset
>
me.height)
{
height
=
me.height;
}
else
{
height
=
me.offset;
}
y
=
me.bottom
-
me.offset;
if
(y
<=
me.top)
{
me.timeout
--
;
if
(me.timeout
==
0
)
{
window.clearInterval(me.timer);
if
(me.autoHide)
{
me.hide();
}
}
}
else
{
me.offset
=
me.offset
+
me.step;
}
me.Pop.show(x,y,width,height);
}
this
.timer
=
window.setInterval(fun,
this
.speed)
var
btClose
=
oPopup.document.getElementById(
"
btSysClose
"
);
btClose.onclick
=
function
()
{
me.close
=
true
;
me.hide();
}
var
btCommand
=
oPopup.document.getElementById(
"
btCommand
"
);
btCommand.onclick
=
function
()
{
me.oncommand();
}
}
/**/
/*
** 设置速度方法
*
*/
CLASS_MSN_MESSAGE.prototype.speed
=
function
(s)
{
var
t
=
20
;
try
{
t
=
praseInt(s);
}
catch
(e)
{}
this
.speed
=
t;
}
/**/
/*
** 设置步长方法
*
*/
CLASS_MSN_MESSAGE.prototype.step
=
function
(s)
{
var
t
=
1
;
try
{
t
=
praseInt(s);
}
catch
(e)
{}
this
.step
=
t;
}
CLASS_MSN_MESSAGE.prototype.rect
=
function
(left,right,top,bottom)
{
try
{
this
.left
=
left
!=
null
?
left:
this
.right
-
this
.width;
this
.right
=
right
!=
null
?
right:
this
.left
+
this
.width;
this
.bottom
=
bottom
!=
null
?
(bottom
>
screen.height
?
screen.height:bottom):screen.height;
this
.top
=
top
!=
null
?
top:
this
.bottom
-
this
.height;
}
catch
(e)
{}
}
var
MSG1
=
new
CLASS_MSN_MESSAGE(
"
aa
"
,
200
,
120
,
"
短消息提示:
"
,
"
您有1封消息
"
,
"
今天请我吃饭哈
"
);
MSG1.rect(
null
,
null
,
null
,screen.height
-
50
);
MSG1.speed
=
10
;
MSG1.step
=
5
;
//
alert(MSG1.top);
MSG1.show();
//
同时两个有闪烁,只能用层代替了,不过层不跨框架
//
var MSG2 = new CLASS_MSN_MESSAGE("aa",200,120,"短消息提示:","您有2封消息","好的啊");
//
MSG2.rect(100,null,null,screen.height);
//
MSG2.show();
//
-->
</
SCRIPT
>
<
META content
=
"
MSHTML 6.00.2800.1106
"
name
=
GENERATOR
></
HEAD
>
<
BODY
></
BODY
></
HTML
>
欢迎访问
江西搜才网
绿色通道:
好文要顶
关注我
收藏该文
与我联系
posted on 2005-03-18 14:45
ttyp
阅读(15725)
评论(132)
编辑
收藏
评论
2071233
评论共2页:
上一页
1
2
#33楼
2006-02-27 17:58
阳光男孩
为什么有时候弹不出来呀,我的是IE6,有时候可以弹出来,
回复
引用
查看
#34楼
2006-02-28 09:05
听棠.NET
楼主说的很对啊,此弹出窗口的最大优点就是popup弹出,可以随时弹出来,而这同时也遇到一个问题,如果我的网页上使用了模式对话框就麻烦了。无法抢得焦点,而在关闭模式对话框时,会弹出N多的消息来。
关于有两个消息弹出时,既然不能象MSN一样层叠出现,那么可以使用延迟弹出,程序在发现有两个以上消息要弹出时,可以输出客户端脚本来延迟执行,setTimeout("Message(..)","5000");象这样五秒后弹出来:)
我就是实现了这种方式,还算不错:)暂时这样解决是最好的了。
回复
引用
查看
#35楼
2006-02-28 09:14
阳光男孩
各位有遇到过有时不能弹出的现象吗,我碰到的情况是第一次打开那网页不行,第二次就可以正常弹出,请问楼主这是什么原因呀,该不会与缓存有关吧!
回复
引用
查看
#36楼
[
楼主
]
2006-02-28 09:29
ttyp
@听棠.NET
像多个弹出的,我是在弹出提示前,做了个标记,在这个标记为真前,不读取下一个提示内容,在弹出提示消失后在设置此标记为假,然后读取下一条记录,当然延迟也不错,不过延迟的时间要大于提示的显示时间
@阳光男孩
一般是你程序的问题,可能第一次没执行到那
回复
引用
查看
#37楼
2006-03-06 16:07
阳光男孩
OK,搞定,果然是我程序问题,谢谢楼主!
回复
引用
查看
#38楼
2006-03-23 17:21
1111[未注册用户]
我是楼主的儿子
回复
引用
#39楼
2006-04-25 22:17
jbas[未注册用户]
ttyp 老大,
你好,我想实现当上一个提示框没消失前,下一下提示框不显示出来 这样的效果,但下面的代码会使提示框不停的闪铄,请问我该怎样做?
popup.js是你上面的代码,我把它放到了一个 js中,我不知道该怎样改,改了一晚上还没改出来,请帮一下了,谢谢了。
<html>
<script src="include/js/popup.js"></script>
<SCRIPT LANGUAGE="JavaScript">
<!--
function popupHint(){
var MSG1 = new CLASS_MSN_MESSAGE("aa",200,120,"短消息提示:","您有1封消息","今天请我吃饭哈");
MSG1.rect(null,null,null,screen.height-20);
MSG1.speed = 10;
MSG1.step = 5;
//alert(MSG1.top);
MSG1.show();
te=true;
//同时两个有闪烁,只能用层代替了,不过层不跨框架
//var MSG2 = new CLASS_MSN_MESSAGE("aa",200,120,"短消息提示:","您有2封消息","好的啊");
// MSG2.rect(100,null,null,screen.height);
// MSG2.show();
//-->
}
//-->
</SCRIPT>
<body>
<SCRIPT LANGUAGE="JavaScript">
<!--
setInterval("popupHint()",1000);
// popupHint();
//-->
</SCRIPT>
</body>
</html>
回复
引用
#40楼
2006-04-27 18:25
jbas[未注册用户]
我这样改了下,好像可以了。
<html>
<script src="include/js/popup.js"></script>
<SCRIPT LANGUAGE="JavaScript">
<!--
var MSG1;
function popupHint(){
if(MSG1==undefined || MSG1.close){
MSG1 = new CLASS_MSN_MESSAGE("aa",200,120,"短消息提示:","您有1封消息","今天请我吃饭哈");
MSG1.rect(null,null,null,screen.height-20);
MSG1.speed = 10;
MSG1.step = 5;
//alert(MSG1.top);
MSG1.show();
}
//同时两个有闪烁,只能用层代替了,不过层不跨框架
//var MSG2 = new CLASS_MSN_MESSAGE("aa",200,120,"短消息提示:","您有2封消息","好的啊");
// MSG2.rect(100,null,null,screen.height);
// MSG2.show();
//-->
}
//-->
</SCRIPT>
<body>
<SCRIPT LANGUAGE="JavaScript">
<!--
setInterval("popupHint()",2000);
// popupHint();
//-->
</SCRIPT>
</body>
</html>
popup.js中的
/**//*
* 消息卸载事件,可以重写
*/
CLASS_MSN_MESSAGE.prototype.onunload = function() {
this.close=true; //加了这一句
return true;
}
回复
引用
#41楼
2006-07-29 18:59
单凯[未注册用户]
我看到评论有很多评论,你也有修改,但不知道你上面的是不是最新的。如果不是,请发给我一份最新的。
回复
引用
#42楼
2006-07-29 23:00
单凯[未注册用户]
如何播放音乐????
回复
引用
#43楼
2006-08-01 12:46
高海东
楼住目前的js是最新的吗
回复
引用
查看
#44楼
[
楼主
]
2006-08-02 17:56
ttyp
都是最新的
回复
引用
查看
#45楼
2006-08-16 09:24
阳光男孩
楼主,我想请问一下,点击那个关闭按钮后执行一个事情,我想跳到别的页面做个事情,还有,我想弹出后就不关闭了,一直到用户点击那个关闭按钮,如果实现呀,还有,俺想实现多个窗口弹出,怎么设置,真诚的期待楼主回复,jxdyzwh@163.com
回复
引用
查看
#46楼
2006-09-11 17:05
完美主义[未注册用户]
@ttyp
这类写的太漂亮了。。
就是能兼容FF就完美了。。
FF兼容多窗口的代码
什么时候同来啊,,
期待中。。。
感觉楼主 写出这么好的东东,,
楼主幸苦了。。。。
回复
引用
#47楼
2006-09-17 12:36
红豆[未注册用户]
楼主,我想请都教一下如果我使用xmlhttp来从数据库里面最消息,该怎么做呀,能个详细的例子吗?谢谢了!
回复
引用
#48楼
2006-09-25 21:31
gyb84021[未注册用户]
经典!我也正在研究。
回复
引用
#49楼
2006-09-26 17:14
海[匿名][未注册用户]
请教楼主一个问题,我把这个消息提示类放在了一个即时刷新的页面中,隔很短的时间就刷新一下页面,如果是有新的邮件、代办任务等会弹出提示。我用了jbas的方法,就是上一个提示框没消失前,下一个提示框不显示出来,但是感觉到弹出筐间隔的时间太短了,刚消失立刻就会弹出来,非常的不方便,请问消失的时间能设定吗,我的js很差,最好楼主能帮忙写一下代码,或者能提供一种别的思路。因为弹出了消息,我点了链接之后要在主页面上做一些操作,弹出的窗口导致不能在主页面上操作。
回复
引用
#50楼
2006-11-10 16:35
Nina
怎麼樣讓這個js在所有的頁面讀可以執行,而不是單一的頁面?
回复
引用
查看
#51楼
2006-11-10 16:36
Nina
裡面的內容也其它都是要根據情形來更改。
回复
引用
查看
#52楼
[
楼主
]
2006-11-10 16:52
ttyp
学习AJAX吧,配合后台
回复
引用
查看
#53楼
2006-11-17 21:00
功夫-皇帝
菜鸟问题
我在 VS2005中直接拖上你的控件 设置TEXT 后,预览 ,,什么也没有
需要在后台写些东西吗 我在PAGELOAD 中写了popup.createPop(); Y也不行啊
楼主解决下 谢谢
回复
引用
查看
#54楼
[
楼主
]
2006-11-17 21:51
ttyp
这个不是控件,需要写js的,参考例子
回复
引用
查看
#55楼
2006-12-10 22:19
clarinetsz[未注册用户]
请教一下!如果 我想让 提醒框 在页面上多停留一些时间!要改哪个参数啊?
谢谢?
回复
引用
#56楼
[
楼主
]
2006-12-11 08:31
ttyp
this.timeout= 150;
回复
引用
查看
#57楼
2006-12-18 18:19
guoguo[未注册用户]
按你上面的方法,点击 弹出链接 可是却被 xp sp2拦截了
请问该怎么处理
回复
引用
#58楼
[
楼主
]
2006-12-18 18:22
ttyp
加上
<!-- saved from url=(0013)about:internet -->
看看,据说行,没测试过
回复
引用
查看
#59楼
2006-12-27 11:28
js迷糊[未注册用户]
您好,我想请问您个问题(我是js菜鸟)
我把你的这个js ,存到message.js文件中,在我用的run.jsp页面中导入,
当我点击我先把是否点击的标记传给run.jsp,我在jsp中是这样调用的
<script language="javascript">
/**
** reShow message
**/
var MSG1;
function popupHint(messStr,methodStr){
if(MSG1 == undefined || MSG1.close){
MSG1 = new CLASS_MSN_MESSAGE("aa",200,120,"短消息提示:","您有1封新的消息",messStr,methodStr);
MSG1.rect(null,null,null,screen.height-20);
MSG1.speed = 10;
MSG1.step = 5;
MSG1.show();
if(MSG1.close ==true)
myMethod();//我的方法
}
}
</script>
我在oncommand着个方法把
CLASS_MSN_MESSAGE.prototype.oncommand = function(){
this.setClose(window.confirm(this.message));//是否点击的标记
this.hide();
}
可是这样不能调用我的方法,因为在我点消息之前这段代码就已经执行完了,所以判断的不对,请问怎么搞
回复
引用
#60楼
[
楼主
]
2006-12-27 11:46
ttyp
CLASS_MSN_MESSAGE.prototype.onunload = function() {
myMethod();//我的方法
return true;
}
回复
引用
查看
#61楼
2006-12-27 13:05
js迷糊[未注册用户]
您说的意思我明白,但我不把myMethod()放在onunload 方法里,放在oncommand也可以,我想请问我要想不把myMethod()写死在我的message.jsp里.想通过传方法名的这样的参数,在oncommand或onunload 这里调用,或者想我原来的思路给我页面传个反馈值,该怎么办,谢谢您刚才的解答
回复
引用
#62楼
2006-12-27 13:06
js迷糊[未注册用户]
不好意思message.jsp->message.js
回复
引用
#63楼
[
楼主
]
2006-12-27 13:28
ttyp
是不是这个意思?
如:
CLASS_MSN_MESSAGE.prototype.oncommand = function()
{
window.open(this.action,this.target);
this.hide();
}
var MSG1 = new CLASS_MSN_MESSAGE("aa",200,120,"短消息提示:","您有1封消息","今天请我吃饭哈","_blank","
http://www.google.com"
);
MSG1.rect(null,null,null,screen.height-50);
MSG1.speed = 10;
MSG1.step = 5;
MSG1.show();
看看CLASS_MSN_MESSAGE后面两参数
回复
引用
查看
#64楼
2006-12-27 13:42
js迷糊[未注册用户]
hehe,这个我看过之前的贴子了,确实很好,但这个方法好象不适合我,因为我的页面是用struts写的,不想用url访问,意思很象
回复
引用
#65楼
[
楼主
]
2006-12-27 13:56
ttyp
那你要怎么访问?要不你自己加个参数(不一定非要连接),然后在oncommand里根据参数,你想怎么样怎么样
回复
引用
查看
#66楼
2006-12-27 14:20
js迷糊[未注册用户]
通过表单提交,不想用类似window.open(this.action,this.target);这样的方法,我的myMethod()里基本就是赋值,提交表单.
java 中可以传一个方法名字符串,通过Class类(省略)完成调用,不知道js要怎么搞
回复
引用
#67楼
[
楼主
]
2006-12-27 14:27
ttyp
不明白,抱歉
回复
引用
查看
#68楼
2006-12-27 14:31
js迷糊[未注册用户]
仍然感谢你的回复,你的这个程序写的确实很好,给了我不少帮助,让我对js有了了解,有机会再请教.谢谢
回复
引用
#69楼
2006-12-27 19:30
js迷糊[未注册用户]
你好,请问为什么我同时出两个窗口就不停的闪,要怎么搞定,是不是你所说的挣抢焦点,我象
CLASS_MSN_MESSAGE.prototype.onunload = function() {
this.close=true; //加了这一句
return true;
}
这样写,也不行
回复
引用
#70楼
2006-12-27 19:39
js迷糊[未注册用户]
你所说的层解决方案要怎么搞
回复
引用
#71楼
[
楼主
]
2006-12-27 19:42
ttyp
是抢焦点的问题,用层的方案一直没时间做。另外用层不能跨框架
回复
引用
查看
#72楼
2006-12-27 19:44
js迷糊[未注册用户]
哦,苦恼啊,js好难搞,呵呵谢谢
回复
引用
#73楼
2006-12-28 14:24
js迷糊[未注册用户]
老兄!还得麻烦你,
"像多个弹出的,我是在弹出提示前,做了个标记,在这个标记为真前,不读取下一个提示内容,在弹出提示消失后在设置此标记为假,然后读取下一条记录,当然延迟也不错,不过延迟的时间要大于提示的显示时间"
我觉得第 1 个方式很好,但我不知道怎么修改,搞了一会没出来,而且延迟也试了,但有脚本错误,估计可能没用对,请指教,如果你有时间,希望说的详细点,先谢了
回复
引用
#74楼
[
楼主
]
2006-12-28 15:52
ttyp
var i = 0;
var RUN = false;
function QueryMessage(){
if(RUN==false){
if(RUN==false){
RUN = true;
var msg = new CLASS_MSN_MESSAGE("aa",200,120,"短消息提示:",sendFrom,message);
msg.rect(null,null,null,screen.height-50);
msg.speed = 40;
msg.step = 2;
msg.show();
}
}
}
function ShowMessage(){
var oInterval;
//定时查询是否有消息
oInterval = window.setInterval("QueryMessage()",10000);
CLASS_MSN_MESSAGE.prototype.onend = function() {
RUN = false;
}
if(typeof(oInterval)=="undefined"){
document.title = "显示消息失败";
}
}
window.attachEvent("onload",ShowMessage);
参考下吧,我这边是这么做的
回复
引用
查看
#75楼
2006-12-29 10:52
js迷糊[未注册用户]
谢谢 你的提醒,
1.我还想请问你,你的多条消息是不是1个sql出来的消息,只不过是间隔显示,还是说可以适应不同的消息,同时来.
2.我原来做的是在hide方法的最后,调用类似QueryMessage的方法,用来生成下一个窗口,可是这么做,第一个还没消失完全,第2个就出来了,有一段时间挣抢了焦点,能通过什么方式解决么
3.还有我要想让显示的慢点,消失的快点,要怎么搞,是不hide 方法 this.timer = window.setInterval(fun,this.speed) 这句this.speed修改一下,如写死成1,我改后为什么没效果?
回复
引用
#76楼
[
楼主
]
2006-12-29 12:32
ttyp
1.我用的是AJAX,每次取一条最新的数据
2.你在CLASS_MSN_MESSAGE.prototype.onend 里做个标记,然后判断这个标记再创建新的MESSAGE,就不会第一个还没消失完全,第2个就出来了
3.CLASS_MSN_MESSAGE.prototype.hide里
me.offset = me.offset - me.step;
你改下,如:(或者再定义个step2属性,具体看着办了)
me.offset = me.offset - me.step*1.5;
回复
引用
查看
#77楼
2006-12-29 12:38
js迷糊[未注册用户]
thank you
回复
引用
#78楼
2007-01-15 13:58
js迷糊[未注册用户]
麻烦帮个忙,我为消息添加声音,加到了str这里,但他消失的时候他又响了一次,怎么解决啊
回复
引用
#79楼
2007-03-11 21:11
晓风残月
Cool, thx!
回复
引用
查看
#80楼
2007-03-12 00:37
晓风残月
@ttyp
根据这个DEMO可以间断显示消息,
可是点击‘关闭’按钮后或者点击浏览器的其他部位,并不是马上就消失,而且要点上5,6次才消失
而且根据上面的源码,这DEMO中的CLASS_MSN_MESSAGE.prototype.onend 应该是
CLASS_MSN_MESSAGE.prototype.onunload 吧
// DEMO
var i = 0;
var RUN = false;
function QueryMessage(){
if(RUN==false){
if(RUN==false){
RUN = true;
var msg = new CLASS_MSN_MESSAGE("aa",200,120,"短消息提示:",sendFrom,message);
msg.rect(null,null,null,screen.height-50);
msg.speed = 40;
msg.step = 2;
msg.show();
}
}
}
function ShowMessage(){
var oInterval;
//定时查询是否有消息
oInterval = window.setInterval("QueryMessage()",10000);
CLASS_MSN_MESSAGE.prototype.onend = function() {
RUN = false;
}
if(typeof(oInterval)=="undefined"){
document.title = "显示消息失败";
}
}
window.attachEvent("onload",ShowMessage);
回复
引用
查看
#81楼
[
楼主
]
2007-03-12 09:04
ttyp
@晓风残月
1.不消失的原因是当show一个popup后,他总是抢焦点的,并且总是在最上面的
2.不是onunload,onend是我项目里加的一个事件,是指整个消息框结束后的一个事件,onunload是指是否允许关闭的一个事件
回复
引用
查看
#82楼
2007-03-13 22:37
jinglecat[未注册用户]
@ttyp
————————————————
1.不消失的原因是当show一个popup后,他总是抢焦点的,并且总是在最上面的
————————————————
那这个问题怎么处理?
回复
引用
#83楼
2007-03-19 17:46
dino[未注册用户]
如果我要在里面再加一个checkbox框,并且选中时触发一些事情该如何做?
回复
引用
#84楼
2007-03-29 13:44
杨军
我想用ajax做个这样的信息弹出框,但是每次的信息是查询数据库,如果数据库里有,就弹出信息框,请问那位高手能给个例子吗?
回复
引用
#85楼
2007-04-10 16:32
???[未注册用户]
我能链接提交到其他的frame中么?
回复
引用
#86楼
2007-04-11 10:24
http://beyond.name[未注册用户]
测试了,可以的。
this.target = top.frames.***.name;
回复
引用
#87楼
2007-04-11 15:48
http://beyond.name[未注册用户]
多链接的实现还是比较麻烦!
ttyp 有什么好的办法么?
回复
引用
#88楼
[
楼主
]
2007-04-11 16:12
ttyp
@
http://beyond.name
什么是多链接?指一个提示上有多个链接而且框架不一样么
回复
引用
查看
#89楼
2007-04-12 11:01
http://beyond.name[未注册用户]
一个提示框内,是一个框架,显示多个链接。
而我们这里是传一个链接进去……
回复
引用
#90楼
2007-04-12 11:03
http://beyond.name[未注册用户]
ttyp 你有googletalk,msn 或 qq之类的即时联系工具么?
回复
引用
#91楼
[
楼主
]
2007-04-12 13:30
ttyp
@
http://beyond.name
可以发邮件给我ttyp@21cn.com,那些东西都不太用
回复
引用
查看
#92楼
2007-04-20 14:18
qq379548695[未注册用户]
用了一个中午看了下,太好了,马上要作这方面的,ttyp有完整的例子吗?给发一份最新的.谢谢!luiguangshui@163.com
回复
引用
#93楼
2007-04-24 16:20
cry[未注册用户]
现在这个消息框出来以后,点击这个页面的其他东西,消息框会闪一下。这个能不能解决
回复
引用
#94楼
2007-06-17 21:37
Talki[未注册用户]
不错,楼主的东西有些水平
回复
引用
#95楼
2007-06-18 16:27
蜗牛[未注册用户]
楼主.现在我不能实现点击链接跳转到相关网页,这是为什么啊?
function load()
{
var aa= "<%=message()%>";
if(aa==1)
{
var info="<%=messageinfo() %>"; var MSG1 = new CLASS_MSN_MESSAGE("aa",200,120,"短消息提示:","您有1封消息","<a href='
http://www.163.com
'>"+info+"</a>");
MSG1.rect(null,null,null,screen.height-50);
MSG1.speed = 10;
MSG1.step = 5;
MSG1.show();
}
window.setTimeout(load, 60000);
}
</script>
请指点下
回复
引用
#96楼
2007-06-22 10:21
xinshou[未注册用户]
如果能从脚本栏目里随时下载最新版本就太好了
回复
引用
#97楼
2007-07-06 10:52
贼贼[未注册用户]
大哥,要是我想让popup中超链接可以用,怎么办啊
就是说我想在popup中从数据库取很多数据同时以列表的样子显示出来,我可以通过点列表中的任意数据来查看该数据的详细信息,怎么办,大哥?
回复
引用
#98楼
2007-07-06 15:51
jexm[未注册用户]
你好,里边的信息能加连接嘛??
回复
引用
#99楼
2007-07-18 10:27
求知人[未注册用户]
点击浏览器的其他部位后,信息提示就会消失。
请问:我要在他消失的事件里改变一个标识,请问如何实现?
回复
引用
#100楼
2007-07-18 10:49
求知人[未注册用户]
还有。。为什么点击浏览器的其他部位后,信息提示就会消失???
回复
引用
#101楼
2007-08-03 14:13
gongzhw[未注册用户]
楼主,这个功能,能不能在vs2005 中打包成dll啊 那样使用起来方便些
等你消息哟
回复
引用
#102楼
2007-09-06 16:44
kingsly[未注册用户]
很帅的msn提示框,收藏了。
回复
引用
#103楼
2007-11-10 10:36
passer[未注册用户]
相见恨晚
回复
引用
#104楼
2007-11-13 10:57
beRaining[未注册用户]
这个提示的很好,但问题是这样的,窗口最小 化时,为什么就无法弹出了,应该怎么处理,
回复
引用
#105楼
[
楼主
]
2007-11-13 14:24
ttyp
@beRaining
没碰到这样的情况,是IE6.0么
回复
引用
查看
#106楼
2007-11-13 14:54
beRaining[未注册用户]
程序放在另一个人的机子(2003)上,
由我以A的身份在我的机子上登陆,提示运行OK(我的是XP)
然后另外一个用户在其他机子上运行,提示就有问题(其他的是2003)
比如:最小化时,切换到非浏览器界面,都不行
(我的Q-405935145)
回复
引用
#107楼
[
楼主
]
2007-11-14 13:21
ttyp
是系统问题吧,我也是2003没有问题
回复
引用
查看
#108楼
2007-11-15 11:30
tsizhao[未注册用户]
楼主你好,想问一个问题,就是这个提示窗口没有消失前,窗口的鼠标滚轮就无法用了,这个问题能解决吗?如何解决?
还有就是用ajax读取数据时,在页面里怎么去调用这个程序,而使得他会显示完每一个框后再显示下一个框?
回复
引用
#109楼
2007-11-15 16:32
beRaining[未注册用户]
楼主,小问一下,这个提示与那个QQ的新闻即时弹出的。。。
它用的是?
回复
引用
#110楼
2007-12-10 16:50
longspring[未注册用户]
如果想窗口最小化的时候也弹出的话,是不是要将站点加入到信任站点中?
如果不加入信任站点的话,只能显示在页面中哦,不知道该如何解决
回复
引用
#111楼
2007-12-26 11:40
kingslee[未注册用户]
楼主两个框闪烁的解决办法时,对跨iframe的调用时似乎有问题。
回复
引用
#112楼
2007-12-26 11:41
kingslee[未注册用户]
我的解决办法是利用top设置全局环境变量。
if(top){
if(!top.CLASS_MSN_MESSAGE_HOLDER){
top.CLASS_MSN_MESSAGE_HOLDER = function(){};
top.CLASS_MSN_MESSAGE_HOLDER.prototype.showing = false;
}
}
回复
引用
#113楼
2007-12-26 11:42
kingslee[未注册用户]
退出时重写环境变量:
/**//*
* 消息卸载事件,可以重写
*/
CLASS_MSN_MESSAGE.prototype.onunload = function() {
if(top){
top.CLASS_MSN_MESSAGE_HOLDER.prototype.showing = false;
}
return true;
}
回复
引用
#114楼
2007-12-26 11:45
kingslee[未注册用户]
进入critical区域的时候,初始化环境变量。
CLASS_MSN_MESSAGE.prototype.show = function(obj){
var me = obj?obj:this;
if(!top.CLASS_MSN_MESSAGE_HOLDER.prototype.showing){
top.CLASS_MSN_MESSAGE_HOLDER.prototype.showing = true;
...
function fTimeout(){
CLASS_MSN_MESSAGE.prototype.show(me);
}
window.setTimeout(fTimeout,1000);
}
注意该函数第第一次进入的时候,this指向CLASS_MSN_MESSAGE的对象实例,第二次由setTimeout调用时,this指向window,因此this这个东西要做转换。
回复
引用
#115楼
2007-12-26 11:47
kingslee[未注册用户]
本来想一次性把修改后的代码放上来方便大家,没想到提示我提交了一个广告,只能这样分开发对付一下了。
回复
引用
#116楼
2008-01-17 21:18
马国勇[未注册用户]
您好,我看了您的东西,但是如果有很多个页面打开时,这个消息框不会在最前面显示出来,还有一个就是多个消息的叠加问题,我看您的回复里好象是已经解决了这个问题,请问可以email一份给我吗?谢谢了:mgyisjk@sohu.com
回复
引用
#117楼
2008-02-02 16:07
龙天侠[未注册用户]
这个我可以根据设置时间来弹出这个提示框吗??
回复
引用
#118楼
2008-02-13 09:44
SolarisJJ[未注册用户]
博主好技术!学了,用了,谢了!
回复
引用
#119楼
2008-02-18 09:18
js新手[未注册用户]
使用这个弹窗后,正常页面的鼠标不能使用滚轮了啊,我点击“X”符号,想立即关闭弹出窗口,却关不了??? 请楼主发份给我 谢谢 邮箱:lovehenry84@163.com
回复
引用
#120楼
2008-02-19 10:24
jazz[未注册用户]
不错,收藏,以后学习
回复
引用
#121楼
2008-02-22 17:34
请问:[未注册用户]
问题如下:
1,不能同时弹出两个,否则会争夺焦点
2,窗口最小化时,该弹出窗口在显示器的左上角,环境:win2K+ie6.0
3,鼠标滚轮不能使用。问lZ是否有解决方法,多谢了!
回复
引用
#122楼
2008-05-23 11:13
hw[未注册用户]
不错,学习了,只是点击这个页面的其他东西,消息框会闪一下,这怎么解决
请楼主提点我 谢谢 邮箱:daza315@163.com
回复
引用
#123楼
2008-07-17 17:23
冬梅
原来也有很多人关注这个小心提示框,我的想法和14楼一样,如果能做出来的话,能不能也和我分享一下呀。这几天我找这个实现方法很着急呀。谢谢了。
我的邮箱:jianghsd_2008@yahoo.com
我也会一直关注你的博客园的。
回复
引用
查看
#124楼
2008-08-20 19:52
UaToILY[未注册用户]
LZ可以在写上日期嘛....好方便我们来查询版本-_#...最少也要最后的修改日期是XXX
回复
引用
#125楼
2008-09-03 21:04
szcountryboy[未注册用户]
你好,如果有多条信息,对应多个url如何写
回复
引用
#126楼
2008-10-28 13:36
问天何必
足迹
回复
引用
查看
#127楼
2009-06-11 17:19
洋娃娃
楼主,您好,想问下,<A href='javascript:void(0)' hidefocus=true id='btCommand'><FONT color=#ff0000>" + this.message + "</FONT></A>,如果我想在function里取a的对象怎么取?
回复
引用
#128楼
2010-01-25 11:50
guigui_xi'an city
太帅了
回复
引用
查看
#129楼
2011-04-14 19:14
XIAO☆YE
要能实现点击消息弹出一个页面要重写这个方法
CLASS_MSN_MESSAGE.prototype.oncommand = function(){
this.close = true;
this.hide();
}
改为这样式式
CLASS_MSN_MESSAGE.prototype.oncommand = function(){
var url='
http://www.baidu.com';
window.open(url);
}
回复
引用
查看
#130楼
2011-04-14 19:15
XIAO☆YE
@
洋娃娃
要能实现点击消息弹出一个页面要重写这个方法
CLASS_MSN_MESSAGE.prototype.oncommand = function(){
this.close = true;
this.hide();
}
改为这样式式
CLASS_MSN_MESSAGE.prototype.oncommand = function(){
var url='
http://www.baidu.com';
window.open(url);
}
回复
引用
查看
#131楼
2011-04-14 19:15
XIAO☆YE
@
ttyp
要能实现点击消息弹出一个页面要重写这个方法
CLASS_MSN_MESSAGE.prototype.oncommand = function(){
this.close = true;
this.hide();
}
改为这样式式
CLASS_MSN_MESSAGE.prototype.oncommand = function(){
var url='
http://www.baidu.com';
window.open(url);
}
回复
引用
查看
#132楼
2011-04-14 19:16
XIAO☆YE
@
听棠.NET
要能实现点击消息弹出一个页面要重写这个方法
CLASS_MSN_MESSAGE.prototype.oncommand = function(){
this.close = true;
this.hide();
}
改为这样式式
CLASS_MSN_MESSAGE.prototype.oncommand = function(){
var url='
http://www.baidu.com';
window.open(url);
}
回复
引用
查看
评论共2页:
上一页
1
2
注册用户登录后才能发表评论,请
登录
或
注册
,
返回博客园首页
。
首页
博问
闪存
新闻
园子
招聘
知识库
最新IT新闻
:
·
瑞士公司对苹果提起新专利权诉讼
·
微软看重平板市场:ARM版Win8与x86版同步推
·
多家机构上调LinkedIn目标价 维持买入评级
·
索尼诺基亚卷入裁员潮:危机中竞争更加激烈
·
Google 突袭家庭娱乐领域:为什么说收购摩托罗拉在这里会起作用
»
更多新闻...
最新知识库文章
:
·
高级编程语言的发展历程
·
如何学习一门新的编程语言?
·
学习不同编程语言的重要性
·
为什么我喜欢富于表达性的编程语言
·
计算机专业的女生为什么要学编程
»
更多知识库文章...
China-pub 2011秋季教材巡展
China-Pub 计算机绝版图书按需印刷服务
<
2005年3月
>
日
一
二
三
四
五
六
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
公告
昵称:
ttyp
园龄:
7年7个月
粉丝:
10
关注:
0
搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
随笔分类
(40)
ASP.NET(11)
(rss)
ERP
(rss)
Visual Basic(2)
(rss)
安全
(rss)
脚本(27)
(rss)
软件架构
(rss)
项目管理
(rss)
随笔档案
(51)
2009年4月 (4)
2007年9月 (2)
2007年7月 (2)
2007年5月 (1)
2007年1月 (1)
2006年11月 (1)
2006年9月 (2)
2006年5月 (1)
2006年4月 (1)
2006年3月 (1)
2005年12月 (2)
2005年11月 (1)
2005年10月 (1)
2005年8月 (1)
2005年7月 (3)
2005年6月 (3)
2005年5月 (2)
2005年4月 (1)
2005年3月 (6)
2005年2月 (1)
2005年1月 (4)
2004年11月 (2)
2004年10月 (1)
2004年9月 (1)
2004年8月 (6)
文章分类
(11)
非技术(11)
(rss)
技术
(rss)
文章档案
(17)
2009年1月 (1)
2005年8月 (1)
2005年6月 (11)
2005年4月 (4)
相册
示例图片
Blog
网络虫虫
CC
AJAX
dotMsn
itpub
log4net
msn协议
NUnit
sharpdevelop
sourceforge
Sqlite
xml.org.cn
脚本学习
软件架构
三库四平台
图标集中营
无忧脚本
系统分析员
正则库
中国ui
中国标准xml
Visual Basic
21code
freevbcode
planet-source-code
其他
百姓厨房
江西搜才网
全采用EXT的富客户端架构,操作方便,界面整洁,速度超快
积分与排名
积分 - 396819
排名 - 159
最新评论
阅读排行榜
评论排行榜
推荐排行榜