前幾天在網上找了許多資料,看了不少兄弟的源碼,一直找不到合適的,要不就是拖動有問題,要不就是不兼容Firefox,所以自已寫了一個,下面是代碼:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
<html xmlns="
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文檔</title>
<script language="javascript">
function alertWin(title, msg, w, h){
?var titleheight = "22px"; // 提示窗口標題高度
?var bordercolor = "#666699"; // 提示窗口的邊框顏色
?var titlecolor = "#FFFFFF"; // 提示窗口的標題顏色
?var titlebgcolor = "#666699"; // 提示窗口的標題背景色
?var bgcolor = "#FFFFFF"; // 提示內容的背景色
?
?var iWidth = document.documentElement.clientWidth;
?var iHeight = document.documentElement.clientHeight;
?var bgObj = document.createElement("div");
?bgObj.style.cssText = "position:absolute;left:0px;top:0px;width:"+iWidth+"px;height:"+Math.max(document.body.clientHeight, iHeight)+"px;filter:Alpha(Opacity=30);opacity:0.3;background-color:#000000;z-index:101;";
?document.body.appendChild(bgObj);
?
?var msgObj=document.createElement("div");
?msgObj.style.cssText = "position:absolute;font:11px '宋體';top:"+(iHeight-h)/2+"px;left:"+(iWidth-w)/2+"px;width:"+w+"px;height:"+h+"px;text-align:center;border:1px solid "+bordercolor+";background-color:"+bgcolor+";padding:1px;line-height:22px;z-index:102;";
?document.body.appendChild(msgObj);
?
?var table = document.createElement("table");
?msgObj.appendChild(table);
?table.style.cssText = "margin:0px;border:0px;padding:0px;";
?table.cellSpacing = 0;
?var tr = table.insertRow(-1);
?var titleBar = tr.insertCell(-1);
?titleBar.style.cssText = "width:100%;height:"+titleheight+"px;text-align:left;padding:3px;margin:0px;font:bold 13px '宋體';color:"+titlecolor+";border:1px solid " + bordercolor + ";cursor:move;background-color:" + titlebgcolor;
?titleBar.style.paddingLeft = "10px";
?titleBar.innerHTML = title;
?var moveX = 0;
?var moveY = 0;
?var moveTop = 0;
?var moveLeft = 0;
?var moveable = false;
?var docMouseMoveEvent = document.onmousemove;
?var docMouseUpEvent = document.onmouseup;
?titleBar.onmousedown = function() {
??var evt = getEvent();
??moveable = true;
??moveX = evt.clientX;
??moveY = evt.clientY;
??moveTop = parseInt(msgObj.style.top);
??moveLeft = parseInt(msgObj.style.left);
??
??document.onmousemove = function() {
???if (moveable) {
????var evt = getEvent();
????var x = moveLeft + evt.clientX - moveX;
????var y = moveTop + evt.clientY - moveY;
????if ( x > 0 &&( x + w < iWidth) && y > 0 && (y + h < iHeight) ) {
?????msgObj.style.left = x + "px";
?????msgObj.style.top = y + "px";
????}
???}?
??};
??document.onmouseup = function () {
???if (moveable) {
????document.onmousemove = docMouseMoveEvent;
????document.onmouseup = docMouseUpEvent;
????moveable = false;
????moveX = 0;
????moveY = 0;
????moveTop = 0;
????moveLeft = 0;
???}
??};
?}
?
?var closeBtn = tr.insertCell(-1);
?closeBtn.style.cssText = "cursor:pointer; padding:2px;background-color:" + titlebgcolor;
?closeBtn.innerHTML = "<span style='font-size:15pt; color:"+titlecolor+";'>×</span>";
?closeBtn.onclick = function(){
??document.body.removeChild(bgObj);
??document.body.removeChild(msgObj);
?}
?var msgBox = table.insertRow(-1).insertCell(-1);
?msgBox.style.cssText = "font:10pt '宋體';";
?msgBox.colSpan? = 2;
?msgBox.innerHTML = msg;
?
??? // 獲得事件Event對象,用于兼容IE和FireFox
??? function getEvent() {
???? return window.event || arguments.callee.caller.arguments[0];
??? }
}
</script>
</head>
<body>
<input type="button" value="點這里" onclick="alertWin('標題','這里是內容',300,200);" />
</body>
</html>
IE7.0、Firefox2.0、Opera9.0測試通過
歡迎大家指教批評

前段時間一直在研究Js,網上有很多關于兼容瀏覽器方面的文章,給大家找了幾個:
http://blog.csdn.net/zqian1987/archive/2008/03/02/2140055.aspx
http://www.cnblogs.com/jacklong/archive/2008/01/10/1033954.html
做瀏覽器兼容的工作真是一件相當痛苦的事,期待遵守標準的IE8盡快發布
出下面寫寫我這段時間的一些心得,主要介紹兼容IE和FireFox方面,Opera9.0前的版本好像N多東西不支持,暫時不介紹,Opera9.0以后的版本在Javascript解釋方面和FireFox比較接近。
我介紹的都是一些細節方面的東西,側重于寫一些不常見的情況,想到新的我會持續補充:
1、創建一個Element,通用的寫法為createElement("
div")
? ?IE中也可以這樣寫createElement("<
div style='color:#FFFFFF'>"),但Firefox不認
2、IE中的width、height與Firefox中概念不同,IE中width=FireFox中的width+2*borderWidth+2*Padding
? ?參見:http://help.powereasy.net/Template/WEB/1557.html
3、動態添加css代碼
? ?IE:
復制內容到剪貼板
代碼:
cssStr = "p { color:#FF0000;} a { font-size:9pt;}";
var style = win.document.createStyleSheet();
style.cssText = cssStr;
FireFox:
復制內容到剪貼板
代碼:
cssStr = "p { color:#FF0000;} a { font-size:9pt;}";
var style = win.document.createElement("style");
style.type = "text/css";
style.innerHTML = cssStr;
win.document.getElementsByTagName("HEAD").item(0).appendChild(style);
4、table在后面添加加行或列,通用寫法insertRow(-1),insertCell(-1)
? ?IE中insertRow(),insertCell()這樣寫也可以,Firefox不認
5、警告對話框alert(),IE中書寫時無參數則默認參數為空字符串,Firefox中則必須輸入參數,傳空參數則要寫成alert("");
6、給element.style.width賦值必須寫成24px,只寫數字24的話,FireFox會不認,IE里都可以
7、在使用Element,并給其綁定了onclick、onmouseover、onmousedown、onmouseout等事件
? ? element.onclick = function() { alert("hello kitty"); };
? ?時,需注意
? ?將此元素添加到上級元素上時要用appendChild,不可以在上級中使用innerHTML操作,這樣會使事件無效
8、獲得事件和事件源
? ?IE:事件:window.event
? ?? ?事件源:window.event.srcElement
? ?FireFox:事件:arguments.callee.caller.arguments[0]
? ?? ?? ?? ???事件源:arguments.callee.caller.arguments[0].target
9、在選中區域粘貼HTML
? ?IE:
復制內容到剪貼板
代碼:
var r = window.document.selection.createRange();
range.pasteHTML("HTML代碼");
FireFox:
復制內容到剪貼板
代碼:
var r = window.getSelection().getRangeAt(0);
var oFragment = r.createContextualFragment(“HTML代碼”);
r.deleteContents();
r.insertNode(oFragment);
[
本帖最后由 linshushi 于 2008-4-10 14:36 編輯 ]