【分享】Web的桌面提醒(Popup,类似msn,outlook等的信息提示)
昨晚加班,无意找到一些类似msn,outlook等的信息提示的资料,今天把它整理了一下,然后自己测试通过,先分享出来,如果大伙在发送邮件或需要弹出信息对话框时,可以做个参考,也希望这段代码能越来越好,大家多提意见。
1.建立PopupManager.js,代码如下
// 队列
function Queue()
{
var items = new Array();
var first = 0;
var count = 0;
// 队列大小
this.Count = function()
{
return count;
} ;
// 取队列头/尾
this.Peek = function(last)
{
var result = null;
if (count > 0)
{
if (null != last && true == last)
result = items[first + (count - 1)];
else
result = items[first];
}
return result;
};
// 入列
this.Enqueue = function(x)
{
items[first + count] = x;
count++;
return x;
};
// 出列
this.Dequeue = function()
{
var result = null;
if (count > 0)
{
result = items[first];
delete items[first];
first++;
count--;
}
return result;
};
}
var newlineRegExp = new RegExp("(\r\n|\n|\r)", "g");
function NewlineReplace(str)
{
result = "";
if (str != null)
result = str.replace(newlineRegExp, "<br>");
return result;
}
var entityList = new Array();
entityList["<"] = "<";
entityList["\uff1c"] = "<";
entityList[">"] = ">";
entityList["\uff1e"] = ">";
entityList["&"] = "&";
entityList["\uff06"] = "&";
entityList["\""] = """;
entityList["\uff02"] = """;
function EntityReplace(str)
{
var result = "";
if (str != null)
{
var len = str.length;
var i = 0;
while (i < len)
{
var j = i;
var e = entityList[str.charAt(j)];
while (j < len && null == e)
{
j++;
e = entityList[str.charAt(j)];
}
result += str.substr(i, j - i);
if (e != null)
{
result += e;
j++;
}
i = j;
}
}
return result;
}
function GetPopupCssText()
{
var styles = document.styleSheets;
var csstext = "";
for(var i=0; i<styles.length; i++)
{
if (styles[i].id == "popupmanager")
csstext += styles[i].cssText;
}
return csstext;
}
function PopupWin(winID)
{
this.Win = document.getElementById(winID);
this.Menu = document.getElementById(winID + "_Menu");
this.Icon = document.getElementById(winID + "_Icon");
this.MenuButton = document.getElementById(winID + "_MenuButton");
this.CloseButton = document.getElementById(winID + "_CloseButton");
this.Caption = document.getElementById(winID + "_Caption");
this.CaptionText = document.getElementById(winID + "_CaptionText");
this.Body = document.getElementById(winID + "_Body");
this.BodyText = document.getElementById(winID + "_BodyText");
}
function Popup(winID, message, icon, title, func)
{
this.PostID;
this.URL;
this.Type = "Mail"; // Mail,Thread,Post,Message
this.win = new PopupWin(winID);
this.popup = null;
this.popupMenu = null;
this.PopupManager = null;
this.showTime = null;
this.func = func;
this.isMouseOver = false;
this.CreateBody = Popup_CreateBody;
this.Close = Popup_Close;
this.Hide = Popup_Hide;
this.Show = Popup_Show;
this.ShowTime = Popup_ShowTime;
this.aspxl = this.CreateBody(message, icon, title);
}
function Popup_Close()
{
if (this.popup != null)
this.popup.document.onmouseover = null;
else
this.win.Win.onmouseover = null;
this.isMouseOver = false;
this.ShowTime = function()
{
return 7;
}
this.Hide();
}