亚洲av乱码一区二区三区 ,亚洲短视频男人的影院,亚洲免费视频网址http://m.tkk7.com/WshmAndLily/category/9417.htmlzh-cnFri, 17 Jun 2011 22:14:42 GMTFri, 17 Jun 2011 22:14:42 GMT60兼容IE8、火狐的本地圖片預覽+等比例縮放http://m.tkk7.com/WshmAndLily/articles/352454.htmlsemovysemovyThu, 16 Jun 2011 10:13:00 GMThttp://m.tkk7.com/WshmAndLily/articles/352454.htmlhttp://m.tkk7.com/WshmAndLily/comments/352454.htmlhttp://m.tkk7.com/WshmAndLily/articles/352454.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/352454.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/352454.html轉自http://it.oyksoft.com/post/974/


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">    
<html xmlns="http://www.w3.org/1999/xhtml">    
<head>    
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    
<title>Firefox3,IE6,IE7,IE8上傳圖片預覽</title>    
<style type="text/css">    
#preview_wrapper{     
    display:inline-block;     
    width:300px;     
    height:300px;     
    background-color:#CCC;     
}     
#preview_fake{ /* 該對象用戶在IE下顯示預覽圖片 */     
    filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);     
}     
#preview_size_fake{ /* 該對象只用來在IE下獲得圖片的原始尺寸,無其它用途 */     
    filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image);       
    visibility:hidden;     
}     
#preview{ /* 該對象用戶在FF下顯示預覽圖片 */     
    width:300px;     
    height:300px;     
}     
</style>    
    
<script type="text/javascript">    
function onUploadImgChange(sender){     
    if( !sender.value.match( /.jpg|.gif|.png|.bmp/i ) ){     
        alert('圖片格式無效!');     
        return false;     
    }     
         
    var objPreview = document.getElementById( 'preview' );     
    var objPreviewFake = document.getElementById( 'preview_fake' );     
    var objPreviewSizeFake = document.getElementById( 'preview_size_fake' );     
         
    if( sender.files &&  sender.files[0] ){     
        objPreview.style.display = 'block';     
        objPreview.style.width = 'auto';     
        objPreview.style.height = 'auto';     
             
        // Firefox 因安全性問題已無法直接通過 input[file].value 獲取完整的文件路徑     
        objPreview.src = sender.files[0].getAsDataURL();         
    }else if( objPreviewFake.filters ){      
        // IE7,IE8 在設置本地圖片地址為 img.src 時出現莫名其妙的后果     
        //(相同環境有時能顯示,有時不顯示),因此只能用濾鏡來解決     
             
        // IE7, IE8因安全性問題已無法直接通過 input[file].value 獲取完整的文件路徑     
        sender.select();     
        var imgSrc = document.selection.createRange().text;     
             
        objPreviewFake.filters.item(     
            'DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc;     
        objPreviewSizeFake.filters.item(     
            'DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc;     
             
        autoSizePreview( objPreviewFake,      
            objPreviewSizeFake.offsetWidth, objPreviewSizeFake.offsetHeight );     
        objPreview.style.display = 'none';     
    }     
}     
    
function onPreviewLoad(sender){     
    autoSizePreview( sender, sender.offsetWidth, sender.offsetHeight );     
}     
    
function autoSizePreview( objPre, originalWidth, originalHeight ){     
    var zoomParam = clacImgZoomParam( 300, 300, originalWidth, originalHeight );     
    objPre.style.width = zoomParam.width + 'px';     
    objPre.style.height = zoomParam.height + 'px';     
    objPre.style.marginTop = zoomParam.top + 'px';     
    objPre.style.marginLeft = zoomParam.left + 'px';     
}     
    
function clacImgZoomParam( maxWidth, maxHeight, width, height ){     
    var param = { width:width, height:height, top:0, left:0 };     
         
    if( width>maxWidth || height>maxHeight ){     
        rateWidth = width / maxWidth;     
        rateHeight = height / maxHeight;     
             
        if( rateWidth > rateHeight ){     
            param.width =  maxWidth;     
            param.height = height / rateWidth;     
        }else{     
            param.width = width / rateHeight;     
            param.height = maxHeight;     
        }     
    }     
         
    param.left = (maxWidth - param.width) / 2;     
    param.top = (maxHeight - param.height) / 2;     
         
    return param;     
}     
</script>    
    
</head>    
    
<body>    
    <div id="preview_wrapper">    
        <div id="preview_fake">    
            <img id="preview" onload="onPreviewLoad(this)"/>    
        </div>    
    </div>    
    <br/>    
    <input id="upload_img" type="file" onchange="onUploadImgChange(this)"/>    
    <br/>    
    <img id="preview_size_fake"/>    
</body>    
</html>

semovy 2011-06-16 18:13 發表評論
]]>
Javascript 方法大全http://m.tkk7.com/WshmAndLily/articles/238335.htmlsemovysemovyMon, 03 Nov 2008 06:33:00 GMThttp://m.tkk7.com/WshmAndLily/articles/238335.htmlhttp://m.tkk7.com/WshmAndLily/comments/238335.htmlhttp://m.tkk7.com/WshmAndLily/articles/238335.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/238335.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/238335.html閱讀全文

semovy 2008-11-03 14:33 發表評論
]]>
JAVASCRIPT校驗大全http://m.tkk7.com/WshmAndLily/articles/238334.htmlsemovysemovyMon, 03 Nov 2008 06:28:00 GMThttp://m.tkk7.com/WshmAndLily/articles/238334.htmlhttp://m.tkk7.com/WshmAndLily/comments/238334.htmlhttp://m.tkk7.com/WshmAndLily/articles/238334.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/238334.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/238334.html閱讀全文

semovy 2008-11-03 14:28 發表評論
]]>
調用qq的方法http://m.tkk7.com/WshmAndLily/articles/237519.htmlsemovysemovyThu, 30 Oct 2008 01:08:00 GMThttp://m.tkk7.com/WshmAndLily/articles/237519.htmlhttp://m.tkk7.com/WshmAndLily/comments/237519.htmlhttp://m.tkk7.com/WshmAndLily/articles/237519.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/237519.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/237519.html

調用qq的方法:
<A href="tencent://message/?uin=20989163&Site=博客園&Menu=yes"
target=blank><IMG alt=點擊這里給我發消息 src="http://wpa.qq.com/pa?p=1:20989163:11"
border=0></A>

調用msn的方法:
<A href="msnim:chat?contact=xxqq0824@hotmail.com" target=blank>點這里和我MSN聊天</A>

放在頁面上就能出效果了!



1.如何在網頁上顯示騰訊QQ在線洽談?

QQ在線咨詢代碼(qq在線交談代碼/qq在線客服代碼/qq在線狀態代碼/qq在線客服代碼)
(將123456換成你的號碼,site后面換成你的網站就可以了)

  1. <a target="blank" href="http://wpa.qq.com/msgrd?V=1&Uin=12345678&Site=精品空間論壇& Menu=yes"><img border="0" SRC=http://wpa.qq.com/pa?p=1:12345678:6 alt="點擊這里給我發消息" align="absmiddle"></a>

更多的生成顯示QQ在線狀態的代碼,請查看騰訊官方網站
http://imis.qq.com/webpresence/code.shtml
你只需要填寫你的號碼,網站名稱以及提示就可以點擊生成就可以生成QQ在線狀態的代碼,拷貝生成的代碼加入網頁即可

2.阿里巴巴貿易通在線狀態代碼生成,eric改成你的ID就行了,還有ALT改成你的內容

  1. <a target=_blank ><img _fcksavedurl=""http://scs1.sh1.china.alibaba.com/msg.atc?v=1&uid=mengsajewel"><img" border=0 src="http://scs1.sh1.china.alibaba.com/online.atc?v=1&uid=eric&s=2" alt="精品空間論壇 eric" align="absmiddle"></a>

更多的阿里巴巴貿易通在線狀態代碼生成樣式,請查看阿里巴巴官方網站
http://club.china.alibaba.com/club/block/alitalk/alitalkfire.html


3.skype在線狀態代碼生成
將eric換成你的skype ID就可以了,需要在skype個人賬戶里設置對任何人顯示狀態

  1. <a href="skype:eric?call" _fcksavedurl=""skype:venky1979?call"" on-click="return skypeCheck();"><img src=http://mystatus.skype.com/smallclassic/eric style="border: none;" alt="Call me!" /></a>

更多的skype在線狀態代碼生成樣式,請查看skype的官方網站
http://www.skype.com/share/buttons/

4.如何生成MSN在線狀態代碼
可以設置自定義顯示圖片,不過檢測速度有點慢,另外一部分人在msn的配置中,設置了不加好友就不顯示在線。這是為了個人隱私保護,但這樣會顯示狀態未知或者離線。如果你不介意別人看到你,就開啟那個選項就好了。

  1. <!--MSN即時交談代碼開始 -->
  2.     <Script language=javascript>
  3.     function SendMSNMessage(name)
  4.     {
  5.     //Send a message through MSN , only for IE
  6.     //and you must have installed MSN or Window Message
  7.     MsgrObj.InstantMessage(name);
  8.     }
  9.     function AddMSNContact(name)
  10.     {
  11.     //Add a people to MSN , only for IE
  12.     //and you must have installed MSN or Window Message
  13.     MsgrObj.AddContact(0, name);
  14.     }
  15.     </script>
  16.     <object id="MsgrObj" classid="clsid:B69003B3-C55E-4B48-836C-BC5946FC3B28"
  17.     codetype="application/x-
  18.     oleobject" width="0" height="0"></object>
  19.     <input type=image src="images/MSN.gif" alt="在線MSN交流" onClick="SendMSNMessage
  20.     ('[email]meskyes@hotmail.com[/email]')" />
  21.     <!--MSN在線交談代碼結束 -->

6:雅虎

將admin@hichf.com換成您自己的:

  1. <a target="_blank"><img src="http://opium3.msg.vip.mud.yahoo.com/online?u=admin@hichf.com&t=1&l=cn" alt="在網頁上就能直接與我們交談!" width=82 height=22 hspace="5" border="0" align="absmiddle" /></a>

7.在線客服的代碼

有很多朋友問我在線客服的代碼,貌似網上也找不到好用的,因此打算把自己珍藏的代碼拿出來給大家分性享一下,很好用。

按鈕部分,我是用圖片來做例子

  1. <SPAN style="CURSOR: hand"
  2.     onclick="javascript:addMSN('[email]admin@hichf.com[/email]');"><IMG
  3.     src="kefu.gif" border=0> </SPAN>
  4.     <DIV style="DISPLAY: none">
  5.     <OBJECT id=MsgrUIA height=0 codeType=application/x-oleobject width=0
  6.     classid=clsid:B69003B3-C55E-4b48-836C-BC5946FC3B28></OBJECT></DIV>

JS部分:

  1. <SCRIPT language=javascript>
  2.     <!--
  3.     function addMSN (address) {
  4.        if (MsgrUIA.MyStatus == 1)
  5.        {
  6.        alert('您的MSN沒有登陸,請先登陸');
  7.        }
  8.        else if(MsgrUIA.MyStatus == 2 || MsgrUIA.MyStatus == 10 || MsgrUIA.MyStatus == 14 || MsgrUIA.MyStatus == 34 || MsgrUIA.MyStatus == 50 || MsgrUIA.MyStatus == 66 || MsgrUIA.MyStatus == 6) {   //2,10, 14, 34, 50,66,6
  9.        MsgrUIA.InstantMessage(address);
  10.        }
  11.        else if (MsgrUIA.MyStatus == 512 || MsgrUIA.MyStatus == 768)
  12.        {
  13.        alert('您的MSN正在登陸,請稍等');
  14.        }
  15.        else {
  16.        alert('錯誤代碼:'+   MsgrUIA.MyStatus   + '。您沒有安裝MSN或使用的不是IE瀏覽器,請安裝MSN并手動添加' + address );
  17.        }
  18.     }
  19.     -->
  20.     </SCRIPT>

ENGLISH

  1. <SCRIPT language=javascript>
  2.     <!--
  3.     function addMSN (address) {
  4.        if (MsgrUIA.MyStatus == 1)
  5.        {
  6.        alert('Add a people to MSN , only for IE and you must have installed MSN or Window Message');
  7.        }
  8.        else if(MsgrUIA.MyStatus == 2 || MsgrUIA.MyStatus == 10 || MsgrUIA.MyStatus == 14 || MsgrUIA.MyStatus == 34 || MsgrUIA.MyStatus == 50 || MsgrUIA.MyStatus == 66 || MsgrUIA.MyStatus == 6) {   //2,10, 14, 34, 50,66,6
  9.        MsgrUIA.InstantMessage(address);
  10.        }
  11.        else if (MsgrUIA.MyStatus == 512 || MsgrUIA.MyStatus == 768)
  12.        {
  13.        alert('Logining Now,Please wait!');
  14.        }
  15.        else {
  16.        alert('Error:'+   MsgrUIA.MyStatus   + '。Send a message through MSN , only for IE and you must have installed MSN or Window Message' + address );
  17.        }
  18.     }
  19.     -->
  20.     </SCRIPT>

以上代碼已經不支持msn8.0,MSN 8.0的代碼

  1. <A title="請確保XP版本以上的Windows并安裝好MSN,或者手動添加地址。" href="msnim:chat?contact=admin@hichf.com"   target=_blank>給zanpo發消息</A>

收藏自:CHF精品論壇



semovy 2008-10-30 09:08 發表評論
]]>
得到頁面body區域內容的高度 http://m.tkk7.com/WshmAndLily/articles/214446.htmlsemovysemovySat, 12 Jul 2008 08:56:00 GMThttp://m.tkk7.com/WshmAndLily/articles/214446.htmlhttp://m.tkk7.com/WshmAndLily/comments/214446.htmlhttp://m.tkk7.com/WshmAndLily/articles/214446.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/214446.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/214446.html
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>New Page 1</title>
</head>

<body>

<SCRIPT  LANGUAGE="JavaScript">  
var    s  =  "";  
s  +=  "\r\n網頁可見區域寬:"+  document.body.clientWidth;  
s  +=  "\r\n網頁可見區域高:"+  document.body.clientHeight;  
s  +=  "\r\n網頁可見區域高:"+  document.body.offsetWeight  +"  (包括邊線的寬)";  
s  +=  "\r\n網頁可見區域高:"+  document.body.offsetHeight  +"  (包括邊線的寬)";  
s  +=  "\r\n網頁正文全文寬:"+  document.body.scrollWidth;  
s  +=  "\r\n網頁正文全文高:"+  document.body.scrollHeight;  
s  +=  "\r\n網頁被卷去的高:"+  document.body.scrollTop;  
s  +=  "\r\n網頁被卷去的左:"+  document.body.scrollLeft;  
s  +=  "\r\n網頁正文部分上:"+  window.screenTop;  
s  +=  "\r\n網頁正文部分左:"+  window.screenLeft;  
s  +=  "\r\n屏幕分辨率的高:"+  window.screen.height;  
s  +=  "\r\n屏幕分辨率的寬:"+  window.screen.width;  
s  +=  "\r\n屏幕可用工作區高度:"+  window.screen.availHeight;  
s  +=  "\r\n屏幕可用工作區寬度:"+  window.screen.availWidth;  
alert(s);  
</SCRIPT>

</body>

</html>

semovy 2008-07-12 16:56 發表評論
]]>
Javascript面向對象特性(轉載)http://m.tkk7.com/WshmAndLily/articles/210821.htmlsemovysemovyThu, 26 Jun 2008 06:21:00 GMThttp://m.tkk7.com/WshmAndLily/articles/210821.htmlhttp://m.tkk7.com/WshmAndLily/comments/210821.htmlhttp://m.tkk7.com/WshmAndLily/articles/210821.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/210821.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/210821.html閱讀全文

semovy 2008-06-26 14:21 發表評論
]]>
轉一個。。js在IE與firefox的差別。。。http://m.tkk7.com/WshmAndLily/articles/210820.htmlsemovysemovyThu, 26 Jun 2008 06:20:00 GMThttp://m.tkk7.com/WshmAndLily/articles/210820.htmlhttp://m.tkk7.com/WshmAndLily/comments/210820.htmlhttp://m.tkk7.com/WshmAndLily/articles/210820.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/210820.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/210820.html1.firefox不能對innerText支持。
firefox支持innerHTML但卻不支持innerText,它支持textContent來實現innerText,不過默認把多余的空格也保留了。如果不用textContent,如果字符串里面不包含HTML代碼也可以用innerHTML代替。

2.禁止選取網頁內容:
在IE中一般用js:obj.onselectstart=function(){return false;}
而firefox用CSS:-moz-user-select:none

3.濾鏡的支持(例:透明濾鏡):
IE:filter:alpha(opacity=10);
firefox:-moz-opacity:.10;

4.捕獲事件:
IE:obj.setCapture() 、obj.releaseCapture()
Firefox: document.addEventListener("mousemove",mousemovefunction,true);
document.removeEventListener("mousemove",mousemovefunction,true);

5.獲取鼠標位置:
IE:event.clientX、event.clientY
firefox:需要事件函數傳遞事件對象
obj.onmousemove=function(ev){
     X= ev.pageX;Y=ev.pageY;
}

6.DIV等元素的邊界問題:
比如:設置一個div的CSS::{width:100px;height:100px;border:#000000 1px solid;}
IE中:div的寬度(包括邊框寬度):100px,div的高度(包括邊框寬度):100px;
而firefox:div的寬度(包括邊框寬度):102px,div的高度(包括邊框寬度):102px;


所以在做這個兼容IE和firefox的拖動窗口時,在js和css的寫法上要動點腦筋,給大家兩個小技巧

一.判斷瀏覽器類型:
var isIE=document.all? true:false;
我寫了一個變量,如果支持document.all語法那么isIE=true,否則isIE=false

二.在不同瀏覽器下的CSS處理:
一般可以用!important來優先使用css語句(僅firefox支持)
比如:{border-width:0px!important;border-width:1px;}
在firefox下這個元素是沒有邊框的,在IE下邊框寬度是1px

      1.document.formName.item("itemName") 問題
問題說明:IE下,可以使用 document.formName.item("itemName") 或 document.formName.elements ["elementName"];Firefox下,只能使用document.formName.elements["elementName"]。
解決方法:統一使用document.formName.elements["elementName"]。

2.集合類對象問題
問題說明:IE下,可以使用 () 或 [] 獲取集合類對象;Firefox下,只能使用 [ ]獲取集合類對象。
解決方法:統一使用 [] 獲取集合類對象。

3.自定義屬性問題
問題說明:IE下,可以使用獲取常規屬性的方法來獲取自定義屬性,也可以使用 getAttribute() 獲取自定義屬性;Firefox下,只能使用 getAttribute() 獲取自定義屬性。
解決方法:統一通過 getAttribute() 獲取自定義屬性。

4.eval("idName")問題
問題說明:IE下,可以使用 eval("idName") 或 getElementById("idName") 來取得 id 為 idName 的HTML對象;Firefox下,只能使用 getElementById("idName") 來取得 id 為 idName 的HTML對象。
解決方法:統一用 getElementById("idName") 來取得 id 為 idName 的HTML對象。

5.變量名與某HTML對象ID相同的問題
問題說明:IE下,HTML對象的ID可以作為 document 的下屬對象變量名直接使用,Firefox下則不能;Firefox下,可以使用與HTML對象ID相同的變量名,IE下則不能。
解決方法:使用 document.getElementById("idName") 代替 document.idName。最好不要取HTML對象ID相同的變量名,以減少錯誤;在聲明變量時,一律加上var關鍵字,以避免歧義。

6.const問題
問題說明:Firefox下,可以使用const關鍵字或var關鍵字來定義常量;IE下,只能使用var關鍵字來定義常量。
解決方法:統一使用var關鍵字來定義常量。

7.input.type屬性問題
問題說明:IE下 input.type 屬性為只讀;但是Firefox下 input.type 屬性為讀寫。
       解決辦法:不修改 input.type 屬性。如果必須要修改,可以先隱藏原來的input,然后在同樣的位置再插入一個新的input元素。

8.window.event問題
問題說明:window.event 只能在IE下運行,而不能在Firefox下運行,這是因為Firefox的event只能在事件發生的現場使用。
解決方法:在事件發生的函數上加上event參數,在函數體內(假設形參為evt)使用 var myEvent = evt?evt:(window.event?window.event:null)
       示例:<input type="button" onclick="doSomething(event)"/>
<script language="javascript">
function doSomething(evt) {
var myEvent = evt?evt:(window.event?window.event:null)
...
}

       9.event.x與event.y問題
問題說明:IE下,even對象有x、y屬性,但是沒有pageX、pageY屬性;Firefox下,even對象有pageX、pageY屬性,但是沒有x、y屬性。
解決方法:var myX = event.x ? event.x : event.pageX; var myY = event.y ? event.y:event.pageY;
       如果考慮第8條問題,就改用myEvent代替event即可。

10.event.srcElement問題
問題說明:IE下,even對象有srcElement屬性,但是沒有target屬性;Firefox下,even對象有target屬性,但是沒有srcElement屬性。
解決方法:使用srcObj = event.srcElement ? event.srcElement : event.target;
       如果考慮第8條問題,就改用myEvent代替event即可。

11.window.location.href問題
問題說明:IE或者Firefox2.0.x下,可以使用window.location或window.location.href;Firefox1.5.x下,只能使用window.location。
解決方法:使用 window.location 來代替 window.location.href。當然也可以考慮使用 location.replace()方法。

12.模態和非模態窗口問題
問題說明:IE下,可以通過showModalDialog和showModelessDialog打開模態和非模態窗口;Firefox下則不能。
解決方法:直接使用 window.open(pageURL,name,parameters) 方式打開新窗口。
       如果需要將子窗口中的參數傳遞回父窗口,可以在子窗口中使用window.opener來訪問父窗口。如果需要父窗口控制子窗口的話,使用var subWindow = window.open(pageURL,name,parameters); 來獲得新開的窗口對象。

13.frame和iframe問題
以下面的frame為例:
<frame src="xxx.html" id="frameId" name="frameName" />
(1)訪問frame對象
IE:使用window.frameId或者window.frameName來訪問這個frame對象;
Firefox:使用window.frameName來訪問這個frame對象;
       解決方法:統一使用 window.document.getElementById("frameId") 來訪問這個frame對象;

(2)切換frame內容
在IE和Firefox中都可以使用window.document.getElementById("frameId").src = "xxx.html"或window.frameName.location = "xxx.html"來切換frame的內容;
如果需要將frame中的參數傳回父窗口,可以在frame中使用parent關鍵字來訪問父窗口。

14.body載入問題
問題說明:Firefox的body對象在body標簽沒有被瀏覽器完全讀入之前就存在;而IE的body對象則必須在body標簽被瀏覽器完全讀入之后才存在。
       [注] 這個問題尚未實際驗證,待驗證后再來修改。
       [注] 經驗證,IE6、Opera9以及FireFox2中不存在上述問題,單純的JS腳本可以訪問在腳本之前已經載入的所有對象和元素,即使這個元素還沒有載入完成。

15. 事件委托方法
問題說明:IE下,使用 document.body.onload = inject; 其中function inject()在這之前已被實現;在Firefox下,使用 document.body.onload = inject();
解決方法:統一使用 document.body.onload=new Function('inject()'); 或者 document.body.onload = function(){/* 這里是代碼 */}
       [注意] Function和function的區別

16.訪問的父元素的區別
問題說明:在IE下,使用 obj.parentElement 或 obj.parentNode 訪問obj的父結點;在firefox下,使用 obj.parentNode 訪問obj的父結點。
解決方法:因為firefox與IE都支持DOM,因此統一使用obj.parentNode 來訪問obj的父結點。

17.cursor:hand VS cursor:pointer
問題說明:firefox不支持hand,但ie支持pointer ,兩者都是手形指示。
解決方法:統一使用pointer。

18.innerText的問題.
       問題說明:innerText在IE中能正常工作,但是innerText在FireFox中卻不行。
       解決方法:在非IE瀏覽器中使用textContent代替innerText。
       示例:
if(navigator.appName.indexOf("Explorer") >-1){
document.getElementById('element').innerText = "my text";
} else{
document.getElementById('element').textContent = "my text";
}
       [注] innerHTML 同時被ie、firefox等瀏覽器支持,其他的,如outerHTML等只被ie支持,最好不用。

19. 對象寬高賦值問題
  問題說明:FireFox中類似 obj.style.height = imgObj.height 的語句無效。
       解決方法:統一使用 obj.style.height = imgObj.height + 'px';

20. Table操作問題
       問題說明:ie、firefox以及其它瀏覽器對于 table 標簽的操作都各不相同,在ie中不允許對table和tr的innerHTML賦值,使用js增加一個tr時,使用appendChild方法也不管用。
解決方法:
//向table追加一個空行:
var row = otable.insertRow(-1);
var cell = document.createElement("td");
cell.innerHTML = "";
cell.className = "XXXX";
row.appendChild(cell);
       [注] 由于俺很少使用JS直接操作表格,這個問題沒有遇見過。建議使用JS框架集來操作table,如JQuery。

21. ul和ol列表縮進問題
  消除ul、ol等列表的縮進時,樣式應寫成:list-style:none;margin:0px;padding:0px;
其中margin屬性對IE有效,padding屬性對FireFox有效。← 此句表述有誤,詳細見↓
       [注] 這個問題尚未實際驗證,待驗證后再來修改。
       [注] 經驗證,在IE中,設置margin:0px可以去除列表的上下左右縮進、空白以及列表編號或圓點,設置padding對樣式沒有影響;在Firefox中,設置margin:0px僅僅可以去除上下的空白,設置padding:0px后僅僅可以去掉左右縮進,還必須設置list-style:none才能去除列表編號或圓點。也就是說,在IE中僅僅設置margin:0px即可達到最終效果,而在Firefox中必須同時設置margin:0px、padding:0px以及list-style:none三項才能達到最終效果。

22. CSS透明問題
IE:filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60)。
FF:opacity:0.6。
       [注] 最好兩個都寫,并將opacity屬性放在下面。

23. CSS圓角問題
IE:ie7以下版本不支持圓角。
FF: -moz-border-radius:4px,或者-moz-border-radius-topleft:4px;-moz-border- radius-topright:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius- bottomright:4px;。
       [注] 圓角問題是CSS中的經典問題,建議使用JQuery框架集來設置圓角,讓這些復雜的問題留給別人去想吧。

關于CSS中的問題實在太多了,甚至同樣的CSS定義在不同的頁面標準中的顯示效果都是不一樣的。一個合乎發展的建議是,頁面采用標準DHTML標準編寫,較少使用table,CSS定義盡量依照標準DOM,同時兼顧IE、Firefox、Opera等主流瀏覽器。BTW,很多情況下,FF和Opera的CSS解釋標準更貼近CSS標準,也更具有規范性。

semovy 2008-06-26 14:20 發表評論
]]>
壓縮js的網站http://m.tkk7.com/WshmAndLily/articles/209088.htmlsemovysemovyThu, 19 Jun 2008 02:22:00 GMThttp://m.tkk7.com/WshmAndLily/articles/209088.htmlhttp://m.tkk7.com/WshmAndLily/comments/209088.htmlhttp://m.tkk7.com/WshmAndLily/articles/209088.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/209088.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/209088.htmlhttp://www.bananascript.com/index.php?home

semovy 2008-06-19 10:22 發表評論
]]>
js運行客戶端程序http://m.tkk7.com/WshmAndLily/articles/195150.htmlsemovysemovyWed, 23 Apr 2008 08:31:00 GMThttp://m.tkk7.com/WshmAndLily/articles/195150.htmlhttp://m.tkk7.com/WshmAndLily/comments/195150.htmlhttp://m.tkk7.com/WshmAndLily/articles/195150.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/195150.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/195150.html <script>
function exec (command) {
    window.oldOnError = window.onerror;
    window._command = command;
    window.onerror = function (err) {
      if (err.indexOf('utomation') != -1) {
        alert('命令已經被用戶禁止!');
        return true;
      }
      else return false;
    };
    var wsh = new ActiveXObject('WScript.Shell');
    if (wsh)
      wsh.Run(command);
    window.onerror = window.oldOnError;
  }
</script>
調用方式
<a href="javascript:exec('D:/test.bat')">測試</a>//javascript執行本機的可執行程序

semovy 2008-04-23 16:31 發表評論
]]>
escape,encodeURI,encodeURIComponent 比較http://m.tkk7.com/WshmAndLily/articles/192126.htmlsemovysemovyFri, 11 Apr 2008 03:40:00 GMThttp://m.tkk7.com/WshmAndLily/articles/192126.htmlhttp://m.tkk7.com/WshmAndLily/comments/192126.htmlhttp://m.tkk7.com/WshmAndLily/articles/192126.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/192126.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/192126.htmljs對文字進行編碼涉及3個函數:escape,encodeURI,encodeURIComponent,

相應3個解碼函數:unescape,decodeURI,decodeURIComponent

1、   傳遞參數時需要使用encodeURIComponent,這樣組合的url才不會被#等特殊字符截斷。                            

例如:<script language="javascript">document.write('<a );</script>

2、   進行url跳轉時可以整體使用encodeURI

例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");

3、   js使用數據時可以使用escape

[Huoho.Com編輯]

例如:搜藏中history紀錄。

4、   escape對0-255以外的unicode值進行編碼時輸出%u****格式,其它情況下escape,encodeURI,encodeURIComponent編碼結果相同。


最多使用的應為encodeURIComponent,它是將中文、韓文等特殊字符轉換成utf-8格式的url編碼,所以如果給后臺傳遞參數需要使用encodeURIComponent時需要后臺解碼對utf-8支持(form中的編碼方式和當前頁面編碼方式相同)

escape不編碼字符有69個:*,+,-,.,/,@,_,0-9,a-z,A-Z

encodeURI不編碼字符有82個:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

encodeURIComponent不編碼字符有71個:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z



semovy 2008-04-11 11:40 發表評論
]]>
js常用的事件對象http://m.tkk7.com/WshmAndLily/articles/191681.htmlsemovysemovyWed, 09 Apr 2008 14:11:00 GMThttp://m.tkk7.com/WshmAndLily/articles/191681.htmlhttp://m.tkk7.com/WshmAndLily/comments/191681.htmlhttp://m.tkk7.com/WshmAndLily/articles/191681.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/191681.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/191681.html事件源對象
event.srcElement.tagName
event.srcElement.type
  • 捕獲釋放
    event.srcElement.setCapture(); 
    event.srcElement.releaseCapture(); 
  • 事件按鍵
    event.keyCode
    event.shiftKey
    event.altKey
    event.ctrlKey
  • 事件返回值
    event.returnValue
  • 鼠標位置
    event.x
    event.y
  • 窗體活動元素
    document.activeElement
  • 綁定事件
    document.captureEvents(Event.KEYDOWN);
  • 訪問窗體元素
    document.all("txt").focus();
    document.all("txt").select();
  • 窗體命令
    document.execCommand
  • 窗體COOKIE
    document.cookie
  • 菜單事件
    document.oncontextmenu
  • 創建元素
    document.createElement("SPAN"); 
  • 根據鼠標獲得元素:
    document.elementFromPoint(event.x,event.y).tagName=="TD
    document.elementFromPoint(event.x,event.y).appendChild(ms) 
  • 窗體圖片
    document.images[索引]
  • 窗體事件綁定
    document.onmousedown=scrollwindow;
  • 元素
    document.窗體.elements[索引]
  • 對象綁定事件
    document.all.xxx.detachEvent('onclick',a);
  • 插件數目
    navigator.plugins
  • 取變量類型
    typeof($js_libpath) == "undefined"
  • 下拉框
    下拉框.options[索引]
    下拉框.options.length
  • 查找對象
    document.getElementsByName("r1");
    document.getElementById(id);
  • 定時
    timer=setInterval('scrollwindow()',delay);
    clearInterval(timer);
  • UNCODE編碼
    escape() ,unescape
  • 父對象
    obj.parentElement(dhtml)
    obj.parentNode(dom)
  • 交換表的行
    TableID.moveRow(2,1)
  • 替換CSS
    document.all.csss.href = "a.css";
  • 并排顯示
    display:inline
  • 隱藏焦點
    hidefocus=true
  • 根據寬度換行
    style="word-break:break-all"
  • 自動刷新
    <meta HTTP-EQUIV="refresh" CONTENT="8;URL=http://c98.yeah.net">
  • 簡單郵件
    <a  href="
    mailto:aaa@bbb.com?subject=ccc&body=xxxyyy"> 
  • 快速轉到位置
    obj.scrollIntoView(true)

  • <a name="first">
    <a href="#first">anchors</a>
  • 網頁傳遞參數
    location.search();
  • 可編輯
    obj.contenteditable=true
  • 執行菜單命令
    obj.execCommand
  • 雙字節字符
    /[^\x00-\xff]/
    漢字
    /[\u4e00-\u9fa5]/
  • 讓英文字符串超出表格寬度自動換行
    word-wrap: break-word; word-break: break-all;
  • 透明背景
    <IFRAME src="/1.htm" width=300 height=180 allowtransparency></iframe>
  • 獲得style內容
    obj.style.cssText
  • HTML標簽
    document.documentElement.innerHTML
  • 第一個style標簽
    document.styleSheets[0]
  • style標簽里的第一個樣式
    document.styleSheets[0].rules[0]
  • 防止點擊空鏈接時,頁面往往重置到頁首端。
    <a href="javascript:function()">word</a>
  • 上一網頁源
    asp:
    request.servervariables("HTTP_REFERER")
    javascript:
    document.referrer
  • 釋放內存
    CollectGarbage();
  • 禁止右鍵
    document.oncontextmenu = function() { return false;}
  • 禁止保存
    <noscript><iframe src="/*.htm"></iframe></noscript>
  • 禁止選取<body oncontextmenu="return false" ondragstart="return false" onselectstart ="return false" onselect="document.selection.empty()" oncopy="document.selection.empty()" onbeforecopy="return false"onmouseup="document.selection.empty()> 
  • 禁止粘貼
    <input type=text onpaste="return false">
  • 地址欄圖標
    <link rel="Shortcut Icon" href="favicon.ico">
    favicon.ico 名字最好不變16*16的16色,放虛擬目錄根目錄下
  • 收藏欄圖標
    <link rel="Bookmark" href="favicon.ico">
  • 查看源碼
    <input type=button value=查看網頁源代碼 onclick="window.location = 'view-source:'+ 'http://www.csdn.net/'">
  • 關閉輸入法
    <input style="ime-mode:disabled">
  • 自動全選
    <input type=text name=text1 value="123" onfocus="this.select()">
  • ENTER鍵可以讓光標移到下一個輸入框
    <input onkeydown="if(event.keyCode==13)event.keyCode=9">
  • 文本框的默認值
    <input type=text value="123" onfocus="alert(this.defaultValue)">
  • title換行
    obj.title = "123 sdfs "
  • 獲得時間所代表的微秒
    var n1 = new Date("2004-10-10".replace(/-/g, "\/")).getTime()
  • 窗口是否關閉
    win.closed
  • checkbox扁平
    <input type=checkbox style="position: absolute; clip:rect(5px 15px 15px 5px)"><br>
  • 獲取選中內容
    document.selection.createRange().duplicate().text
  • 自動完成功能
    <input  type=text  autocomplete=on>打開該功能 
    <input  type=text  autocomplete=off>關閉該功能   
  • 窗口最大化
    <body onload="window.resizeTo(window.screen.width - 4,window.screen.height-50);window.moveTo(-4,-4)">
  • 無關閉按鈕IE
    window.open("aa.htm", "meizz", "fullscreen=7");
  • 統一編碼/解碼
    alert(decodeURIComponent(encodeURIComponent("http://你好.com?as= hehe")))
    encodeURIComponent對":"、"/"、";" 和 "?"也編碼
  • 表格行指示
    <tr onmouseover="this.bgColor='#f0f0f0'" onmouseout="this.bgColor='#ffffff'">  


  • semovy 2008-04-09 22:11 發表評論
    ]]>
    帶陰影,可拖動,圓角,div + css 層http://m.tkk7.com/WshmAndLily/articles/189465.htmlsemovysemovySat, 29 Mar 2008 07:26:00 GMThttp://m.tkk7.com/WshmAndLily/articles/189465.htmlhttp://m.tkk7.com/WshmAndLily/comments/189465.htmlhttp://m.tkk7.com/WshmAndLily/articles/189465.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/189465.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/189465.html

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <link rel="stylesheet" type="text/css" >
    <script type="text/javascript" src="http://teckotooling.vicp.net/teckotooling/js/niftycube.js"></script>
    <style type="text/css">
    <!--
    #box_header{
     height:30px;
     padding:8px auto 8px auto;
     font-size:17px;
     color:#fff;
     font-weight:bold;
     background-color:#bd7803;
     position:relative;
     top:0px;
     text-align:center;
     cursor:move;
    }
    #box{
     width:200px;
     font-size:15px;
     padding:0px 5px 5px 0px;
     background-color:#eaeaea;
     position:absolute;
     top:200px;
     left:200px;
           
     text-align:center;
     cursor:default;  
    }
    #content
    {
     width:100%;
     padding:5px 0px 5px 0px;
     position:relative;
            font-size:20px;
            color:green;
     text-align:center;
     background-color:#FDE3C3;
    }
    #content li
    {
     list-style-type:none;
     font-size:15px;
     margin:1px 0px 1px 0px;
    }
    //-->
    </style>
    <script language="javascript">
    <!--//
    function drag(header,box){
     header.onmousedown=function(a){
      var d=document;if(!a)a=window.event;
      var x=a.layerX?a.layerX:a.offsetX,y=a.layerY?a.layerY:a.offsetY;
      if(header.setCapture)
       header.setCapture();
      else if(window.captureEvents)
       window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);

      d.onmousemove=function(a){
       if(!a)a=window.event;
       if(!a.pageX)a.pageX=a.clientX;
       if(!a.pageY)a.pageY=a.clientY;
       var tx=a.pageX-x,ty=a.pageY-y;
       box.style.left=tx;
       box.style.top=ty;
      };

      d.onmouseup=function(){
       if(header.releaseCapture)
        header.releaseCapture();
       else if(window.captureEvents)
        window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
       d.onmousemove=null;
       d.onmouseup=null;
      };
     };
    }
    window.onload=function(){
     drag(document.getElementById('box_header'),document.getElementById('box'));
     Nifty("#box_header","top");
     Nifty("#content","bottom");
     Nifty("#box");
    };
    //-->
    </script>
    </head>
    <body>

    <div id="box" >
      <div id='box_header'>
      <li style="margin:5px 0px 5px 0px;list-style-type:none">
         咸菜
      </li>
     </div>
      <div id="content">
      <li>孤獨中等待,</li>
      <li>等待中無耐。</li>
      <li>無耐中戀愛,</li>
      <li>戀愛中變態。</li>
      </div> 
    </div>

    </body>
    </html>



    semovy 2008-03-29 15:26 發表評論
    ]]>
    javascript 的面向對象特性參考http://m.tkk7.com/WshmAndLily/articles/175479.htmlsemovysemovyTue, 15 Jan 2008 07:49:00 GMThttp://m.tkk7.com/WshmAndLily/articles/175479.htmlhttp://m.tkk7.com/WshmAndLily/comments/175479.htmlhttp://m.tkk7.com/WshmAndLily/articles/175479.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/175479.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/175479.html最近在看用javascript+css實現rich client。javascript 也是一個蠻有意思的語言。特別是其面向對象的實現和其他“標準”的OO launguage有很大的不同。但是,都是動態語言,我還是覺得它比起python語法和庫都差得太遠??墒菦]有explorer支持python開發 啊。。。:(

    這是我學習javascript中面向對象特性的一點總結。希望對具有其他語言的面向對象設計經驗的朋友理解javascript的OO有所幫助。我具有c++,java和python的面向對象設計的經驗。

    總的感受, javascript作為一種弱類型的動態語言,語法接近于java,但其面向對象的方式更和python相識。

    1 面向對象的特性

    類,成員變量,成員函數,類變量,類方法,繼承,多態

    1) 類

    類的定義:function Circle(r) { this.r = r; }

    類的實例化: c = Circle(3);

    2)成員變量

    成員變量在初始化函數里申明:this.r = r;

    注意,在對象生成后,你也可以給它附上成員變量,比如c.name="my circle",

    但是除非特別的需要,我強烈建議你不要這樣做。也就是所有的成員都應在初始化函數里聲明。我認為這是一種好的style。

    這一點和python很相識。

    3)成員函數

    成員函數的標準形式是這樣的:

    Cricle.prototype.area = function() { return 3.14 * this.r * this.r; }

    這和java或python或c++都大不一樣。但為了幫助理解,你可以把prototype看作基類。

    prototype里面的變量或方法,是所有對象共享的。

    比如,c.area()調用最終就會讓解釋器調用到Circle.prototype.area().

    相比于java和c++,javascript具有他們都沒有的一個語義,也就是你可以在prototype里定義變量。定義在prototype里的變量可以被所有的實例共享量。所以一般它應該是一個常數,比如:Circle.prototype.PI = 3.14.

    顯然,prototype里的變量和方法都應該是不變的。每一個對象實例都不應該取修改prototype中的內容。雖然語言允許你可以這樣做,但這樣做沒有任何意義,也違反了面向對象的語義(想想,java會讓你動態修改一個類的方法嗎)。

    當然,對于多態是另外一回事,在后面詳述。

    而且,我建議所有的成員函數都在緊接類定義的地方定義。而不應該在代碼運行的某個地方對一個對象實例增加/修改成員函數。這樣的結果是javascript的類定義盡量向java看齊。使得代碼更清晰。

    4)類變量

    類變量是屬于一個類的變量。就像java里用static修飾的變量。因為它屬于類,所以它也應該是一個常量。實例不應該去修改它,雖然你可以 (java里可以用final修飾,使得類變量一旦定義,就不能修改)。這里可以看到,類變量和prototype里定義的變量的功能是相似的。確實如 此,他們的目的都是一樣的。但他們的訪問方式

    不一樣。比如:

    Circle.prototype.PI = 3.14;

    Circle.PI = 3.14;

    //用prototype里的變量

    Circle.prototype.area1 = function() { return this.PI * this.r * this.r; }

    //用類變量

    Circle.prototype.area2 = function() { return Circle.PI * this.r * this.r; }

    5)類方法

    這個概念應該很簡單。注意類方法里絕對不要用this關鍵字,和java完全一樣。

    Circle.max = function(a, b) {
        return a.r > b.r ? a : b;
    }

    theMax = Circle(new Circle(1), new Circle(4));

    6)繼承

    子類繼承父類,那么 “子類實例” 具有和 “父類實例” 完全一樣的行為。javascript是這樣實現的。

    function SubCircle(x, y, r) {
      this.x = x;
      this.y = y;
      this.r =r;
    }

    SubCircle.prototype = new Circle(0);
    記得前面說的嗎?可以把prototype看作一個基類。這里,prototype確確實實是一個基類。它是如何實現的呢?

    舉例如下:
    sc = SubCirlce(1,1,3);
    sc.area();

    調用的傳遞:
    sc.area()->sc.prototype.area()->Circle(0).area()->Circle.prototype.area().
    看來是不是很奇妙呢。

    通過這種方式,javascript實現了繼承。

    7)多態

    多態是子類會定義和父類具有相同signature的方法。假設在SubCircle所在的空間PI=100,而面積公式也變為 PI*R*R*R。

    SubCircle.prototype.PI = 100

    SubCircle.prototype.area = function() {
       return this.PI*this.r*this.r*this.r;
    }
    Sc.area()

    這樣的操作可以認為是:

    Sc.PI->sc.prototype.PI->Cricle(0).PI = 100

    Sc.area()->sc.prototype.area()->Circle(0).area.
    這個時候,調用過程是這樣的

    sc.area()->sc.prototype.area(),在這里解釋器發現了area這個方法,于是它就調用此方法。

    而Cricle.prototype.area就永遠也不會被調用。PI的調用也是如此。那么子類如何想調用父類的方法應怎么辦呢?好像沒有什么辦 法哦,誰知道可以告訴我。但面向對象的理論告訴我們,繼承主要是提供接口而不是代碼復用,所以還是少有這樣的念頭為好 :)。

    下面是一個例子程序。包含上面的所有的概念。
    例子
    ///////////define: Cricle//////////////////
    function Circle(r) {
    this.r = r;
    }
    Circle.PI = 3.14;
    Circle.prototype.PI = 3.14;
    Circle.prototype.area = function() { return Circle.PI*this.r*this.r; }
    Circle.prototype.area2 = function() { return this.PI*this.r*this.r; }


    //// test
    c = new Circle(3);
    //alert("area1 :"+c.area());
    //alert("area2 :"+c.area2());

    Circle.max = function(a, b) { return a.r>b.r ? a.r : b.r; }
    //alert("max is "+Circle.max(new Circle(1), new Circle(3)));

    c1 = new Circle(1);
    c2 = new Circle(1);
    c2.PI = 100;//Circle.prototype.PI=100;

    //alert("c1.area1 "+c1.area());
    //alert("c1.area2 "+c1.area2());
    //alert("c2.area1 "+c2.area());
    //alert("c2.area2 "+c2.area2());

    ////////////////////////define: SubCircle //////////////////
    function SubCircle(x, y, r) {
    this.x = x;
    this.y = y;
    this.r = r;
    }
    SubCircle.prototype = new Circle(0);
    SubCircle.prototype.PI = 100;
    SubCircle.prototype.move2 = function(x, y) { this.x = x; this.y = y;}
    SubCircle.prototype.area = function() { return this.PI*this.r*this.r*this.r; }

    //// test
    sc = new SubCircle(0,0,2);

    alert(sc.area());



    semovy 2008-01-15 15:49 發表評論
    ]]>
    js日期時間函數 http://m.tkk7.com/WshmAndLily/articles/172101.htmlsemovysemovyWed, 02 Jan 2008 02:36:00 GMThttp://m.tkk7.com/WshmAndLily/articles/172101.htmlhttp://m.tkk7.com/WshmAndLily/comments/172101.htmlhttp://m.tkk7.com/WshmAndLily/articles/172101.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/172101.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/172101.html Date.prototype.Format 日期格式化
    Date.prototype.DateAdd 日期計算
    Date.prototype.DateDiff 比較日期差
    Date.prototype.toString 日期轉字符串
    Date.prototype.toArray 日期分割為數組
    Date.prototype.DatePart 取日期的部分信息
    Date.prototype.MaxDayOfDate 取日期所在月的最大天數
    Date.prototype.WeekNumOfYear 判斷日期所在年的第幾周
    StringToDate 字符串轉日期型
    IsValidDate 驗證日期有效性
    CheckDateTime 完整日期時間檢查
    daysBetween 日期天數差

    js 代碼
     
    1. //---------------------------------------------------  
    2. // 判斷閏年  
    3. //---------------------------------------------------  
    4. Date.prototype.isLeapYear = function()   
    5. {   
    6.     return (0==this.getYear()%4&&((this.getYear()%100!=0)||(this.getYear()%400==0)));   
    7. }   
    8.   
    9. //---------------------------------------------------  
    10. // 日期格式化  
    11. // 格式 YYYY/yyyy/YY/yy 表示年份  
    12. // MM/M 月份  
    13. // W/w 星期  
    14. // dd/DD/d/D 日期  
    15. // hh/HH/h/H 時間  
    16. // mm/m 分鐘  
    17. // ss/SS/s/S 秒  
    18. //---------------------------------------------------  
    19. Date.prototype.Format = function(formatStr)   
    20. {   
    21.     var str = formatStr;   
    22.     var Week = ['日','一','二','三','四','五','六'];  
    23.   
    24.     str=str.replace(/yyyy|YYYY/,this.getFullYear());   
    25.     str=str.replace(/yy|YY/,(this.getYear() % 100)>9?(this.getYear() % 100).toString():'0' + (this.getYear() % 100));   
    26.   
    27.     str=str.replace(/MM/,this.getMonth()>9?this.getMonth().toString():'0' + this.getMonth());   
    28.     str=str.replace(/M/g,this.getMonth());   
    29.   
    30.     str=str.replace(/w|W/g,Week[this.getDay()]);   
    31.   
    32.     str=str.replace(/dd|DD/,this.getDate()>9?this.getDate().toString():'0' + this.getDate());   
    33.     str=str.replace(/d|D/g,this.getDate());   
    34.   
    35.     str=str.replace(/hh|HH/,this.getHours()>9?this.getHours().toString():'0' + this.getHours());   
    36.     str=str.replace(/h|H/g,this.getHours());   
    37.     str=str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():'0' + this.getMinutes());   
    38.     str=str.replace(/m/g,this.getMinutes());   
    39.   
    40.     str=str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():'0' + this.getSeconds());   
    41.     str=str.replace(/s|S/g,this.getSeconds());   
    42.   
    43.     return str;   
    44. }   
    45.   
    46. //+---------------------------------------------------  
    47. //| 求兩個時間的天數差 日期格式為 YYYY-MM-dd   
    48. //+---------------------------------------------------  
    49. function daysBetween(DateOne,DateTwo)  
    50. {   
    51.     var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ('-'));  
    52.     var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ('-')+1);  
    53.     var OneYear = DateOne.substring(0,DateOne.indexOf ('-'));  
    54.   
    55.     var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf ('-'));  
    56.     var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf ('-')+1);  
    57.     var TwoYear = DateTwo.substring(0,DateTwo.indexOf ('-'));  
    58.   
    59.     var cha=((Date.parse(OneMonth+'/'+OneDay+'/'+OneYear)- Date.parse(TwoMonth+'/'+TwoDay+'/'+TwoYear))/86400000);   
    60.     return Math.abs(cha);  
    61. }  
    62.   
    63.   
    64. //+---------------------------------------------------  
    65. //| 日期計算  
    66. //+---------------------------------------------------  
    67. Date.prototype.DateAdd = function(strInterval, Number) {   
    68.     var dtTmp = this;  
    69.     switch (strInterval) {   
    70.         case 's' :return new Date(Date.parse(dtTmp) + (1000 * Number));  
    71.         case 'n' :return new Date(Date.parse(dtTmp) + (60000 * Number));  
    72.         case 'h' :return new Date(Date.parse(dtTmp) + (3600000 * Number));  
    73.         case 'd' :return new Date(Date.parse(dtTmp) + (86400000 * Number));  
    74.         case 'w' :return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));  
    75.         case 'q' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number*3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());  
    76.         case 'm' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());  
    77.         case 'y' :return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());  
    78.     }  
    79. }  
    80.   
    81. //+---------------------------------------------------  
    82. //| 比較日期差 dtEnd 格式為日期型或者 有效日期格式字符串  
    83. //+---------------------------------------------------  
    84. Date.prototype.DateDiff = function(strInterval, dtEnd) {   
    85.     var dtStart = this;  
    86.     if (typeof dtEnd == 'string' )//如果是字符串轉換為日期型  
    87.     {   
    88.         dtEnd = StringToDate(dtEnd);  
    89.     }  
    90.     switch (strInterval) {   
    91.         case 's' :return parseInt((dtEnd - dtStart) / 1000);  
    92.         case 'n' :return parseInt((dtEnd - dtStart) / 60000);  
    93.         case 'h' :return parseInt((dtEnd - dtStart) / 3600000);  
    94.         case 'd' :return parseInt((dtEnd - dtStart) / 86400000);  
    95.         case 'w' :return parseInt((dtEnd - dtStart) / (86400000 * 7));  
    96.         case 'm' :return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1);  
    97.         case 'y' :return dtEnd.getFullYear() - dtStart.getFullYear();  
    98.     }  
    99. }  
    100.   
    101. //+---------------------------------------------------  
    102. //| 日期輸出字符串,重載了系統的toString方法  
    103. //+---------------------------------------------------  
    104. Date.prototype.toString = function(showWeek)  
    105. {   
    106.     var myDate= this;  
    107.     var str = myDate.toLocaleDateString();  
    108.     if (showWeek)  
    109.     {   
    110.         var Week = ['日','一','二','三','四','五','六'];  
    111.         str += ' 星期' + Week[myDate.getDay()];  
    112.     }  
    113.     return str;  
    114. }  
    115.   
    116. //+---------------------------------------------------  
    117. //| 日期合法性驗證  
    118. //| 格式為:YYYY-MM-DD或YYYY/MM/DD  
    119. //+---------------------------------------------------  
    120. function IsValidDate(DateStr)   
    121. {   
    122.     var sDate=DateStr.replace(/(^\s+|\s+$)/g,''); //去兩邊空格;   
    123.     if(sDate==''return true;   
    124.     //如果格式滿足YYYY-(/)MM-(/)DD或YYYY-(/)M-(/)DD或YYYY-(/)M-(/)D或YYYY-(/)MM-(/)D就替換為''   
    125.     //數據庫中,合法日期可以是:YYYY-MM/DD(2003-3/21),數據庫會自動轉換為YYYY-MM-DD格式   
    126.     var s = sDate.replace(/[\d]{ 4,4 }[\-/]{ 1 }[\d]{ 1,2 }[\-/]{ 1 }[\d]{ 1,2 }/g,'');   
    127.     if (s==''//說明格式滿足YYYY-MM-DD或YYYY-M-DD或YYYY-M-D或YYYY-MM-D   
    128.     {   
    129.         var t=new Date(sDate.replace(/\-/g,'/'));   
    130.         var ar = sDate.split(/[-/:]/);   
    131.         if(ar[0] != t.getYear() || ar[1] != t.getMonth()+1 || ar[2] != t.getDate())   
    132.         {   
    133.             //alert('錯誤的日期格式!格式為:YYYY-MM-DD或YYYY/MM/DD。注意閏年。');   
    134.             return false;   
    135.         }   
    136.     }   
    137.     else   
    138.     {   
    139.         //alert('錯誤的日期格式!格式為:YYYY-MM-DD或YYYY/MM/DD。注意閏年。');   
    140.         return false;   
    141.     }   
    142.     return true;   
    143. }   
    144.   
    145. //+---------------------------------------------------  
    146. //| 日期時間檢查  
    147. //| 格式為:YYYY-MM-DD HH:MM:SS  
    148. //+---------------------------------------------------  
    149. function CheckDateTime(str)  
    150. {   
    151.     var reg = /^(\d+)-(\d{ 1,2 })-(\d{ 1,2 }) (\d{ 1,2 }):(\d{ 1,2 }):(\d{ 1,2 })$/;   
    152.     var r = str.match(reg);   
    153.     if(r==null)return false;   
    154.     r[2]=r[2]-1;   
    155.     var d= new Date(r[1],r[2],r[3],r[4],r[5],r[6]);   
    156.     if(d.getFullYear()!=r[1])return false;   
    157.     if(d.getMonth()!=r[2])return false;   
    158.     if(d.getDate()!=r[3])return false;   
    159.     if(d.getHours()!=r[4])return false;   
    160.     if(d.getMinutes()!=r[5])return false;   
    161.     if(d.getSeconds()!=r[6])return false;   
    162.     return true;   
    163. }   
    164.   
    165. //+---------------------------------------------------  
    166. //| 把日期分割成數組  
    167. //+---------------------------------------------------  
    168. Date.prototype.toArray = function()  
    169. {   
    170.     var myDate = this;  
    171.     var myArray = Array();  
    172.     myArray[0] = myDate.getFullYear();  
    173.     myArray[1] = myDate.getMonth();  
    174.     myArray[2] = myDate.getDate();  
    175.     myArray[3] = myDate.getHours();  
    176.     myArray[4] = myDate.getMinutes();  
    177.     myArray[5] = myDate.getSeconds();  
    178.     return myArray;  
    179. }  
    180.   
    181. //+---------------------------------------------------  
    182. //| 取得日期數據信息  
    183. //| 參數 interval 表示數據類型  
    184. //| y 年 m月 d日 w星期 ww周 h時 n分 s秒  
    185. //+---------------------------------------------------  
    186. Date.prototype.DatePart = function(interval)  
    187. {   
    188.     var myDate = this;  
    189.     var partStr='';  
    190.     var Week = ['日','一','二','三','四','五','六'];  
    191.     switch (interval)  
    192.     {   
    193.         case 'y' :partStr = myDate.getFullYear();break;  
    194.         case 'm' :partStr = myDate.getMonth()+1;break;  
    195.         case 'd' :partStr = myDate.getDate();break;  
    196.         case 'w' :partStr = Week[myDate.getDay()];break;  
    197.         case 'ww' :partStr = myDate.WeekNumOfYear();break;  
    198.         case 'h' :partStr = myDate.getHours();break;  
    199.         case 'n' :partStr = myDate.getMinutes();break;  
    200.         case 's' :partStr = myDate.getSeconds();break;  
    201.     }  
    202.     return partStr;  
    203. }  
    204.   
    205. //+---------------------------------------------------  
    206. //| 取得當前日期所在月的最大天數  
    207. //+---------------------------------------------------  
    208. Date.prototype.MaxDayOfDate = function()  
    209. {   
    210.     var myDate = this;  
    211.     var ary = myDate.toArray();  
    212.     var date1 = (new Date(ary[0],ary[1]+1,1));  
    213.     var date2 = date1.dateAdd(1,'m',1);  
    214.     var result = dateDiff(date1.Format('yyyy-MM-dd'),date2.Format('yyyy-MM-dd'));  
    215.     return result;  
    216. }  
    217.   
    218. //+---------------------------------------------------  
    219. //| 取得當前日期所在周是一年中的第幾周  
    220. //+---------------------------------------------------  
    221. Date.prototype.WeekNumOfYear = function()  
    222. {   
    223.     var myDate = this;  
    224.     var ary = myDate.toArray();  
    225.     var year = ary[0];  
    226.     var month = ary[1]+1;  
    227.     var day = ary[2];  
    228.     document.write('< script language=VBScript\> \n');  
    229.     document.write('myDate = DateValue(''+month+'-'+day+'-'+year+'') \n');  
    230.     document.write('result = DatePart('ww', myDate) \n');  
    231.     document.write(' \n');  
    232.     return result;  
    233. }  
    234.   
    235. //+---------------------------------------------------  
    236. //| 字符串轉成日期類型   
    237. //| 格式 MM/dd/YYYY MM-dd-YYYY YYYY/MM/dd YYYY-MM-dd  
    238. //+---------------------------------------------------  
    239. function StringToDate(DateStr)  
    240. {   
    241.   
    242.     var converted = Date.parse(DateStr);  
    243.     var myDate = new Date(converted);  
    244.     if (isNaN(myDate))  
    245.     {   
    246.         //var delimCahar = DateStr.indexOf('/')!=-1?'/':'-';  
    247.         var arys= DateStr.split('-');  
    248.         myDate = new Date(arys[0],--arys[1],arys[2]);  
    249.     }  
    250.     return myDate;  
    251. }  


    semovy 2008-01-02 10:36 發表評論
    ]]>
    select innerHTML在IE和FireFox下處理http://m.tkk7.com/WshmAndLily/articles/172074.htmlsemovysemovyWed, 02 Jan 2008 01:37:00 GMThttp://m.tkk7.com/WshmAndLily/articles/172074.htmlhttp://m.tkk7.com/WshmAndLily/comments/172074.htmlhttp://m.tkk7.com/WshmAndLily/articles/172074.html#Feedback1http://m.tkk7.com/WshmAndLily/comments/commentRss/172074.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/172074.html在前一段時間,做ajax的時候,碰到了這樣的問題:

    <form name=form1 action='#' method=post>
    <select name=typelist id=typelist>
    <option value=0>=請選擇=</option>
    </select>
    </form>


    下面是一個jscript函數

    <script language=javascript type='text/javascript'>
    function getTypeById(){
        var obj = document.getElementById('typelist');
        var result = "";
        for(var i = 1; i < 6; i++ ){
           result += "<option value="+i+">"+i+"</option>" ;
        }
       
    obj.innerHTML = result;
    }
    </script>


    出現的結果<select></select>中的內容在IE下運行為空白,而在FireFOx中運行正確。

    針對這樣情況的解決辦法是換另一種方法做

    function getTypeById(id){
        var s=document.getElementById(id);
        for(var i = 1; i < 6; i++ ){
           s.options[s.options.length] = new Option(i,i);
        }  
    }



    semovy 2008-01-02 09:37 發表評論
    ]]>
    常用JS加密編碼算法 轉[千里冰封]http://m.tkk7.com/WshmAndLily/articles/160914.htmlsemovysemovyFri, 16 Nov 2007 01:41:00 GMThttp://m.tkk7.com/WshmAndLily/articles/160914.htmlhttp://m.tkk7.com/WshmAndLily/comments/160914.htmlhttp://m.tkk7.com/WshmAndLily/articles/160914.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/160914.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/160914.htmlfunction URLEncode(Str){   if(Str==null||Str=="")   ...  閱讀全文

    semovy 2007-11-16 09:41 發表評論
    ]]>
    js控制input輸入字符限制http://m.tkk7.com/WshmAndLily/articles/153595.htmlsemovysemovyWed, 17 Oct 2007 08:01:00 GMThttp://m.tkk7.com/WshmAndLily/articles/153595.htmlhttp://m.tkk7.com/WshmAndLily/comments/153595.htmlhttp://m.tkk7.com/WshmAndLily/articles/153595.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/153595.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/153595.htmlENTER鍵可以讓光標移到下一個輸入框
    <input onkeydown="if(event.keyCode==13)event.keyCode=9" >

    只能是中文
    <input onkeyup="value=value.replace(/[ -~]/g,'')" onkeydown="if(event.keyCode==13)event.keyCode=9">

    屏蔽輸入法
    <input style="ime-mode:disabled" onkeydown="if(event.keyCode==13)event.keyCode=9">

    只能輸入英文和數字
    <input onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" onkeydown="if(event.keyCode==13)event.keyCode=9">

    只能是數字
    <input onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))">

    只能顯示,不能修改
    <input readonly value="只能顯示,不能修改">

    只能書數字,判斷按鍵的值
    <script   language=javascript>
    function   onlyNum()
    {
    if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)||(event.keyCode==8)))
    event.returnValue=false;
    }
    </script>
    <input   onkeydown="onlyNum();">  



    semovy 2007-10-17 16:01 發表評論
    ]]>
    js常用函數屬性事件集http://m.tkk7.com/WshmAndLily/articles/151897.htmlsemovysemovyWed, 10 Oct 2007 15:23:00 GMThttp://m.tkk7.com/WshmAndLily/articles/151897.htmlhttp://m.tkk7.com/WshmAndLily/comments/151897.htmlhttp://m.tkk7.com/WshmAndLily/articles/151897.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/151897.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/151897.html1.document.write(""); 輸出語句
    2.JS中的注釋為//
    3.傳統的HTML文檔順序是:document->html->(head,body)
    4.一個瀏覽器窗口中的DOM順序是:window->(navigator,screen,history,location,document)
    5.得到表單中元素的名稱和值:document.getElementById("表單中元素的ID號").name(或value)
    6.一個小寫轉大寫的JS: document.getElementById("output").value = document.getElementById("input").value.toUpperCase();
    7.JS中的值類型:String,Number,Boolean,Null,Object,Function
    8.JS中的字符型轉換成數值型:parseInt(),parseFloat()
    9.JS中的數字轉換成字符型:(""+變量)
    10.JS中的取字符串長度是:(length)
    11.JS中的字符與字符相連接使用+號.
    12.JS中的比較操作符有:==等于,!=不等于,>,>=,<.<=
    13.JS中聲明變量使用:var來進行聲明
    14.JS中的判斷語句結構:if(condition){}else{}
    15.JS中的循環結構:for([initial expression];[condition];[upadte expression]) {inside loop}
    16.循環中止的命令是:break
    17.JS中的函數定義:function functionName([parameter],...){statement[s]}
    18.當文件中出現多個form表單時.可以用document.forms[0],document.forms[1]來代替.
    19.窗口:打開窗口window.open(), 關閉一個窗口:window.close(), 窗口本身:self
    20.狀態欄的設置:window.status="字符";
    21.彈出提示信息:window.alert("字符");
    22.彈出確認框:window.confirm();
    23.彈出輸入提示框:window.prompt();
    24.指定當前顯示鏈接的位置:window.location.href="URL"
    25.取出窗體中的所有表單的數量:document.forms.length
    26.關閉文檔的輸出流:document.close();
    27.字符串追加連接符:+=
    28.創建一個文檔元素:document.createElement(),document.createTextNode()
    29.得到元素的方法:document.getElementById()
    30.設置表單中所有文本型的成員的值為空:
    var form = window.document.forms[0]
    for (var i = 0; i<form.elements.length;i++){
          if (form.elements[i].type == "text"){
              form.elements[i].value = "";
          }
    }
    31.復選按鈕在JS中判斷是否選中:document.forms[0].checkThis.checked (checked屬性代表為是否選中返回TRUE或FALSE)
    32.單選按鈕組(單選按鈕的名稱必須相同):取單選按鈕組的長度document.forms[0].groupName.length
    33.單選按鈕組判斷是否被選中也是用checked.
    34.下拉列表框的值:document.forms[0].selectName.options[n].value (n有時用下拉列表框名稱加上.selectedIndex來確定被選中的值)
    35.字符串的定義:var myString = new String("This is lightsword");
    36.字符串轉成大寫:string.toUpperCase(); 字符串轉成小寫:string.toLowerCase();
    37.返回字符串2在字符串1中出現的位置:String1.indexOf("String2")!=-1則說明沒找到.
    38.取字符串中指定位置的一個字符:StringA.charAt(9);
    39.取出字符串中指定起點和終點的子字符串:stringA.substring(2,6);
    40.數學函數:Math.PI(返回圓周率),Math.SQRT2(返回開方),Math.max(value1,value2)返回兩個數中的最在值,Math.pow(value1,10)返回value1的十次方,Math.round(value1)四舍五入函數,Math.floor(Math.random()*(n+1))返回隨機數
    41.定義日期型變量:var today = new Date();
    42.日期函數列表:dateObj.getTime()得到時間,dateObj.getYear()得到年份,dateObj.getFullYear()得到四位的年份,dateObj.getMonth()得到月份,dateObj.getDate()得到日,dateObj.getDay()得到日期幾,dateObj.getHours()得到小時,dateObj.getMinutes()得到分,dateObj.getSeconds()得到秒,dateObj.setTime(value)設置時間,dateObj.setYear(val)設置年,dateObj.setMonth(val)設置月,dateObj.setDate(val)設置日,dateObj.setDay(val)設置星期幾,dateObj.setHours設置小時,dateObj.setMinutes(val)設置分,dateObj.setSeconds(val)設置秒   [注意:此日期時間從0開始計]
    43.FRAME的表示方式: [window.]frames[n].ObjFuncVarName,frames["frameName"].ObjFuncVarName,frameName.ObjFuncVarName
    44.parent代表父親對象,top代表最頂端對象
    45.打開子窗口的父窗口為:opener
    46.表示當前所屬的位置:this
    47.當在超鏈接中調用JS函數時用:(Javascript:)來開頭后面加函數名
    48.在老的瀏覽器中不執行此JS:<!--       //-->
    49.引用一個文件式的JS:<script type="text/Javascript" src="aaa.js"></script>
    50.指定在不支持腳本的瀏覽器顯示的HTML:<noscript></noscript>
    51.當超鏈和ONCLICK事件都有時,則老版本的瀏覽器轉向a.html,否則轉向b.html.例:<a href="a.html" onclick="location.href='b.html';return false">dfsadf</a>
    52.JS的內建對象有:Array,Boolean,Date,Error,EvalError,Function,Math,Number,Object,RangeError,ReferenceError,RegExp,String,SyntaxError,TypeError,URIError
    53.JS中的換行:\n
    54.窗口全屏大小:<script>function fullScreen(){ this.moveTo(0,0);this.outerWidth=screen.availWidth;this.outerHeight=screen.availHeight;}window.maximize=fullScreen;</script>
    55.JS中的all代表其下層的全部元素

    56.JS中的焦點順序:document.getElementByid("表單元素").tabIndex = 1
    57.innerHTML的值是表單元素的值:如<p id="para">"how are <em>you</em>"</p>,則innerHTML的值就是:how are <em>you</em>
    58.innerTEXT的值和上面的一樣,只不過不會把<em>這種標記顯示出來.
    59.contentEditable可設置元素是否可被修改,isContentEditable返回是否可修改的狀態.
    60.isDisabled判斷是否為禁止狀態.disabled設置禁止狀態
    61.length取得長度,返回整型數值
    62.addBehavior()是一種JS調用的外部函數文件其擴展名為.htc
    63.window.focus()使當前的窗口在所有窗口之前.
    64.blur()指失去焦點.與FOCUS()相反.
    65.select()指元素為選中狀態.
    66.防止用戶對文本框中輸入文本:onfocus="this.blur()"
    67.取出該元素在頁面中出現的數量:document.all.tags("div(或其它HTML標記符)").length
    68.JS中分為兩種窗體輸出:模態和非模態.window.showModaldialog(),window.showModeless()
    69.狀態欄文字的設置:window.status='文字',默認的狀態欄文字設置:window.defaultStatus = '文字.';
    70.添加到收藏夾:external.AddFavorite("
    http://www.xrss.cn","jaskdlf");
    71.JS中遇到腳本錯誤時不做任何操作:window.onerror = doNothing; 指定錯誤句柄的語法為:window.onerror = handleError;
    72.JS中指定當前打開窗口的父窗口:window.opener,支持opener.opener...的多重繼續.
    73.JS中的self指的是當前的窗口
    74.JS中狀態欄顯示內容:window.status="內容"
    75.JS中的top指的是框架集中最頂層的框架
    76.JS中關閉當前的窗口:window.close();
    77.JS中提出是否確認的框:if(confirm("Are you sure?")){alert("ok");}else{alert("Not Ok");}
    78.JS中的窗口重定向:window.navigate("
    http://www.sina.com.cn");
    79.JS中的打印:window.print()
    80.JS中的提示輸入框:window.prompt("message","defaultReply");
    81.JS中的窗口滾動條:window.scroll(x,y)
    82.JS中的窗口滾動到位置:window.scrollby
    83.JS中設置時間間隔:setInterval("expr",msecDelay)或setInterval(funcRef,msecDelay)或setTimeout
    84.JS中的模態顯示在IE4+行,在NN中不行:showModalDialog("URL"[,arguments][,features]);
    85.JS中的退出之前使用的句柄:function verifyClose(){event.returnValue="we really like you and hope you will stay longer.";}}   window.onbeforeunload=verifyClose;
    86.當窗體第一次調用時使用的文件句柄:onload()
    87.當窗體關閉時調用的文件句柄:onunload()
    88.window.location的屬性: protocol(http:),hostname(
    www.example.com),port(80),host(www.example.com:80),pathname("/a/a.html"),hash("#giantGizmo",指跳轉到相應的錨記),href(全部的信息)
    89.window.location.reload()刷新當前頁面.
    89-1.parent.location.reload()刷新父親對象(用于框架)
    89-2.opener.location.reload()刷新父窗口對象(用于單開窗口)
    89-3.top.location.reload()刷新最頂端對象(用于多開窗口)
    90.window.history.back()返回上一頁,window.history.forward()返回下一頁,window.history.go(返回第幾頁,也可以使用訪問過的URL)
    91.document.write()不換行的輸出,document.writeln()換行輸出
    92.document.body.noWrap=true;防止鏈接文字折行.
    93.變量名.charAt(第幾位),取該變量的第幾位的字符.
    94."abc".charCodeAt(第幾個),返回第幾個字符的ASCii碼值.
    95.字符串連接:string.concat(string2),或用+=進行連接
    96.變量.indexOf("字符",起始位置),返回第一個出現的位置(從0開始計算)
    97.string.lastIndexOf(searchString[,startIndex])最后一次出現的位置.
    98.string.match(regExpression),判斷字符是否匹配.
    99.string.replace(regExpression,replaceString)替換現有字符串.
    100.string.split(分隔符)返回一個數組存儲值.
    101.string.substr(start[,length])取從第幾位到指定長度的字符串.
    102.string.toLowerCase()使字符串全部變為小寫.
    103.string.toUpperCase()使全部字符變為大寫.
    104.parseInt(string[,radix(代表進制)])強制轉換成整型.
    105.parseFloat(string[,radix])強制轉換成浮點型.
    106.isNaN(變量):測試是否為數值型.
    107.定義常量的關鍵字:const,定義變量的關鍵字:var



    semovy 2007-10-10 23:23 發表評論
    ]]>
    兼容于ie,firefox,netscape的等比例圖片本地預覽的javascript實現http://m.tkk7.com/WshmAndLily/articles/151410.htmlsemovysemovyTue, 09 Oct 2007 07:11:00 GMThttp://m.tkk7.com/WshmAndLily/articles/151410.htmlhttp://m.tkk7.com/WshmAndLily/comments/151410.htmlhttp://m.tkk7.com/WshmAndLily/articles/151410.html#Feedback12http://m.tkk7.com/WshmAndLily/comments/commentRss/151410.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/151410.html <head>
    <title>兼容于ie,firefox,netscape的等比例圖片本地預覽的javascript實現</title>
    <meta http-equie="keywords" content="兼容ie,firefox,netscape,等比例圖片,javascript">
    <script type="text/javascript">
    /*
     兼容于ie,firefox,netscape的等比例圖片本地預覽的javascript實現
     author:semovy@gmail.com
     date:14:39 上午 2007-10-9
     @param:targetImg string id 待顯示等比例調整過的目標元素的id字符串
     @param:imgSrc string src 等處理的圖片源路徑字符串
     @param:fitWidth int 等顯示圖片的最大寬度
     @param:fitHeight int 等顯示圖片的最大高度
    */
    function resizeImage(targetImg,imgSrc,fitWidth,fitHeight)
    {
     var imgSrc = "file:///" + imgSrc.replace(/\\/g,"/");//本地路徑c:\a.jpg,而ff,ns不支持,所以替換成file:///c:/a.jpg這種形式
     var img = document.getElementById(targetImg);//獲取目標圖片元素容器
     var tempImg = new Image();//建立臨時圖片對象
     tempImg.src = imgSrc;//給臨時圖片對象賦予圖片源
     var scale=1.0;//圖片度高比例因子.
     var width=0,height=0;
     
     /*firefox實現了complete屬性,而ie實現了complete屬性和readyState屬性
     但是兩者對屬性的定義好像不同:
     firefox: 一個圖像被下載完畢,complete屬性就是true,沒有下載完畢則為false
     ie:一個圖像沒有被下載完畢,則readyState屬性為uninitialized,complete屬性是false.當下載完畢時,
     readyState為complete,而如果此時圖片還沒有顯示,complete為false,顯示以后(display:block)此屬性才變成true
     */
     
     if(document.all)//如果是ie
     {
      if(tempImg.readyState=='complete')
      {
       width = tempImg.width;//獲取源圖片寬,高
       height = tempImg.height;
      }
     }
     else(tempImg.complete)//fire fox ,netscape
     {
      width = tempImg.width;
      height = tempImg.height;
     }
     scale = width/height;//寬度比例因子
     if(width > fitWidth)//等比例調整
     {
      width = fitWidth;
      height = width/scale; 
      if(height > fitHeight)
      {
       height = fitHeight;
       width = height*scale;
      }
     }
     if(height > fitHeight)
     {
      height = fitHeight;
      width = height*scale;
     }
     img.width = width;//調整后的寬,高
     img.height = height;
     img.src = imgSrc;
     img.style.display="";//顯示圖片
    }
    </script>
    </head>
    <body>
    <!--目標顯示圖片組件,初始化為隱藏格式-->
    <img id="img" style="display:none">
    <input type="file" id="imgFile" onchange="resizeImage('img',this.value,150,150)">
    </body>
    </html>

    semovy 2007-10-09 15:11 發表評論
    ]]>
    鼠標滑過鏈接出現的對話框式提示效果http://m.tkk7.com/WshmAndLily/articles/148788.htmlsemovysemovyThu, 27 Sep 2007 09:26:00 GMThttp://m.tkk7.com/WshmAndLily/articles/148788.htmlhttp://m.tkk7.com/WshmAndLily/comments/148788.htmlhttp://m.tkk7.com/WshmAndLily/articles/148788.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/148788.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/148788.html <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>無標題文檔</title>
    <script type="text/javascript">
    function enableTooltips(id){
    var links,i,h;
    if(!document.getElementById || !document.getElementsByTagName) return;
    AddCss();
    h=document.createElement("span");
    h.id="btc";
    h.setAttribute("id","btc");
    h.style.position="absolute";
    document.getElementsByTagName("body")[0].appendChild(h);
    if(id==null) links=document.getElementsByTagName("a");
    else links=document.getElementById(id).getElementsByTagName("a");
    for(i=0;i<links.length;i++){
    Prepare(links[i]);
    }
    }function Prepare(el){
    var tooltip,t,b,s,l;
    t=el.getAttribute("title");
    if(t==null || t.length==0) t="link:";
    el.removeAttribute("title");
    tooltip=CreateEl("span","tooltip");
    s=CreateEl("span","top");
    s.appendChild(document.createTextNode(t));
    tooltip.appendChild(s);
    b=CreateEl("b","bottom");
    l=el.getAttribute("href");
    if(l.length>30) l=l.substr(0,27)+"...";
    b.appendChild(document.createTextNode(l));
    tooltip.appendChild(b);
    setOpacity(tooltip);
    el.tooltip=tooltip;
    el.onmouseover=showTooltip;
    el.onmouseout=hideTooltip;
    el.onmousemove=Locate;
    }function showTooltip(e){
    document.getElementById("btc").appendChild(this.tooltip);
    Locate(e);
    }function hideTooltip(e){
    var d=document.getElementById("btc");
    if(d.childNodes.length>0) d.removeChild(d.firstChild);
    }function setOpacity(el){
    el.style.filter="alpha(opacity:95)";
    el.style.KHTMLOpacity="0.95";
    el.style.MozOpacity="0.95";
    el.style.opacity="0.95";
    }function CreateEl(t,c){
    var x=document.createElement(t);
    x.className=c;
    x.style.display="block";
    return(x);
    }function AddCss(){
    var l=CreateEl("link");
    l.setAttribute("type","text/css");
    l.setAttribute("rel","stylesheet");
    l.setAttribute("href","?.css");
    l.setAttribute("media","screen");
    document.getElementsByTagName("head")[0].appendChild(l);
    }function Locate(e){
    var posx=0,posy=0;
    if(e==null) e=window.event;
    if(e.pageX || e.pageY){
    posx=e.pageX; posy=e.pageY;
    }
    else if(e.clientX || e.clientY){
    if(document.documentElement.scrollTop){
    posx=e.clientX+document.documentElement.scrollLeft;
    posy=e.clientY+document.documentElement.scrollTop;
    }
    else{
    posx=e.clientX+document.body.scrollLeft;
    posy=e.clientY+document.body.scrollTop;
    }
    }
    document.getElementById("btc").style.top=(posy+10)+"px";
    document.getElementById("btc").style.left=(posx-20)+"px";
    }
    </script>
    <script type="text/javascript">
    window.onload=function(){enableTooltips()};
    </script>
    <style type="text/css">
    body{font: 76%/1.5 Arial,sans-serif;background: #FFF;color: #333}
    div#container{width: 500px;margin:0 auto}
    h1{color: #3CA3FF;margin: 1em 0 0;letter-spacing: -2px}
    p{margin: 0 0 1.7em}
    a{color: #F60;font-weight:bold}
    a:hover{color: #F00}
    .tooltip{
    width: 200px; color:#000;
    font:lighter 11px/1.3 Arial,sans-serif;
    text-decoration:none;text-align:center}.tooltip span.top{padding: 30px 8px 0;
         background: url(http://www.makewing.com/images/uppic/200708171844190.gif) no-repeat top}.tooltip b.bottom{padding:3px 8px 15px;color: #548912;
         background: url(http://www.makewing.com/images/uppic/200708171844190.gif) no-repeat bottom}
    </style>
    </head>
    <body>
    <div id="container">
    <p><a title="Com@'s space">My space</a></p>
    </div>
    </body>
    </html>

    semovy 2007-09-27 17:26 發表評論
    ]]>
    一個精美強大的JS日歷http://m.tkk7.com/WshmAndLily/articles/148786.htmlsemovysemovyThu, 27 Sep 2007 09:19:00 GMThttp://m.tkk7.com/WshmAndLily/articles/148786.htmlhttp://m.tkk7.com/WshmAndLily/comments/148786.htmlhttp://m.tkk7.com/WshmAndLily/articles/148786.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/148786.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/148786.html<html>

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>本地計算機時間</title>
    </head>

    <body>


    <SCRIPT language=JavaScript>
    <!--
    /*****************************************************************************
                                       日期資料
    *****************************************************************************/

    var lunarInfo=new Array(
    0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,
    0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,
    0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970,
    0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950,
    0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,
    0x06ca0,0x0b550,0x15355,0x04da0,0x0a5d0,0x14573,0x052d0,0x0a9a8,0x0e950,0x06aa0,
    0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,
    0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b5a0,0x195a6,
    0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,
    0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,
    0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,
    0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,
    0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,
    0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,
    0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0)

    var solarMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
    var Gan=new Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
    var Zhi=new Array("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");
    var Animals=new Array("鼠","牛","虎","兔","龍","蛇","馬","羊","猴","雞","狗","豬");
    var solarTerm = new Array("小寒","大寒","立春","雨水","驚蟄","春分","清明","谷雨","立夏","小滿","芒種","夏至","小暑","大暑","立秋","處暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至")
    var sTermInfo = new Array(0,21208,42467,63836,85337,107014,128867,150921,173149,195551,218072,240693,263343,285989,308563,331033,353350,375494,397447,419210,440795,462224,483532,504758)
    var nStr1 = new Array('日','一','二','三','四','五','六','七','八','九','十')
    var nStr2 = new Array('初','十','廿','卅',' ')
    var monthName = new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");

    //國歷節日 *表示放假日
    var sFtv = new Array(
    "0101*元旦",
    "0214 情人節",
    "0303 我生日",
    "0308 婦女節",
    "0312 植樹節",
    "0315 消費者權益日",
    "0317 St. Patrick's",
    "0401 愚人節",
    "0501 勞動節",
    "0504 青年節",
    "0512 護士節",
    "0512 茵生日",
    "0601 兒童節",
    "0614 Flag Day",
    "0701 建黨節 香港回歸紀念",
    "0703 炎黃在線誕辰",
    "0718 托普誕辰",
    "0801 建軍節",
    "0808 父親節",
    "0909 毛澤東逝世紀念",
    "0910 教師節",
    "0928 孔子誕辰",
    "1001*國慶節",
    "1006 老人節",
    "1024 聯合國日",
    "1111 Veteran's / Remembrance Day",
    "1112 孫中山誕辰紀念",
    "1220 澳門回歸紀念",
    "1225 Christmas Day",
    "1226 毛澤東誕辰紀念")

    //農歷節日 *表示放假日
    var lFtv = new Array(
    "0101*春節",
    "0115 元宵節",
    "0505 端午節",
    "0707 七夕情人節",
    "0715 中元節",
    "0815 中秋節",
    "0909 重陽節",
    "1208 臘八節",
    "1224 小年",
    "0100*除夕")

    //某月的第幾個星期幾
    var wFtv = new Array(
    "0131 Martin Luther King Day",
    "0231 President's Day",
    "0520 母親節",
    "0530 Armed Forces Day",
    "0531 Victoria Day",
    "0716 合作節",
    "0730 被奴役國家周",
    "0811 Civic Holiday",
    "0911 Labor Holiday",
    "1021 Columbus Day",
    "1144 Thanksgiving")


    /*****************************************************************************
                                          日期計算
    *****************************************************************************/

    //====================================== 傳回農歷 y年的總天數
    function lYearDays(y) {
       var i, sum = 348
       for(i=0x8000; i>0x8; i>>=1) sum += (lunarInfo[y-1900] & i)? 1: 0
       return(sum+leapDays(y))
    }

    //====================================== 傳回農歷 y年閏月的天數
    function leapDays(y) {
       if(leapMonth(y))  return((lunarInfo[y-1900] & 0x10000)? 30: 29)
       else return(0)
    }

    //====================================== 傳回農歷 y年閏哪個月 1-12 , 沒閏傳回 0
    function leapMonth(y) {
       return(lunarInfo[y-1900] & 0xf)
    }

    //====================================== 傳回農歷 y年m月的總天數
    function monthDays(y,m) {
       return( (lunarInfo[y-1900] & (0x10000>>m))? 30: 29 )
    }

    //====================================== 算出農歷, 傳入日期物件, 傳回農歷日期物件
    //                                       該物件屬性有 .year .month .day .isLeap .yearCyl .dayCyl .monCyl
    function Lunar(objDate) {

       var i, leap=0, temp=0
       var baseDate = new Date(1900,0,31)
       var offset   = (objDate - baseDate)/86400000

       this.dayCyl = offset + 40
       this.monCyl = 14

       for(i=1900; i<2050 && offset>0; i++) {
          temp = lYearDays(i)
          offset -= temp
          this.monCyl += 12
       }

       if(offset<0) {
          offset += temp;
          i--;
          this.monCyl -= 12
       }

       this.year = i
       this.yearCyl = i-1864

       leap = leapMonth(i) //閏哪個月
       this.isLeap = false

       for(i=1; i<13 && offset>0; i++) {
          //閏月
          if(leap>0 && i==(leap+1) && this.isLeap==false)
             { --i; this.isLeap = true; temp = leapDays(this.year); }
          else
             { temp = monthDays(this.year, i); }

          //解除閏月
          if(this.isLeap==true && i==(leap+1)) this.isLeap = false

          offset -= temp
          if(this.isLeap == false) this.monCyl ++
       }

       if(offset==0 && leap>0 && i==leap+1)
          if(this.isLeap)
             { this.isLeap = false; }
          else
             { this.isLeap = true; --i; --this.monCyl;}

       if(offset<0){ offset += temp; --i; --this.monCyl; }

       this.month = i
       this.day = offset + 1
    }

    //==============================傳回國歷 y年某m+1月的天數
    function solarDays(y,m) {
       if(m==1)
          return(((y%4 == 0) && (y%100 != 0) || (y%400 == 0))? 29: 28)
       else
          return(solarMonth[m])
    }
    //============================== 傳入 offset 傳回干支, 0=甲子
    function cyclical(num) {
       return(Gan[num%10]+Zhi[num%12])
    }

    //============================== 月歷屬性
    function calElement(sYear,sMonth,sDay,week,lYear,lMonth,lDay,isLeap,cYear,cMonth,cDay) {

          this.isToday    = false;
          //國歷
          this.sYear      = sYear;
          this.sMonth     = sMonth;
          this.sDay       = sDay;
          this.week       = week;
          //農歷
          this.lYear      = lYear;
          this.lMonth     = lMonth;
          this.lDay       = lDay;
          this.isLeap     = isLeap;
          //干支
          this.cYear      = cYear;
          this.cMonth     = cMonth;
          this.cDay       = cDay;

          this.color      = '';

          this.lunarFestival = ''; //農歷節日
          this.solarFestival = ''; //國歷節日
          this.solarTerms    = ''; //節氣

    }

    //===== 某年的第n個節氣為幾日(從0小寒起算)
    function sTerm(y,n) {
       var offDate = new Date( ( 31556925974.7*(y-1900) + sTermInfo[n]*60000  ) + Date.UTC(1900,0,6,2,5) )
       return(offDate.getUTCDate())
    }

    //============================== 傳回月歷物件 (y年,m+1月)
    function calendar(y,m) {

       var sDObj, lDObj, lY, lM, lD=1, lL, lX=0, tmp1, tmp2
       var lDPOS = new Array(3)
       var n = 0
       var firstLM = 0

       sDObj = new Date(y,m,1)            //當月一日日期

       this.length    = solarDays(y,m)    //國歷當月天數
       this.firstWeek = sDObj.getDay()    //國歷當月1日星期幾


       for(var i=0;i<this.length;i++) {

          if(lD>lX) {
             sDObj = new Date(y,m,i+1)    //當月一日日期
             lDObj = new Lunar(sDObj)     //農歷
             lY    = lDObj.year           //農歷年
             lM    = lDObj.month          //農歷月
             lD    = lDObj.day            //農歷日
             lL    = lDObj.isLeap         //農歷是否閏月
             lX    = lL? leapDays(lY): monthDays(lY,lM) //農歷當月最後一天

             if(n==0) firstLM = lM
             lDPOS[n++] = i-lD+1
          }

          //sYear,sMonth,sDay,week,
          //lYear,lMonth,lDay,isLeap,
          //cYear,cMonth,cDay
          this[i] = new calElement(y, m+1, i+1, nStr1[(i+this.firstWeek)%7],
                                   lY, lM, lD++, lL,
                                   cyclical(lDObj.yearCyl) ,cyclical(lDObj.monCyl), cyclical(lDObj.dayCyl++) )


          if((i+this.firstWeek)%7==0)   this[i].color = 'red'  //周日顏色
          if((i+this.firstWeek)%14==13) this[i].color = 'red'  //周休二日顏色
       }

       //節氣
       tmp1=sTerm(y,m*2  )-1
       tmp2=sTerm(y,m*2+1)-1
       this[tmp1].solarTerms = solarTerm[m*2]
       this[tmp2].solarTerms = solarTerm[m*2+1]
       if(m==3) this[tmp1].color = 'red' //清明顏色

       //國歷節日
       for(i in sFtv)
          if(sFtv[i].match(/^(\d{2})(\d{2})([\s\*])(.+)$/))
             if(Number(RegExp.$1)==(m+1)) {
                this[Number(RegExp.$2)-1].solarFestival += RegExp.$4 + ' '
                if(RegExp.$3=='*') this[Number(RegExp.$2)-1].color = 'red'
             }

       //月周節日
       for(i in wFtv)
          if(wFtv[i].match(/^(\d{2})(\d)(\d)([\s\*])(.+)$/))
             if(Number(RegExp.$1)==(m+1)) {
                tmp1=Number(RegExp.$2)
                tmp2=Number(RegExp.$3)
                this[((this.firstWeek>tmp2)?7:0) + 7*(tmp1-1) + tmp2 - this.firstWeek].solarFestival += RegExp.$5 + ' '
             }

       //農歷節日
       for(i in lFtv)
          if(lFtv[i].match(/^(\d{2})(.{2})([\s\*])(.+)$/)) {
             tmp1=Number(RegExp.$1)-firstLM
             if(tmp1==-11) tmp1=1
             if(tmp1 >=0 && tmp1<n) {
                tmp2 = lDPOS[tmp1] + Number(RegExp.$2) -1
                if( tmp2 >= 0 && tmp2<this.length) {
                   this[tmp2].lunarFestival += RegExp.$4 + ' '
                   if(RegExp.$3=='*') this[tmp2].color = 'red'
                }
             }
          }

       //黑色星期五
       if((this.firstWeek+12)%7==5)
          this[12].solarFestival += '黑色星期五 '

       //今日
       if(y==tY && m==tM) this[tD-1].isToday = true;

    }

    //====================== 中文日期
    function cDay(d){
       var s;

       switch (d) {
          case 10:
             s = '初十'; break;
          case 20:
             s = '二十'; break;
             break;
          case 30:
             s = '三十'; break;
             break;
          default :
             s = nStr2[Math.floor(d/10)];
             s += nStr1[d%10];
       }
       return(s);
    }

    ///////////////////////////////////////////////////////////////////////////////

    var cld;

    function drawCld(SY,SM) {
       var i,sD,s,size;
       cld = new calendar(SY,SM);

       if(SY>1874 && SY<1909) yDisplay = '光緒' + (((SY-1874)==1)?'元':SY-1874)
       if(SY>1908 && SY<1912) yDisplay = '宣統' + (((SY-1908)==1)?'元':SY-1908)
       if(SY>1911 && SY<1950) yDisplay = '民國' + (((SY-1911)==1)?'元':SY-1911)
    //   if(SY>1949) yDisplay = '共和國' + (((SY-1949)==1)?'元':SY-1949)

      // GZ.innerHTML = yDisplay +'年 農歷' + cyclical(SY-1900+36) + '年 &nbsp;&nbsp;【'+Animals[(SY-4)%12]+'】';

       if(SY>1949) yDisplay = ''

       GZ.innerHTML = yDisplay +' 農歷' + cyclical(SY-1900+36) + '年 &nbsp;&nbsp;【'+Animals[(SY-4)%12]+'】';

       YMBG.innerHTML = "&nbsp;" + SY + "<BR>&nbsp;" + monthName[SM];


       for(i=0;i<42;i++) {

          sObj=eval('SD'+ i);
          lObj=eval('LD'+ i);

          sObj.className = '';

          sD = i - cld.firstWeek;

          if(sD>-1 && sD<cld.length) { //日期內
             sObj.innerHTML = sD+1;

             if(cld[sD].isToday) sObj.className = 'todyaColor'; //今日顏色

             sObj.style.color = cld[sD].color; //國定假日顏色

             if(cld[sD].lDay==1) //顯示農歷月
                lObj.innerHTML = '<b>'+(cld[sD].isLeap?'閏':'') + cld[sD].lMonth + '月' + (monthDays(cld[sD].lYear,cld[sD].lMonth)==29?'小':'大')+'</b>';
             else //顯示農歷日
                lObj.innerHTML = cDay(cld[sD].lDay);

             s=cld[sD].lunarFestival;
             if(s.length>0) { //農歷節日
                if(s.length>6) s = s.substr(0, 4)+'…';
                s = s.fontcolor('red');
             }
             else { //國歷節日
                s=cld[sD].solarFestival;
                if(s.length>0) {
                   size = (s.charCodeAt(0)>0 && s.charCodeAt(0)<128)?8:4;
                   if(s.length>size+2) s = s.substr(0, size)+'…';
                   s = s.fontcolor('blue');
                }
                else { //廿四節氣
                   s=cld[sD].solarTerms;
                   if(s.length>0) s = s.fontcolor('limegreen');
                }
             }
             if(s.length>0) lObj.innerHTML = s;

          }
          else { //非日期
             sObj.innerHTML = '';
             lObj.innerHTML = '';
          }
       }
    }

    function changeLong()
    {
    var y,m,ly,lm,id,im,iy,yangy,yangm,deltm,miny,tt;
    CLD.SY.selectedIndex=CLD.D1.selectedIndex;
    CLD.SM.selectedIndex=CLD.D2.selectedIndex;
    yangm=0;yangy=0;
    tt=true;
    while (tt)
     {
     yangm=0;yangy=0;
       changeCld();
         for(i=0;i<42;i++)
         {
            sD = i - cld.firstWeek;
            if(sD>-1 && sD<cld.length)
            { //日期內
             if ((cld[sD].lMonth==CLD.D2.selectedIndex+1)&&(cld[sD].lYear==CLD.D1.selectedIndex+1900))
             {
         yangy=CLD.SY.selectedIndex+1900;  yangm=CLD.SM.selectedIndex ;
         tt=false;
         break;
         }
             }
         }
         if (!tt) break;
      
       pushBtm('MD');
       changeCld();

    //   alert(CLD.SY.selectedIndex+" "+CLD.SM.selectedIndex);

         for(i=0;i<42;i++)
         {
            sD = i - cld.firstWeek;
            if(sD>-1 && sD<cld.length)
            { //日期內
             if ((cld[sD].lMonth==CLD.D2.selectedIndex+1)&&(cld[sD].lYear==CLD.D1.selectedIndex+1900))
             {
         yangy=CLD.SY.selectedIndex+1900;  yangm=CLD.SM.selectedIndex ;
         tt=false;
         break;
         }
             }
         }
       break;  
     }
    //  alert(yangy+" "+yangm);
     

    //CLD.SY.selectedIndex=yangy;//-1900;
    //pushBtm('YU');
    //pushBtm('YD');
    CLD.SM.selectedIndex=yangm;
    pushBtm('MD');
    pushBtm('MU');
      
       
      
    }
    //changeLong end

    function changeCld() {
       var y,m;
       y=CLD.SY.selectedIndex+1900;
       m=CLD.SM.selectedIndex;
       drawCld(y,m);
    }

    function pushBtm(K) {
       switch (K){
          case 'YU' :
             if(CLD.SY.selectedIndex>0) CLD.SY.selectedIndex--;
             break;
          case 'YD' :
             if(CLD.SY.selectedIndex<149) CLD.SY.selectedIndex++;
             break;
          case 'MU' :
             if(CLD.SM.selectedIndex>0) {
                CLD.SM.selectedIndex--;
             }
             else {
                CLD.SM.selectedIndex=11;
                if(CLD.SY.selectedIndex>0) CLD.SY.selectedIndex--;
             }
             break;
          case 'MD' :
             if(CLD.SM.selectedIndex<11) {
                CLD.SM.selectedIndex++;
             }
             else {
                CLD.SM.selectedIndex=0;
                if(CLD.SY.selectedIndex<149) CLD.SY.selectedIndex++;
             }
             break;
          default :
             CLD.SY.selectedIndex=tY-1900;
             CLD.SM.selectedIndex=tM;
       }
       changeCld();
    }

     

    var Today = new Date();
    var tY = Today.getFullYear();
    var tM = Today.getMonth();
    var tD = Today.getDate();
    //////////////////////////////////////////////////////////////////////////////

    var width = "130";
    var offsetx = 2;
    var offsety = 16;

    var x = 0;
    var y = 0;
    var snow = 0;
    var sw = 0;
    var cnt = 0;

    var dStyle;
    document.onmousemove = mEvn;

    //顯示詳細日期資料
    function mOvr(v) {
       var s,festival;
       var sObj=eval('SD'+ v);
       var d=sObj.innerHTML-1;

          //sYear,sMonth,sDay,week,
          //lYear,lMonth,lDay,isLeap,
          //cYear,cMonth,cDay

       if(sObj.innerHTML!='') {

          sObj.style.cursor = 's-resize';

          if(cld[d].solarTerms == '' && cld[d].solarFestival == '' && cld[d].lunarFestival == '')
             festival = '';
          else
             festival = '<TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR="#CCFFCC"><TR><TD>'+
             '<FONT COLOR="#000000" STYLE="font-size:9pt;">'+cld[d].solarTerms + ' ' + cld[d].solarFestival + ' ' + cld[d].lunarFestival+'</FONT></TD>'+
             '</TR></TABLE>';

          s= '<TABLE WIDTH="130" BORDER=0 CELLPADDING="2" CELLSPACING=0 BGCOLOR="#000066"><TR><TD>' +
             '<TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD ALIGN="right"><FONT COLOR="#ffffff" STYLE="font-size:9pt;">'+
             cld[d].sYear+' 年 '+cld[d].sMonth+' 月 '+cld[d].sDay+' 日<br>星期'+cld[d].week+'<br>'+
             '<font color="violet">農歷'+(cld[d].isLeap?'閏 ':' ')+cld[d].lMonth+' 月 '+cld[d].lDay+' 日</font><br>'+
             '<font color="yellow">'+cld[d].cYear+'年 '+cld[d].cMonth+'月 '+cld[d].cDay + '日</font>'+
             '</FONT></TD></TR></TABLE>'+ festival +'</TD></TR></TABLE>';


          document.all["detail"].innerHTML = s;

        if (snow == 0) {
             dStyle.left = x+offsetx-(width/2);
             dStyle.top = y+offsety;
         dStyle.visibility = "visible";
         snow = 1;
        }
     }
    }

    //清除詳細日期資料
    function mOut() {
     if ( cnt >= 1 ) { sw = 0 }
     if ( sw == 0 ) { snow = 0; dStyle.visibility = "hidden";}
     else cnt++;
    }

    //取得位置
    function mEvn() {
       x=event.x;
       y=event.y;
     if (document.body.scrollLeft)
        {x=event.x+document.body.scrollLeft; y=event.y+document.body.scrollTop;}
     if (snow){
          dStyle.left = x+offsetx-(width/2)
          dStyle.top = y+offsety
     }
    }

    ///////////////////////////////////////////////////////////////////////////


    function tick() {
       var today
       today = new Date()
       Clock.innerHTML = today.toLocaleString().replace(/(年|月)/g, "/").replace(/日/, "");
    //   Clock.innerHTML = TimeAdd(today.toGMTString(), CLD.TZ.value)
       window.setTimeout("tick()", 1000);
    }

    function setCookie(name, value) {
     var today = new Date()
     var expires = new Date()
     expires.setTime(today.getTime() + 1000*60*60*24*365)
     document.cookie = name + "=" + escape(value) + "; expires=" + expires.toGMTString()
    }

    function getCookie(Name) {
       var search = Name + "="
       if(document.cookie.length > 0) {
          offset = document.cookie.indexOf(search)
          if(offset != -1) {
             offset += search.length
             end = document.cookie.indexOf(";", offset)
             if(end == -1) end = document.cookie.length
             return unescape(document.cookie.substring(offset, end))
          }
          else return ""
       }
    }

    /////////////////////////////////////////////////////////

    function initial() {
       dStyle = detail.style;
       CLD.SY.selectedIndex=tY-1900;
       CLD.SM.selectedIndex=tM;
       drawCld(tY,tM);

    //   CLD.TZ.selectedIndex=getCookie("TZ");
    //   changeTZ();
       tick();
    }

     

    //-->
    </SCRIPT>

    <STYLE>.todyaColor {
     BACKGROUND-COLOR: aqua
    }
    </STYLE>

    <META content="Microsoft FrontPage 6.0" name=GENERATOR></HEAD>
    <BODY onload=initial()>
    <SCRIPT language=JavaScript><!--
       if(navigator.appName == "Netscape" || parseInt(navigator.appVersion) < 4)
       document.write("<h1>你的瀏覽器無法執行此程序。</h1>此程序在 IE4 以后的版本才能執行!!")
    //--></SCRIPT>

    <DIV id=detail style="POSITION: absolute"></DIV>
    <FORM name=CLD>
    <div align="center">
    <TABLE width="672" align="right" height="259" bordercolordark="#CC9900" border="4" background="l11.gif">
      <CENTER>
    <center>
      <TBODY>
      </center></center>
      <TR>
      <TD align=center vAlign=top width="170" height="255">
      <div align="center">
        <center>
      <TABLE BORDER=1 COLSPAN=2 width="221">
      <CENTER>
        <center><FONT size=2
          style="FONT-SIZE: 9pt">
        <td width="209">
          <p align="center"><font style="font-size:10.8pt" color=RED>本地計算機時間:</FONT></FONT><BR><FONT color=#000080 face=ARIAL
          id=Clock size=3 align="center"></FONT>
          <P><!--時區 *表示自動調整為日光節約時間-->
          </center>
       </CENTER>
       </TABLE>
      </center>
        </div>
        <div align="center">
          <center>
          <table border=1 height="1" width="16">
          <td height="1" width="255">
                <table width="212" height="1"><CENTER>
                <center>
          <FONT id=tSave
          style="COLOR: red; FONT-FAMILY: Wingdings; FONT-SIZE: 18pt"></FONT>
          <td height="1" width="152"><font size="2"><FONT style="FONT-SIZE: 9pt">
          <font color="#0000FF">公歷</font>年</font><FONT color=#ffffff
                style="FONT-SIZE: 9pt"><SELECT name=SY onchange=changeCld()
                style="FONT-SIZE: 9pt">
                  <SCRIPT language=JavaScript><!--
                for(i=1900;i<2050;i++) document.write('<option>'+i)
                //--></SCRIPT>
                </SELECT> </FONT>月<FONT color=#ffffff
                style="FONT-SIZE: 9pt"><SELECT name=SM onchange=changeCld()
                style="FONT-SIZE: 9pt">
                  <SCRIPT language=JavaScript><!--
                for(i=1;i<13;i++) document.write('<option>'+i)
                //--></SCRIPT>
                </SELECT></FONT></font>
          <P><font size="2"><FONT style="FONT-SIZE: 9pt"><font color="#0000FF">陰歷</font>年</font><FONT color=#ffffff
                style="FONT-SIZE: 9pt"><SELECT name=D1 onchange=changeLong()
                style="FONT-SIZE: 9pt">
                  <SCRIPT language=JavaScript><!--
                for(i=1900;i<2050;i++) document.write('<option>'+i)
                //--></SCRIPT>
                </SELECT> </FONT>月<FONT color=#ffffff
                style="FONT-SIZE: 9pt"><SELECT name=D2 onchange=changeLong()
                style="FONT-SIZE: 9pt">
                  <SCRIPT language=JavaScript><!--
                for(i=1;i<13;i++) document.write('<option>'+i)
                //--></SCRIPT>
                </SELECT></FONT></font></P>
          <div align="center" style="width: 4; height: 1">
          </div>
          <td width="1" align="center" height="1">
          <BUTTON onclick="pushBtm('MU')"  style="FONT-SIZE: 9pt">月↑</BUTTON>
          <BUTTON onclick="pushBtm('')" style="FONT-SIZE: 9pt">當月</BUTTON>
          <BUTTON onclick="pushBtm('MD')"  style="FONT-SIZE: 9pt">月↓</BUTTON>
          </td>
            </center></center>
     <tr>
      <CENTER>
          <TD align=center vAlign=top width=152 height="1">
          <BUTTON onclick="pushBtm('YU')" style="FONT-SIZE: 9pt">年↑</BUTTON>
          <BUTTON onclick="pushBtm('YD')" style="FONT-SIZE: 9pt">年↓</BUTTON>
          </TD>
            </center>
          <td colspan=2 width="46" height="1">
              <p align="left"><INPUT onclick="javascript:window.close();" style="FONT-SIZE: 9pt" type=button value=關閉></p>
          </td>

           </table>
      <CENTER>
            <table border="1" width="100%" height="1" bordercolordark="#FFFFCC">
            <tr>
              <td width="100%" height="1"><font style="font-size:10.8pt" color=#0>  
                陰歷存在跨月情況,如果查找到的陰歷月跨兩個公歷月,用<font color=blue>[月↑][月↓]</font>翻動可以找到你想要的確切日期。</font></td>
            </tr>
          </table>
          </CENTER>
          </table>
          </center>
        </div>
        <TD align=center width="423" height="255">
          <DIV style="position: absolute; top: 31; z-index: -1; left: 270; width: 347; height: 108">
            <p>
            <p>
            <p><FONT id=YMBG
          style="COLOR: #f0f0f0; FONT-FAMILY: 'Arial Black'; FONT-SIZE: 20pt"> </FONT>
          </DIV>
          <div align="center">
          <center>
          <TABLE border=0 height="27" cellspacing="1">
            <TBODY>
            <TR>
              <TD bgColor=#000080 colSpan=7 align="center" height="24"><FONT color=#000080 size=2
                style="FONT-SIZE: 9pt">月</FONT> <FONT color=#ffffff face=宋體 id=GZ
                size=4></FONT><BR></TD></TR>
            <TR align=center bgColor=#e0e0e0>
              <TD width=54 height="1" align="center" bgcolor="#99CCFF"><font size="2">日</font></TD>
              <TD width=54 height="1" align="center" bgcolor="#99CCFF"><font size="2">一</font></TD>
              <TD width=54 height="1" align="center" bgcolor="#99CCFF"><font size="2">二</font></TD>
              <TD width=50 height="1" align="center" bgcolor="#99CCFF"><font size="2">三</font></TD>
              <TD width=54 height="1" align="center" bgcolor="#99CCFF"><font size="2">四</font></TD>
              <TD width=54 height="1" align="center" bgcolor="#99CCFF"><font size="2">五</font></TD>
              <TD width=54 height="1" align="center" bgcolor="#99CCFF"><font size="2">六</font></TD></TR>
            <SCRIPT language=JavaScript><!--
                var gNum
                for(i=0;i<6;i++) {
                   document.write('<tr align=center>')
                   for(j=0;j<7;j++) {
                      gNum = i*7+j
                      document.write('<td id="GD' + gNum +'" onMouseOver="mOvr(' + gNum +')" onMouseOut="mOut()"><font id="SD' + gNum +'" size=2 face="Arial Black"')
                      if(j == 0) document.write(' color=red')
                      if(j == 6)
                         if(i%2==1) document.write(' color=red')
                            else document.write(' color=green')
                      document.write(' TITLE=""> </font><br><font id="LD' + gNum + '" size=2 style="font-size:9pt"> </font></td>')
                   }
                   document.write('</tr>')
                }
                //--></SCRIPT>
            </TBODY></TABLE>
          </center>
          </div>
      </TD>
    </TR></TBODY></TABLE>
    </div>
    </FORM> 

    </body>

    </html>



    semovy 2007-09-27 17:19 發表評論
    ]]>
    Windows關機效果分析http://m.tkk7.com/WshmAndLily/articles/148369.htmlsemovysemovyWed, 26 Sep 2007 08:39:00 GMThttp://m.tkk7.com/WshmAndLily/articles/148369.htmlhttp://m.tkk7.com/WshmAndLily/comments/148369.htmlhttp://m.tkk7.com/WshmAndLily/articles/148369.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/148369.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/148369.html基本原理分析

    Windows關機效果分析

    使用Windows系統的用戶在關機的時候,出現的界面只允許用戶選擇關機、注銷或取消動作,而桌面上的程序都不能使用,并且屏幕呈現灰色狀態。

    本例將仿照這種高亮顯示的效果在網頁上實現.

    在網頁上運用這種關機效果有什么好處呢?首先,由于單擊某一鏈接后,將用戶此時不可用的操作隱藏在后臺,將可用的操作放在屏幕最上層,并高亮顯示,可以避免用戶的誤操作。其次,將信息高亮顯示,也可以提醒用戶應該注意的事項。

    網頁中實現關機效果分析

    在網頁中實現這種效果的原理很簡單。創建兩個圖層,一個為遮蓋層,覆蓋整個頁面,并且顯示為灰色;另一個圖層作為高亮顯示的部分,在遮蓋層的上方,這可通過設置圖層的z-index屬性來設置。當取消關機效果后,只需將這兩個圖層元素在頁面中刪除即可。

    以下代碼實現顯示關機效果。

    以下是引用片段:
    <html>

    <head>

    <title>html" class="wordstyle">asp?typeid=119" snap_preview_added="no">Ajax LightBox Sample</title>

    <style type="text/html" class="wordstyle">asp?typeid=38" snap_preview_added="no">CSS">

    #lightbox {/*該層為高亮顯示層*/

    BORDER-RIGHT: #fff 1px solid;

    BORDER-TOP: #fff 1px solid;

    DISPLAY: block;

    Z-INDEX: 9999; /*設置該層在網頁的最上端,設置足夠大*/

    BACKGROUND: #fdfce9; /*設置背景色*/

    LEFT: 50%;

    MARGIN: -220px 0px 0px -250px;

    BORDER-LEFT: #fff 1px solid;

    WIDTH: 500px;

    BORDER-BOTTOM: #fff 1px solid;

    POSITION: absolute;

    TOP: 50%;

    HEIGHT: 400px;

    TEXT-ALIGN: left

    }

    #overlay {/*該層為覆蓋層*/

    DISPLAY: block;

    Z-INDEX: 9998; /*設置高亮層的下方*/

    FILTER: alpha(opacity=80); /*設置成透明*/

    LEFT: 0px;

    WIDTH: 100%;

    POSITION: absolute;

    TOP: 0px;

    HEIGHT: 100%;

    BACKGROUND-COLOR: #000;

    moz-opacity: 0.8;

    opacity: .80

    }

    </style>

    </head>

    <body>

    <!--該層為覆蓋層 -->

    <div id="overlay"></div>

    <!--該層為高亮顯示層 -->

    <div id="lightbox"></div>

    </body>

    </html>


    需要注意的是,在IE瀏覽器中如果有<select>標記,則該標記不能被覆蓋層覆蓋,但在其他瀏覽器中則可以覆蓋。

    在使用IE瀏覽器時,要先將網頁中的<select>元素隱藏起來。如以下代碼可以用于隱藏頁面所有的<select>元素。

    selects = document.getElementsByTagName('select');

    以下是引用片段:
    for(i = 0; i < selects.length; i++) {

    selects[i].style.visibility = visibility;

    }
    代碼實現

    客戶端代碼

    客戶端的頁面上有兩個鏈接,用戶單擊鏈接后,向服務器端發送請求,并將返回信息顯示到高亮層上??蛻舳说木W頁文件代碼如下所示:

    以下是引用片段:
    <html>

    <head>

    <title>AJAX LightBox</title>

    <!-- 本例使用的css樣式表文件-->

    <LINK href="lightbox.css" type=text/css rel=stylesheet>

    <!--prototype類文件-->

    <script type="text/html" class="wordstyle">asp?typeid=36" snap_preview_added="no">html" class="wordstyle">

    javascript" src="js/prototype.js" ></script>

    <!--本例使用的html" class="wordstyle">javascript代碼-->

    <script type="text/html" class="wordstyle">javascript" src="lightbox.js" ></script>

    </head>

    <body>

    <DIV id=container>

    <UL>

    <LI><A class=lbOn href="getInfo.html" class="wordstyle">jsp?id=one">One</A>

    </LI>

    <LI><A class=lbOn href="getInfo.html" class="wordstyle">jsp?id=two">Two</A>

    </LI>

    </UL>

    </div>

    </body>

    </html>


    另外,還需要設置該頁面所使用CSS樣式。lightbox.css樣式表文件代碼如下所示:

    以下是引用片段:
    #lightbox {

    BORDER-RIGHT: #fff 1px solid;

    BORDER-TOP: #fff 1px solid;

    DISPLAY: none;

    Z-INDEX: 9999;

    BACKGROUND: #fdfce9;

    LEFT: 50%;

    MARGIN: -220px 0px 0px -250px;

    BORDER-LEFT: #fff 1px solid;

    WIDTH: 500px;

    BORDER-BOTTOM: #fff 1px solid;

    POSITION: absolute;

    TOP: 50%;

    HEIGHT: 400px;

    TEXT-ALIGN: left

    }

    UNKNOWN {

    POSITION: fixed

    }

    #overlay {

    DISPLAY: none;

    Z-INDEX: 5000; FILTER: alpha(opacity=80);

    LEFT: 0px;

    WIDTH: 100%;

    POSITION: absolute;

    TOP: 0px;

    HEIGHT: 100%;

    BACKGROUND-COLOR: #000; moz-opacity: 0.8; opacity: .80

    }

    UNKNOWN {

    POSITION: fixed

    }

    .done#lightbox #lbLoadMessage {

    DISPLAY: none

    }

    .done#lightbox #lbContent {

    DISPLAY: block

    }

    .loading#lightbox #lbContent {

    DISPLAY: none

    }

    .loading#lightbox #lbLoadMessage {

    DISPLAY: block

    }

    .done#lightbox IMG {

    WIDTH: 100%; HEIGHT: 100%

    }



    客戶端腳本

    由于瀏覽器對圖層的支持不同,所以首先要確定客戶端瀏覽器的類型。以下代碼可用于判斷客戶端的瀏覽器和html" class="wordstyle">asp"

    以下是引用片段:
    snap_preview_added="no">操作系統。

    var detect = navigator.userAgent.toLowerCase();

    var OS,browser,version,total,thestring;

    function getBrowserInfo() {

    if (checkIt('konqueror')) {

    browser = "Konqueror";

    OS = "html" class="wordstyle">asp?typeid=60" snap_preview_added="no">Linux";

    }

    else if (checkIt('safari')) browser = "Safari"

    else if (checkIt('omniWeb')) browser = "OmniWeb"

    else if (checkIt('opera')) browser = "Opera"

    else if (checkIt('Webtv')) browser = "WebTV";

    else if (checkIt('icab')) browser = "iCab"

    else if (checkIt('msie')) browser = "Internet Explorer"

    else if (!checkIt('compatible')) {

    browser = "Netscape Navigator"

    version = detect.charAt(8);

    }

    else browser = "An unknown browser";

    if (!version) version = detect.charAt(place + thestring.length);

    if(!OS) {

    if (checkIt('linux')) OS = "Linux";

    else if (checkIt('x11')) OS = "Unix";

    else if (checkIt('mac')) OS = "Mac"

    else if (checkIt('win')) OS = "Windows"

    else OS = "an unknown operating system";

    }

    }

    function checkIt(string) {

    place = detect.indexOf(string) + 1;

    thestring = string;

    return place;

    }



    下面看一下網頁加載時需要添加的方法。有關網頁加載和初始化方法代碼如下:
    //網頁加載調用initialize和getBrowserInfo方法

    Event.observe(window, 'load', initialize, false);

    Event.observe(window, 'load', getBrowserInfo, false);

    //未加載時清空緩存

    Event.observe(window, 'unload', Event.unloadCache, false);

    //初始化方法

    function initialize(){

    //調用該方法為該頁添加覆蓋層和高亮顯示層

    addLightboxMarkup();

    //為每個可高亮顯示的元素創建lightbox對象

    lbox = document.getElementsByClassName('lbOn');

    for(i = 0; i < lbox.length; i++) {

    valid = new lightbox(lbox[i]);

    }

    }

    // 使用Dom方法創建覆蓋層和高亮層

    function addLightboxMarkup() {

    bod = document.getElementsByTagName('body')[0];

    overlay = document.createElement('div');

    overlay.id = 'overlay';

    lb = document.createElement('div');

    lb.id = 'lightbox';

    lb.className = 'loading';

    lb.innerHTML = '<div id="lbLoadMessage">' +

    '<p>Loading</p>' +

    '</div>';

    bod.appendChild(overlay);

    bod.appendChild(lb);

    }



    封裝lightbox類

    初始化數據時,為每個可高亮顯示的鏈接創建了lightbox對象。該類的代碼具體實現如下:
    var lightbox = Class.create();  

    lightbox.prototype = {

    yPos : 0,

    xPos : 0,

    //構造方法,ctrl為創建該對象的元素

    initialize: function(ctrl) {

    //將該元素的鏈接賦值給this.content

    this.content = ctrl.href;

    //為該元素添加onclick事件activate方法

    Event.observe(ctrl, 'click', this.activate.bindAsEventListener(this), false);

    ctrl.onclick = function(){return false;};

    },

    //當單擊鏈接時

    activate: function(){

    if (browser == 'Internet Explorer'){//判斷為IE瀏覽器

    this.getScroll();

    this.prepareIE('100%', 'hidden');

    this.setScroll(0,0);

    this.hideSelects('hidden');//隱藏所有的<select>標記

    }

    //調用該類中的displayLightbox方法

    this.displayLightbox("block");

    },

    prepareIE: function(height, overflow){

    bod = document.getElementsByTagName('body')[0];

    bod.style.height = height;

    bod.style.overflow = overflow;



    htm = document.getElementsByTagName('html')[0];

    htm.style.height = height;

    htm.style.overflow = overflow;

    },

    hideSelects: function(visibility){

    selects = document.getElementsByTagName('select');

    for(i = 0; i < selects.length; i++) {

    selects[i].style.visibility = visibility;

    }

    },

    getScroll: function(){

    if (self.pageYOffset) {

    this.yPos = self.pageYOffset;

    } else if (document.documentElement && document.documentElement.scrollTop){

    this.yPos = document.documentElement.scrollTop;

    } else if (document.body) {

    this.yPos = document.body.scrollTop;

    }

    },

    setScroll: function(x, y){

    window.scrollTo(x, y);

    },

    displayLightbox: function(display){

    //將覆蓋層顯示

    $('overlay').style.display = display;

    //將高亮層顯示

    $('lightbox').style.display = display;

    //如果不是隱藏狀態,則調用該類中的loadInfo方法

    if(display != 'none') this.loadInfo();

    },

    //該方法發送Ajax請求

    loadInf function() {

    //當請求完成后調用本類中processInfo方法

    var myAjax = new Ajax.Request(

    this.content,

    {method: 'get', parameters: "", onComplete: this.processInfo.bindAsEvent Listener (this)}

    );

    },

    // 將返回的文本信息顯示到高亮層上

    processInf function(response){

    //獲得返回的文本數據

    var result = response.responseText;

    //顯示到高亮層

    info = "<div id='lbContent'>" + result + "</div>";

    //在info元素前插入一個元素

    new Insertion.Before($('lbLoadMessage'), info)

    //改變該元素的class name的值

    $('lightbox').className = "done";

    //調用本類中actions方法

    this.actions();

    var ctrl=$('lightbox');

    //為高亮層添加事件處理方法reset

    Event.observe(ctrl, 'click', this.reset.bindAsEventListener(this), false);

    ctrl.onclick = function(){return false;};

    },

    //恢復初始狀態

    reset:function(){

    //隱藏覆蓋層

    $('overlay').style.display="none";

    //清空返回數據

    $('lbContent').innerHTML="";

    //隱藏高亮層

    $('lightbox').style.display="none";

    },

    // Search through new links within the lightbox, and attach click event

    actions: function(){

    lbActions = document.getElementsByClassName('lbAction');

    for(i = 0; i < lbActions.length; i++) {

    Event.observe(lbActions[i], 'click',

    this[lbActions[i].rel].bindAs EventListener(this), false);

    lbActions[i].onclick = function(){return false;};

    }

    }

    }


    提示:由于該對象比較復雜,讀者可以仔細參閱代碼的注釋部分。

    服務器端代碼

    服務器端首先獲得查詢中的“id”值,如果該值為null或為空,則設置為默認值。然后判斷該值,并且返回相應的一段字符串信息。處理請求的getInfohtml" class="wordstyle">jsp頁面代碼如下:

    以下是引用片段:
    <%@ page language="java" import="java.util.*"%>

    <%

    //獲得請求中id的值

    String imgID = request.getParameter("id");

    if (imgID==null||imgID.equals(""))//如果為null或為空

    imgID="one";//設定為默認值

    if ( imgID.equals("one"))//如果為one

    {

    %>

    <h3 id="cartitle" style="border-bottom: 1px solid #C0C0C0; margin-bottom: -5px">Porsche Carrera GT</h3>

    <p>The Carrera GT has a 5.7 litre V10 internal combustion engine that produces

    605 SAE horsepower (451 kW). Porsche claims it will accelerate from 0 to 100

    km/h (62 mph) in 3.9 seconds and has a maximum speed of 330 km/h (204 mph).

    With 605 hp, the car weighs 1,380 kg (3,042 lb). The Carrera GT is only

    offered with a six-speed manual transmission, in contrast to its rival the

    Ferrari Enzo that is only offered with sequential manual transmission. Also

    the Carrera GT is significantly less expensive than the Ferrari Enzo. The

    Ferrari Enzo is priced around $660,000 to the Carrera GT's $440,000. The

    Carrera GT is known for its high quality and reliability which makes it one of

    the best supercars ever.

    <%}else{//否則

    %>

    <h3 id="cartitle" style="border-bottom: 1px solid #C0C0C0; margin-bottom: -5px">Ferrari Testarossa</h3>

    <p>The Ferrari Testarossa is an V12 mid-engined sports car made by Ferrari.

    The name, which means &quot;red head&quot;, comes from the red painted cylinder heads on

    the flat-12 engine. The engine was technically a 180?V engine since it shared

    flat-plane crankshaft pins with opposing cylinders. Output was 390 hp (291

    kW), and the car won many comparison tests and admirers - it was featured on

    the cover of Road &amp; Track magazine nine times in just five years. Almost

    10,000 Testarossas, 512TRs, and 512Ms were produced, making this one of the

    most common Ferrari models despite its high price and exotic design.

    <%}%>

    html" class="wordstyle">aspx" snap_preview_added="spa" snap_icon_added="spa" act_suffix ic

    【責任編輯:城塵 TEL:(010) 68476636-8003】


    semovy 2007-09-26 16:39 發表評論
    ]]>
    經典的帶陰影的可拖動的浮動層http://m.tkk7.com/WshmAndLily/articles/146368.htmlsemovysemovyWed, 19 Sep 2007 02:34:00 GMThttp://m.tkk7.com/WshmAndLily/articles/146368.htmlhttp://m.tkk7.com/WshmAndLily/comments/146368.htmlhttp://m.tkk7.com/WshmAndLily/articles/146368.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/146368.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/146368.html <html>
    <head>
    <title>MyPixbot</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script language="JavaScript" type="text/JavaScript">
    <!--
    function MM_reloadPage(init) {  //reloads the window if Nav4 resized
      if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
        document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
      else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
    }
    MM_reloadPage(true);
    function MM_findObj(n, d) { //v4.01
      var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
        d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
      if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
      for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
      if(!x && d.getElementById) x=d.getElementById(n); return x;
    }
    function MM_showHideLayers() { //v6.0
      var i,p,v,obj,args=MM_showHideLayers.arguments;
      for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
        if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
        obj.visibility=v; }
    }
    function MM_dragLayer(objName,x,hL,hT,hW,hH,toFront,dropBack,cU,cD,cL,cR,targL,targT,tol,dropJS,et,dragJS) { //v4.01
      //Copyright 1998 Macromedia, Inc. All rights reserved.
      var i,j,aLayer,retVal,curDrag=null,curLeft,curTop,IE=document.all,NS4=document.layers;
      var NS6=(!IE&&document.getElementById), NS=(NS4||NS6); if (!IE && !NS) return false;
      retVal = true; if(IE && event) event.returnValue = true;
      if (MM_dragLayer.arguments.length > 1) {
        curDrag = MM_findObj(objName); if (!curDrag) return false;
        if (!document.allLayers) { document.allLayers = new Array();
          with (document) if (NS4) { for (i=0; i<layers.length; i++) allLayers[i]=layers[i];
            for (i=0; i<allLayers.length; i++) if (allLayers[i].document && allLayers[i].document.layers)
              with (allLayers[i].document) for (j=0; j<layers.length; j++) allLayers[allLayers.length]=layers[j];
          } else {
            if (NS6) { var spns = getElementsByTagName("span"); var all = getElementsByTagName("div");
              for (i=0;i<spns.length;i++) if (spns[i].style&&spns[i].style.position) allLayers[allLayers.length]=spns[i];}
            for (i=0;i<all.length;i++) if (all[i].style&&all[i].style.position) allLayers[allLayers.length]=all[i];
        } }
        curDrag.MM_dragOk=true; curDrag.MM_targL=targL; curDrag.MM_targT=targT;
        curDrag.MM_tol=Math.pow(tol,2); curDrag.MM_hLeft=hL; curDrag.MM_hTop=hT;
        curDrag.MM_hWidth=hW; curDrag.MM_hHeight=hH; curDrag.MM_toFront=toFront;
        curDrag.MM_dropBack=dropBack; curDrag.MM_dropJS=dropJS;
        curDrag.MM_everyTime=et; curDrag.MM_dragJS=dragJS;
        curDrag.MM_oldZ = (NS4)?curDrag.zIndex:curDrag.style.zIndex;
        curLeft= (NS4)?curDrag.left:(NS6)?parseInt(curDrag.style.left):curDrag.style.pixelLeft;
        if (String(curLeft)=="NaN") curLeft=0; curDrag.MM_startL = curLeft;
        curTop = (NS4)?curDrag.top:(NS6)?parseInt(curDrag.style.top):curDrag.style.pixelTop;
        if (String(curTop)=="NaN") curTop=0; curDrag.MM_startT = curTop;
        curDrag.MM_bL=(cL<0)?null:curLeft-cL; curDrag.MM_bT=(cU<0)?null:curTop-cU;
        curDrag.MM_bR=(cR<0)?null:curLeft+cR; curDrag.MM_bB=(cD<0)?null:curTop+cD;
        curDrag.MM_LEFTRIGHT=0; curDrag.MM_UPDOWN=0; curDrag.MM_SNAPPED=false; //use in your JS!
        document.onmousedown = MM_dragLayer; document.onmouseup = MM_dragLayer;
        if (NS) document.captureEvents(Event.MOUSEDOWN|Event.MOUSEUP);
      } else {
        var theEvent = ((NS)?objName.type:event.type);
        if (theEvent == 'mousedown') {
          var mouseX = (NS)?objName.pageX : event.clientX + document.body.scrollLeft;
          var mouseY = (NS)?objName.pageY : event.clientY + document.body.scrollTop;
          var maxDragZ=null; document.MM_maxZ = 0;
          for (i=0; i<document.allLayers.length; i++) { aLayer = document.allLayers[i];
            var aLayerZ = (NS4)?aLayer.zIndex:parseInt(aLayer.style.zIndex);
            if (aLayerZ > document.MM_maxZ) document.MM_maxZ = aLayerZ;
            var isVisible = (((NS4)?aLayer.visibility:aLayer.style.visibility).indexOf('hid') == -1);
            if (aLayer.MM_dragOk != null && isVisible) with (aLayer) {
              var parentL=0; var parentT=0;
              if (NS6) { parentLayer = aLayer.parentNode;
                while (parentLayer != null && parentLayer.style.position) {            
                  parentL += parseInt(parentLayer.offsetLeft); parentT += parseInt(parentLayer.offsetTop);
                  parentLayer = parentLayer.parentNode;
              } } else if (IE) { parentLayer = aLayer.parentElement;      
                while (parentLayer != null && parentLayer.style.position) {
                  parentL += parentLayer.offsetLeft; parentT += parentLayer.offsetTop;
                  parentLayer = parentLayer.parentElement; } }
              var tmpX=mouseX-(((NS4)?pageX:((NS6)?parseInt(style.left):style.pixelLeft)+parentL)+MM_hLeft);
              var tmpY=mouseY-(((NS4)?pageY:((NS6)?parseInt(style.top):style.pixelTop) +parentT)+MM_hTop);
              if (String(tmpX)=="NaN") tmpX=0; if (String(tmpY)=="NaN") tmpY=0;
              var tmpW = MM_hWidth;  if (tmpW <= 0) tmpW += ((NS4)?clip.width :offsetWidth);
              var tmpH = MM_hHeight; if (tmpH <= 0) tmpH += ((NS4)?clip.height:offsetHeight);
              if ((0 <= tmpX && tmpX < tmpW && 0 <= tmpY && tmpY < tmpH) && (maxDragZ == null
                  || maxDragZ <= aLayerZ)) { curDrag = aLayer; maxDragZ = aLayerZ; } } }
          if (curDrag) {
            document.onmousemove = MM_dragLayer; if (NS4) document.captureEvents(Event.MOUSEMOVE);
            curLeft = (NS4)?curDrag.left:(NS6)?parseInt(curDrag.style.left):curDrag.style.pixelLeft;
            curTop = (NS4)?curDrag.top:(NS6)?parseInt(curDrag.style.top):curDrag.style.pixelTop;
            if (String(curLeft)=="NaN") curLeft=0; if (String(curTop)=="NaN") curTop=0;
            MM_oldX = mouseX - curLeft; MM_oldY = mouseY - curTop;
            document.MM_curDrag = curDrag;  curDrag.MM_SNAPPED=false;
            if(curDrag.MM_toFront) {
              eval('curDrag.'+((NS4)?'':'style.')+'zIndex=document.MM_maxZ+1');
              if (!curDrag.MM_dropBack) document.MM_maxZ++; }
            retVal = false; if(!NS4&&!NS6) event.returnValue = false;
        } } else if (theEvent == 'mousemove') {
          if (document.MM_curDrag) with (document.MM_curDrag) {
            var mouseX = (NS)?objName.pageX : event.clientX + document.body.scrollLeft;
            var mouseY = (NS)?objName.pageY : event.clientY + document.body.scrollTop;
            newLeft = mouseX-MM_oldX; newTop  = mouseY-MM_oldY;
            if (MM_bL!=null) newLeft = Math.max(newLeft,MM_bL);
            if (MM_bR!=null) newLeft = Math.min(newLeft,MM_bR);
            if (MM_bT!=null) newTop  = Math.max(newTop ,MM_bT);
            if (MM_bB!=null) newTop  = Math.min(newTop ,MM_bB);
            MM_LEFTRIGHT = newLeft-MM_startL; MM_UPDOWN = newTop-MM_startT;
            if (NS4) {left = newLeft; top = newTop;}
            else if (NS6){style.left = newLeft; style.top = newTop;}
            else {style.pixelLeft = newLeft; style.pixelTop = newTop;}
            if (MM_dragJS) eval(MM_dragJS);
            retVal = false; if(!NS) event.returnValue = false;
        } } else if (theEvent == 'mouseup') {
          document.onmousemove = null;
          if (NS) document.releaseEvents(Event.MOUSEMOVE);
          if (NS) document.captureEvents(Event.MOUSEDOWN); //for mac NS
          if (document.MM_curDrag) with (document.MM_curDrag) {
            if (typeof MM_targL =='number' && typeof MM_targT == 'number' &&
                (Math.pow(MM_targL-((NS4)?left:(NS6)?parseInt(style.left):style.pixelLeft),2)+
                 Math.pow(MM_targT-((NS4)?top:(NS6)?parseInt(style.top):style.pixelTop),2))<=MM_tol) {
              if (NS4) {left = MM_targL; top = MM_targT;}
              else if (NS6) {style.left = MM_targL; style.top = MM_targT;}
              else {style.pixelLeft = MM_targL; style.pixelTop = MM_targT;}
              MM_SNAPPED = true; MM_LEFTRIGHT = MM_startL-MM_targL; MM_UPDOWN = MM_startT-MM_targT; }
            if (MM_everyTime || MM_SNAPPED) eval(MM_dropJS);
            if(MM_dropBack) {if (NS4) zIndex = MM_oldZ; else style.zIndex = MM_oldZ;}
            retVal = false; if(!NS) event.returnValue = false; }
          document.MM_curDrag = null;
        }
        if (NS) document.routeEvent(objName);
      } return retVal;
    }
    function loadwin(obj){
     with(MM_findObj(obj))with(style){
      filters[0].apply();
      display='';
      filters[0].play();
     }
    }
    function cs(captionBG,bodyBG,tableBG){
    oldBody=document.body;
     with(oldBody){
      var newBody=cloneNode();
      style.filter='blendtrans(duration=1)';
      filters[0].apply();
      with(document.styleSheets[0]){
       with(rules[0].style){backgroundColor=captionBG;}
       with(rules[1].style){backgroundColor=bodyBG;}
       with(rules[2].style){backgroundColor=tableBG}
      }
      filters[0].play();
      setTimeout(function(){
        if(oldBody!=null){
         oldBody.applyElement(newBody, "inside")
         oldBody.swapNode(newBody);
         oldBody.removeNode(true);
         }
        },1500);
     }
    }
    //-->
    </script>
    <style type="text/css">
    <!--
    .caption {
     font-size: 9px;
     color: #FFFFFF;
     background-color: #00CCFF;
     padding-left: 5px;
     cursor: default;
     font-family: "Verdana", "Arial";
     border: 1px inset;
    }
    body {
     background-color: #f6f6f6;
     border: 1px inset;
     overflow: hidden;
    }
    table {
     background-color: #eeeeee;
    }
    td {
     font-family: "Verdana", "Arial";
     font-size: 9px;
     border: 0px;
    }
    .win {
     filter:BlendTrans(duration=1) DropShadow(Color=#cccccc, OffX=3, OffY=3) alpha(opacity=90)
    }
    a {
     text-decoration: none;
     color: #003399;
    }
    a:hover {
     color: #FF0000;
    }
    input {
     font-family: "Verdana", "Arial";
     font-size: 9px;
     border-width: 1px;
    }
    .statusbar {
     font-family: "Tahoma", "Verdana";
     font-size: 9px;
     color: #999999;
     padding-left: 3px;
    }
    .button {
     border: 1px outset;
     text-align: center;
    }
    .navframe {
     padding: 5px;
    }
    -->
    </style>
    </head>
    <body>
    <div id="assist" style="position:absolute; left:15px; top:68px; width:185px; z-index:1;display:none;" class="win" onMouseDown="MM_dragLayer('assist','',0,0,150,18,true,false,-1,-1,-1,-1,15,68,100,'',false,'')">
      <table width="180" border="1" cellpadding="0" cellspacing="0">
        <tr>
          <td class="caption">SeekAssist</td>
          <td width="14" align="center"><a href="#" onclick="with(MM_findObj('assistwin').style)display=display=='none'?'':'none'">%</a></td>
          <td width="14" align="center"><a href="#" onClick="MM_showHideLayers('assist','','hide')">X</a></td>
        </tr>
        <tr id="assistwin">
          <td height="100" colspan="3" bordercolor="#eeeeee">&nbsp;</td>
        </tr>
      </table>
            <br>
    </div>
    <script>loadwin('assist')</script>
    <div id="rank" style="position:absolute; left:15px; top:194px; width:185px; z-index:1;display:none;" class="win" onMouseDown="MM_dragLayer('rank','',0,0,150,18,true,false,-1,-1,-1,-1,15,194,100,'',false,'')">
      <table width="180" border="1" cellpadding="0" cellspacing="0">
        <tr>
          <td class="caption">SeekRank</td>
          <td width="14" align="center"><a href="#" onclick="with(MM_findObj('rankwin').style)display=display=='none'?'':'none'">%</a></td>
          <td width="14" align="center"><a href="#" onClick="MM_showHideLayers('assist','','inherit','rank','','hide')">X</a></td>
        </tr>
        <tr id="rankwin">
          <td height="100" colspan="3" bordercolor="#eeeeee">&nbsp;</td>
        </tr>
      </table>
      <br>
    </div>
    <script>setTimeout("loadwin('rank')",500)</script>
    <div id="mycolor" style="position:absolute; left:15px; top:320px; width:185px; z-index:1;display:none;" class="win" onMouseDown="MM_dragLayer('mycolor','',0,0,150,18,true,false,-1,-1,-1,-1,15,320,100,'',false,'')">
      <table width="180" border="1" cellpadding="0" cellspacing="0">
        <tr>
          <td class="caption">MyColor</td>
          <td width="14" align="center"><a href="#" onclick="with(MM_findObj('mycolorwin').style)display=display=='none'?'':'none'">%</a></td>
          <td width="14" align="center"><a href="#" onClick="MM_showHideLayers('mycolor','','hide')">X</a></td>
        </tr>
        <tr id="mycolorwin">
          <td height="100" colspan="3" bordercolor="#eeeeee"><table width="100%" border="0" cellspacing="0" cellpadding="2">
            <tr>
              <td align="center"><a href="#" onclick="cs('#00CCFF','#f6f6f6','#eeeeee')">Default</a></td>
            </tr>
            <tr>
              <td align="center"><a href="#" onclick="cs('red','#eeccee','#eeddee')">StyleSheet#1</a></td>
            </tr>
            <tr>
              <td align="center"><a href="#" onclick="cs('#99ccff','#eeeeee','#ccddff')">StyleSheet#2</a></td>
            </tr>
            <tr>
              <td align="center"><a href="#" onclick="cs('#ff9999','#ffffff','#ffeeff')">StyleSheet#3</a></td>
            </tr>
            <tr>
              <td align="center"><a href="#" onclick="cs('skyblue','#eeeeee','#99ddff')">StyleSheet#4</a></td>
            </tr>
            <tr>
              <td align="center"><a href="#" onclick="cs('#009900','#eeffee','#ddffdd')">StyleSheet#5</a></td>
            </tr>
          </table></td>
        </tr>
      </table>
      <br>
    </div>
    <script>setTimeout("loadwin('mycolor')",1000)</script>
    <div id="results" style="position:absolute; left:204px; top:68px; width:575px; z-index:1;display:none;" class="win" onMouseDown="MM_dragLayer('results','',0,0,400,18,true,false,-1,-1,-1,-1,204,68,50,'',false,'')">
      <table width="570" border="1" cellpadding="0" cellspacing="0">
        <tr>
          <td><table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td class="caption">Results</td>
                <td width="12" class="button"><a href="#" onClick="with(MM_findObj('resultswin').style)display=display=='none'?'':'none'">%</a></td>
                <td width="12" class="button"><a href="#" onClick="MM_showHideLayers('results','','inherit')">X</a></td>
              </tr>
          </table></td>
        </tr>
        <tr>
          <td height="20" bordercolor="#eeeeee"><input name="url" type="text" value="http://www.google.com/search?q=ezlee" size="100">
          <a href="#" onclick="mainframe.location=url.value">Search</a></td>
        </tr>
        <tr id="resultswin">
          <td height="318" valign="top" class="navframe"><aiframe name="mainframe" id="mainframe" src="http://www.google.com/search?q=ezlee" width="100%" height="100%" frameborder="0" scrolling="auto"><font color="#FF0000">Welcome!</font></aiframe></td>
        </tr>
        <tr>
          <td height="14" class="statusbar">Ready!</td>
              </tr>
      </table>
      <br>
    </div>
    <script>setTimeout("loadwin('results')",2000)</script>
    </body>
    </html>

    semovy 2007-09-19 10:34 發表評論
    ]]>
    跳動的菜單http://m.tkk7.com/WshmAndLily/articles/146364.htmlsemovysemovyWed, 19 Sep 2007 02:31:00 GMThttp://m.tkk7.com/WshmAndLily/articles/146364.htmlhttp://m.tkk7.com/WshmAndLily/comments/146364.htmlhttp://m.tkk7.com/WshmAndLily/articles/146364.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/146364.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/146364.html <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>模仿as效果的導航菜單</title>
    <style type="text/css">
    <!--
    a:link,a:visited    { text-decoration: none; color: #666666 }
    a:hover            { text-decoration: underline }
    #hor1 {
        position:absolute;
        left:320px;
        top:20px;
        width:220px;
        height:20px;
        z-index:1;
        background-color: #999900;
    }
    #hor2 {
        position:absolute;
        left:320px;
        top:40px;
        width:220px;
        height:20px;
        z-index:2;
        background-color: #FFCC00;
    }
    #hor3 {
        position:absolute;
        left:320px;
        top:60px;
        width:220px;
        height:20px;
        z-index:3;
        background-color: #99CC00;
    }
    #board1 {
        position:absolute;
        left:320px;
        top:40px;
        width:220px;
        height:120px;
        z-index:-100;
        background-color: #333333;
        visibility: hidden;
    }
    body,td,th {
        font-family: Verdana, Arial, Helvetica, sans-serif;
        font-size: 12px;
        color: #FFFFFF;
        font-weight: bold;
    }
    body {
        background-color: #666666;
    }
    #board2 {
        position:absolute;
        left:320px;
        top:60px;
        width:220px;
        height:120px;
        z-index:-90;
        background-color: #333333;
        visibility: hidden;
    }
    #board3 {
        position:absolute;
        width:220px;
        height:120px;
        z-index:-80;
        left: 320px;
        top: 80px;
        background-color: #333333;
        visibility: hidden;
    }
    #hor4 {
        position:absolute;
        left:320px;
        top:80px;
        width:220px;
        height:20px;
        z-index:4;
        background-color: #99CCCC;
    }
    #board4 {
        position:absolute;
        left:320px;
        top:100px;
        width:220px;
        height:120px;
        z-index:-70;
        background-color: #333333;
        visibility: hidden;
    }
    -->
    </style>
    <script type="text/javascript">
    lastNo=0
    function re(menu_no){
    if(lastNo!=menu_no){
    cur=menu_no+1
    lastNo=menu_no
    rest()
    }else{
    cur=100
    }
    document.getElementById("board"+menu_no).style.visibility="visible"
    }
    function rest(){
    for(i=1;i<=4;i++){
    document.getElementById("hor"+i).style.top=20*i;
    document.getElementById("board"+i).style.visibility="hidden"
    }
    menu_num=4;
     act=1
     height=120+20
     speed=0;
     posY=0;
    }
    function huke(){
    if(act==1&&cur<100){
    speed=(height-posY)*0.69+speed*0.6
    posY+=speed
    for(i=cur;i<=menu_num;i++){
    document.getElementById("hor"+i).style.top=posY+(i-2)*20
    }
    if(Math.abs(height-posY)<0.5){
    for(i=cur;i<=menu_num;i++){
    document.getElementById("hor"+i).style.top=height+(i-2)*20
    }
    act=0
    }
    setTimeout("huke()",50)
    }
    }
    </script>
    </head>
    <body>
    <div id="hor1" onclick="re(1);huke()">News</div>
    <div id="hor2" onclick="re(2);huke()">Populor</div>
    <div id="hor3" onclick="re(3);huke()">Sports</div>
    <div id="hor4" onclick="re(4);huke()">Woman</div>
    <div id="board1">1.由AS而想起Javascript<br />2.用Jscript寫ASP有沒有先天性的不足?<br />3.沒有了。</div>
    <div id="board2">1.xhtml+css真的來了嗎?<br />2.Flash取代傳統網站<br />3.Flash何時才能連接數據庫?</div>
    <div id="board3">1.程序員與小姐的10個相同。<br />2.中國的程序員與中國的足球?</div>
    <div id="board4">1.二十一世紀最缺的是什么?人才<br />
    <a target="_blank">http://www.gamvan.com</a>
    <a target="_blank">http://www.gamvan.com</a></div>
    </body>
    </html>

    semovy 2007-09-19 10:31 發表評論
    ]]>
    滾動字幕http://m.tkk7.com/WshmAndLily/articles/146360.htmlsemovysemovyWed, 19 Sep 2007 02:22:00 GMThttp://m.tkk7.com/WshmAndLily/articles/146360.htmlhttp://m.tkk7.com/WshmAndLily/comments/146360.htmlhttp://m.tkk7.com/WshmAndLily/articles/146360.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/146360.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/146360.html div { font-size:12px; }
    </style>
    <div id="mq" style="width:100%;height:70px;overflow:hidden" onmouseover="iScrollAmount=0"
    onmouseout="iScrollAmount=1">
      輕輕的我走了,正如我輕輕的來;<br/>
      我輕輕的招手,作別西天的云彩。<br/>
      <br/>
      那河畔的金柳,是夕陽中的新娘;<br/>
      波光里的艷影,在我心頭蕩漾。<br/>
      <br/>
      軟泥上的青荇,油油的在水底招搖;<br/>
      在康河的柔波里,我甘心作一條水草。<br/>
      <br/>
      那榆蔭下的一潭,不是清泉是天上的虹;<br/>
      揉碎在浮藻間,沉淀彩虹似的夢。<br/>
      <br/>
      尋夢,撐支長篙,向青草更青處漫溯;<br/>
      滿載一船星輝,在星輝斑爛里放歌。<br/>
      <br/>
      但我不能放歌,悄悄是別離的笙簫;<br/>
      夏蟲也為我沉默,沉默是今晚的康橋。<br/>
      <br/>
      悄悄的我走了,正如我悄悄的來;<br/>
      我揮一揮衣袖,不帶走一片云彩。<br/>
      <br/>
    </div>
    <script>
    var oMarquee = document.getElementById("mq"); //滾動對象
    var iLineHeight = 42; //單行高度,像素
    var iLineCount = 7; //實際行數
    var iScrollAmount = 1; //每次滾動高度,像素
    function run() {
    oMarquee.scrollTop += iScrollAmount;
    if ( oMarquee.scrollTop == iLineCount * iLineHeight )
    oMarquee.scrollTop = 0;
    if ( oMarquee.scrollTop % iLineHeight == 0 ) {
    window.setTimeout( "run()", 2000 );
    } else {
    window.setTimeout( "run()", 50 );
    }
    }
    oMarquee.innerHTML += oMarquee.innerHTML;
    window.setTimeout( "run()", 2000 );
    </script>

    semovy 2007-09-19 10:22 發表評論
    ]]>
    js普通檢驗 check.jshttp://m.tkk7.com/WshmAndLily/articles/145531.htmlsemovysemovySun, 16 Sep 2007 06:46:00 GMThttp://m.tkk7.com/WshmAndLily/articles/145531.htmlhttp://m.tkk7.com/WshmAndLily/comments/145531.htmlhttp://m.tkk7.com/WshmAndLily/articles/145531.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/145531.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/145531.html/*
    -------------------------------------------------------------------------------
    文件名稱:check.js
    說    明:JavaScript腳本,用于檢查網頁提交表單的輸入數據
    版    本:1.0
    修改紀錄:
    ---------------------------------------------------------------------------
    時間  修改人  說明
    2002-8-29 libo  創建
    2004-03-08  xueyishan    修改,加入checkMobile()
    2005-06-01  zhouming    修改了isDate(),支持格式
    -------------------------------------------------------------------------------  
    */

    /*
    用途:校驗ip地址的格式
    輸入:strIP:ip地址
    返回:如果通過驗證返回true,否則返回false; 
    */
    function isIP(strIP) {
            if (isNull(strIP)) return false;
     var re=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/g //匹配IP地址的正則表達式
     if(re.test(strIP))
     {
      if( RegExp.$1 <256 && RegExp.$2<256 && RegExp.$3<256 && RegExp.$4<256) return true;
     }
     return false;
    }

    /*
    用途:檢查輸入字符串是否為空或者全部都是空格
    輸入:str
    返回:
     如果全是空返回true,否則返回false
    */
    function isNull( str ){
     if ( str == "" ) return true;
     var regu = "^[ ]+$";
     var re = new RegExp(regu);
     return re.test(str);
    }


    /*
    用途:檢查輸入對象的值是否符合整數格式
    輸入:str 輸入的字符串
    返回:如果通過驗證返回true,否則返回false 
    */
    function isInteger( str ){ 
     var regu = /^[-]{0,1}[0-9]{1,}$/;
            return regu.test(str);
    }

    /*
    用途:檢查輸入手機號碼是否正確
    輸入:
     s:字符串
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function checkMobile( s ){  
     var regu =/^[1][3][0-9]{9}$/;
     var re = new RegExp(regu);
     if (re.test(s)) {
       return true;
     }else{
       return false;
     }
    }
     
     
    /*
    用途:檢查輸入字符串是否符合正整數格式
    輸入:
     s:字符串
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function isNumber( s ){  
     var regu = "^[0-9]+$";
     var re = new RegExp(regu);
     if (s.search(re) != -1) {
        return true;
     } else {
        return false;
     }
    }

    /*
    用途:檢查輸入字符串是否是帶小數的數字格式,可以是負數
    輸入:
     s:字符串
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function isDecimal( str ){  
             if(isInteger(str)) return true;
     var re = /^[-]{0,1}(\d+)[\.]+(\d+)$/;
     if (re.test(str)) {
        if(RegExp.$1==0&&RegExp.$2==0) return false;
        return true;
     } else {
        return false;
     }
    }

    /*
    用途:檢查輸入對象的值是否符合端口號格式
    輸入:str 輸入的字符串
    返回:如果通過驗證返回true,否則返回false 
    */
    function isPort( str ){ 
     return (isNumber(str) && str<65536);
    }

    /*
    用途:檢查輸入對象的值是否符合E-Mail格式
    輸入:str 輸入的字符串
    返回:如果通過驗證返回true,否則返回false 
    */
    function isEmail( str ){ 
     var myReg = /^[-_A-Za-z0-9]+@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/;
     if(myReg.test(str)) return true;
     return false;
    }

    /*
    用途:檢查輸入字符串是否符合金額格式
     格式定義為帶小數的正數,小數點后最多三位
    輸入:
     s:字符串
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function isMoney( s ){  
     var regu = "^[0-9]+[\.][0-9]{0,3}$";
     var re = new RegExp(regu);
     if (re.test(s)) {
        return true;
     } else {
        return false;
     }
    }
    /*
    用途:檢查輸入字符串是否只由英文字母和數字和下劃線組成
    輸入:
     s:字符串
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function isNumberOr_Letter( s ){    //判斷是否是數字或字母
     var regu = "^[0-9a-zA-Z\_]+$";
     var re = new RegExp(regu);
     if (re.test(s)) {
       return true;
     }else{
       return false;
     }
    }
    /*
    用途:檢查輸入字符串是否只由英文字母和數字組成
    輸入:
     s:字符串
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function isNumberOrLetter( s ){    //判斷是否是數字或字母
     var regu = "^[0-9a-zA-Z]+$";
     var re = new RegExp(regu);
     if (re.test(s)) {
       return true;
     }else{
       return false;
     }
    }
     /*
    用途:檢查輸入字符串是否只由漢字、字母、數字組成
    輸入:
     value:字符串
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function isChinaOrNumbOrLett( s ){    //判斷是否是漢字、字母、數字組成
     var regu = "^[0-9a-zA-Z\u4e00-\u9fa5]+$";  
     var re = new RegExp(regu);
     if (re.test(s)) {
       return true;
     }else{
       return false;
     }
    }

    /*
    用途:判斷是否是日期
    輸入:date:日期;fmt:日期格式
    返回:如果通過驗證返回true,否則返回false
    */
    function isDate( date, fmt ) {
        if (fmt==null) fmt="yyyyMMdd";
        var yIndex = fmt.indexOf("yyyy");
        if(yIndex==-1) return false;
       var year = date.substring(yIndex,yIndex+4);
       var mIndex = fmt.indexOf("MM");
        if(mIndex==-1) return false;
       var month = date.substring(mIndex,mIndex+2);
       var dIndex = fmt.indexOf("dd");
        if(dIndex==-1) return false;
       var day = date.substring(dIndex,dIndex+2);
        if(!isNumber(year)||year>"2100" || year< "1900") return false;
        if(!isNumber(month)||month>"12" || month< "01") return false;
        if(day>getMaxDay(year,month) || day< "01") return false;
        return true;
    }

    function getMaxDay(year,month) {
     if(month==4||month==6||month==9||month==11)
      return "30";
     if(month==2)
      if(year%4==0&&year%100!=0 || year%400==0)
       return "29";
      else
       return "28";
     return "31";
    }

    /*
    用途:字符1是否以字符串2結束
    輸入:str1:字符串;str2:被包含的字符串
    返回:如果通過驗證返回true,否則返回false 
    */
    function isLastMatch(str1,str2)

       var index = str1.lastIndexOf(str2);
       if(str1.length==index+str2.length) return true;
       return false;
    }


    /*
    用途:字符1是否以字符串2開始
    輸入:str1:字符串;str2:被包含的字符串
    返回:如果通過驗證返回true,否則返回false 
    */
    function isFirstMatch(str1,str2)

       var index = str1.indexOf(str2);
       if(index==0) return true;
       return false;
    }

    /*
    用途:字符1是包含字符串2
    輸入:str1:字符串;str2:被包含的字符串
    返回:如果通過驗證返回true,否則返回false 
    */
    function isMatch(str1,str2)

       var index = str1.indexOf(str2);
       if(index==-1) return false;
       return true;
    }


    /*
    用途:檢查輸入的起止日期是否正確,規則為兩個日期的格式正確,
     且結束如期>=起始日期
    輸入:
     startDate:起始日期,字符串
     endDate:結束如期,字符串
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function checkTwoDate( startDate,endDate ) {
     if( !isDate(startDate) ) {
      alert("起始日期不正確!");
      return false;
     } else if( !isDate(endDate) ) {
      alert("終止日期不正確!");
      return false;
     } else if( startDate > endDate ) {
      alert("起始日期不能大于終止日期!");
      return false;
     }
     return true;
    }

    /*
    用途:檢查輸入的Email信箱格式是否正確
    輸入:
     strEmail:字符串
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function checkEmail(strEmail) {
     //var emailReg = /^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/;
     var emailReg = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
     if( emailReg.test(strEmail) ){
      return true;
     }else{
      alert("您輸入的Email地址格式不正確!");
      return false;
     }
    }

    /*
    用途:檢查輸入的電話號碼格式是否正確
    輸入:
     strPhone:字符串
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function checkPhone( strPhone ) {
     var phoneRegWithArea = /^[0][1-9]{2,3}-[0-9]{5,10}$/;
     var phoneRegNoArea = /^[1-9]{1}[0-9]{5,8}$/;
     var prompt = "您輸入的電話號碼不正確!"
     if( strPhone.length > 9 ) {
      if( phoneRegWithArea.test(strPhone) ){
       return true;
      }else{
       alert( prompt );
       return false;
      }
     }else{
      if( phoneRegNoArea.test( strPhone ) ){
       return true;
      }else{
       alert( prompt );
       return false;
      }  
     }
    }
     

    /*
    用途:檢查復選框被選中的數目
    輸入:
     checkboxID:字符串
    返回:
     返回該復選框中被選中的數目 
    */ 
    function checkSelect( checkboxID ) {
     var check = 0;
     var i=0;
     if( document.all(checkboxID).length > 0 ) {
      for(  i=0; i<document.all(checkboxID).length; i++ ) {
       if( document.all(checkboxID).item( i ).checked  ) {
        check += 1;
       }    
      }
     }else{
      if( document.all(checkboxID).checked )
       check = 1;
     }
     return check;
    }

    function getTotalBytes(varField) {
     if(varField == null)
      return -1;
     
     var totalCount = 0;
     for (i = 0; i< varField.value.length; i++) {
      if (varField.value.charCodeAt(i) > 127)
       totalCount += 2;
      else
       totalCount++ ;
     }
     return totalCount;
    }

    function getFirstSelectedValue( checkboxID ){
     var value = null;
     var i=0;
     if( document.all(checkboxID).length > 0 ){
      for(  i=0; i<document.all(checkboxID).length; i++ ){
       if( document.all(checkboxID).item( i ).checked ){
        value = document.all(checkboxID).item(i).value;
        break;
       }
      }
     } else {
      if( document.all(checkboxID).checked )
       value = document.all(checkboxID).value;
      }
     return value;

    function getFirstSelectedIndex( checkboxID ){
     var value = -2;
     var i=0;
     if( document.all(checkboxID).length > 0 ){
      for(  i=0; i<document.all(checkboxID).length; i++ ) {
       if( document.all(checkboxID).item( i ).checked  ) {
        value = i;
        break;
       }
      }
     } else {
      if( document.all(checkboxID).checked )
       value = -1;
     }
     return value;
    }
     
    function selectAll( checkboxID,status ) {
     if( document.all(checkboxID) == null)
      return;

     if( document.all(checkboxID).length > 0 ){
      for(  i=0; i<document.all(checkboxID).length; i++ ) {
       document.all(checkboxID).item( i ).checked = status;
      }
     } else {
      document.all(checkboxID).checked = status;
     }
    }

    function selectInverse( checkboxID ) {
     if( document.all(checkboxID) == null)
      return;

     if( document.all(checkboxID).length > 0 ) {
      for(  i=0; i<document.all(checkboxID).length; i++ ) {
       document.all(checkboxID).item( i ).checked = !document.all(checkboxID).item( i ).checked;
      }
     } else {
      document.all(checkboxID).checked = !document.all(checkboxID).checked;
     }
    }

    function checkDate( value ) {
     if(value=='') return true;
     if(value.length!=8 || !isNumber(value)) return false; 
     var year = value.substring(0,4);
     if(year>"2100" || year< "1900") return false;
     
     var month = value.substring(4,6);
     if(month>"12" || month< "01") return false;
     
     var day = value.substring(6,8);
     if(day>getMaxDay(year,month) || day< "01") return false;
     
     return true; 
    }

    /*
    用途:檢查輸入的起止日期是否正確,規則為兩個日期的格式正確或都為空
     且結束日期>=起始日期
    輸入:
     startDate:起始日期,字符串
     endDate:  結束日期,字符串
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function checkPeriod( startDate,endDate ) {
     if( !checkDate(startDate) ) {
      alert("起始日期不正確!");
      return false;
     } else if( !checkDate(endDate) ) {
      alert("終止日期不正確!");
      return false;
     } else if( startDate > endDate ) {
      alert("起始日期不能大于終止日期!");
      return false;
     }
     return true;
    }

    /*
    用途:檢查證券代碼是否正確
    輸入:
     secCode:證券代碼
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function checkSecCode( secCode ) {
     if( secCode.length !=6 ){
      alert("證券代碼長度應該為6位");
      return false;
     }
     
     if(!isNumber( secCode ) ){
      alert("證券代碼只能包含數字");  
      return false;
        }
     return true;
    }

    /****************************************************
    function : cTrim(sInputString,iType)
    description : 字符串去空格的函數
    parameters : iType: 1=去掉字符串左邊的空格
          2=去掉字符串左邊的空格
          0=去掉字符串左邊和右邊的空格
    return value: 去掉空格的字符串
    ****************************************************/
    function cTrim(sInputString,iType)
    {
     var sTmpStr = ' ';
     var i = -1;
     
     if(iType == 0 || iType == 1)
     {
      while(sTmpStr == ' ')
      {
       ++i;
       sTmpStr = sInputString.substr(i,1);
      }
      sInputString = sInputString.substring(i);
     } 
     if(iType == 0 || iType == 2)
     {
      sTmpStr = ' ';
      i = sInputString.length;
      while(sTmpStr == ' ')
      {
       --i;
       sTmpStr = sInputString.substr(i,1);
      }
      sInputString = sInputString.substring(0,i+1);
     }
     return sInputString;
    }

    /*
    -------------------------------------------------------------------------------
    說    明:JavaScript腳本,驗證表單中的數據項  begin
    -------------------------------------------------------------------------------  
    */
    function checkForm(objFrm){
     var len = 0;
     len = objFrm.elements.length;

     var i = 0;
     var objCheck;
     //文本框
     for(i = 0; i < len; i ++){
      objCheck = objFrm.elements[i];
      if(objCheck.type =="text" && !f_checkTextValid(objCheck) ){
       return false;   
      }
     }
     //下拉框
     for(i = 0; i < len; i ++){
      objCheck = objFrm.elements[i];
      if(objCheck.type =="select-one" && !f_checkSelectValid(objCheck) ){
       return false;   
      }
     }
     //時間段有效
     if( f_checkStartAndEndDate(objFrm) == false) return false;
     
     return true;
    }
    function f_checkSelectValid(obj){
     //alert("check select");
     if(obj.options.length <= 0){
      alert("下拉選框無數據!");
      return false; 
     }
     return true;
    }
    function f_checkStartAndEndDate(frm){
     var len = frm.elements.length;
     if(len == null && len == 0) return true;
     var i=0;
     var temp;
     var objCheck;
     var objStartDate;
     var objEndDate;
     //alert("start date period check");
     try{
      for(i=0; i< len ; i++){
       objCheck = frm.elements[i];
       temp = objCheck.name;
       if( temp.indexOf("startDate") >0 ||temp.indexOf("beginDate")>0 )
        objStartDate = objCheck;
       if( temp.indexOf("endDate") > 0 )
        objEndDate = objCheck;
        
      }
      //alert(objStartDate.value);
      //alert(objEndDate.value);
      if(objStartDate.value==null || objStartDate.value =="" || objStartDate.value ==null || objStartDate.value ==""){
       return true;
      }
      return checkTwoDate(objStartDate.value, objEndDate.value); 
      //alert("end date period check");
     }catch(E){}
     return true;
    }

    function f_checkTextValid(obj){
     //不能為空
     if(obj.getAttribute("isNeed") != null){
      if(f_isNotNull(obj) == false) return false;
     }
     //不能超過長度
     if(obj.getAttribute("maxlength") != null){
      if(f_checkLength(obj) == false) return false;
     }
     var checkType ="";
     checkType = obj.getAttribute("checkType");
     if(checkType==null||checkType=="") return true;
     //
     if (checkType.indexOf("number") >=0){
      if(f_isNumber(obj) == false)  return false;
      if(f_checkNumType(obj,checkType) == false)  return false;
      
     }
     //
     if (checkType.indexOf("positive") >=0){
      if(f_isNumber(obj) == false)  return false;
      if(f_isPositive(obj)==false)  return false;
      if(f_checkNumType(obj,checkType) == false)  return false;
      
     }
     if (checkType.indexOf("date") >=0){
      if(f_checkDate(obj) == false) return false;
      
     }
     
     /*
     switch(checkType){
      case "number": if(f_isNumber(obj) == false) return false;break;
      case "date": if(f_checkDate(obj) == false) return false;break;
      default:
     }
     */
     return true;
    }

    function f_isNotNull(obj){
     if(obj.value == ""){
      f_alert(obj, " 不允許為空值!");
      return false;
     }
     return true;
    }

    function f_isNumber(obj){
     if(isNaN(obj.value)){
       f_alert(obj," 應為數值類型");
      return false;  
     }
     return true;

    }
    function f_checkDate(obj) {
     if(checkDate(obj.value) ==false){
       f_alert(obj," 不是合法日期格式!");
      return false;  
     }
     return true;
    }

    function f_checkLength(obj){
     if(getTotalBytes(obj) > Math.abs( obj.getAttribute("maxlength") ) ){
       f_alert(obj," 超出長度限制!");
      return false;  
     }
     return true;
     
    }

    function  f_alert(obj,alertStr){
     var fielName = obj.getAttribute("fieldName");
     if(fielName == null)
      fielName = "";
     alert(fielName + "\n" +alertStr);
     obj.select();
     obj.focus();
    }

    function f_checkNumType(obj, numType){
     //假設: 已經進行數字類型判斷
     
     var strTemp;
     var numpric;
     var numLen;
     var strArr;
     var defaultLen = 19;
     var defaultpric = 5;

     try{
      if(numType == null|| numType =="") return f_checkNumLenPrec(obj,defaultLen, defaultpric);
      if(numType.indexOf("(") < 0 || numType.indexOf(")") < 0 ) return f_checkNumLenPrec(obj,defaultLen, defaultpric);
      strTemp = numType.substr( numType.indexOf("(") + 1 ,numType.indexOf(")") - numType.indexOf("(") -1 );
      if(strTemp == null||strTemp =="") return f_checkNumLenPrec(obj,defaultLen, defaultpric);
      strArr = strTemp.split(","); 
      numLen = Math.abs( strArr[0] );
      numpric = Math.abs( strArr[1] ); 
      return f_checkNumLenPrec(obj,numLen, numpric);
     }catch(e){
      alert("in f_checkNumType = " + e);
       return f_checkNumLenPrec(obj,defaultLen, defaultpric);
     }

    }

    function f_checkNumLenPrec(obj, len, pric){
     var numReg;
     var value = obj.value;
     var strValueTemp, strInt, strDec; 
     //alert(value + "=====" + len + "====="+ pric);
     try{ 
      
      numReg =/[\-]/;
      strValueTemp = value.replace(numReg, "");
      strValueTemp = strValueTemp.replace(numReg, "");
      //整數
      if(pric==0){
       numReg =/[\.]/;
       //alert(numReg.test(value));
       if(numReg.test(value) == true){
        f_alert(obj, "輸入必須為整數類型!");
        return false; 
       }   
      }
      
      if(strValueTemp.indexOf(".") < 0 ){
       //alert("lennth==" + strValueTemp);  
       if(strValueTemp.length >( len - pric)){
        f_alert(obj, "整數位不能超過"+ (len - pric) +"位");
        return false;
       }
      
      }else{
       strInt = strValueTemp.substr( 0, strValueTemp.indexOf(".") );  
       //alert("lennth==" + strInt);  
       if(strInt.length >( len - pric)){
        f_alert(obj, "整數位不能超過"+ (len - pric) +"位");
        return false;
       }  

       strDec = strValueTemp.substr( (strValueTemp.indexOf(".")+1), strValueTemp.length );  
       //alert("pric==" + strDec);  
       if(strDec.length > pric){
        f_alert(obj, "小數位不能超過"+  pric +"位");
        return false;
       }  
      }
      
      return true;
     }catch(e){
      alert("in f_checkNumLenPrec = " + e);
      return false;
     } 
    }

    function f_isPositive(obj){
     var numReg =/[\-]/;
     if(numReg.test(obj.value) == true){
      f_alert(obj, "必須為正數!");
      return false;
     }
     return true;
     
    }


    /*
    function selectedCheckboxCount(form)
    功能說明:對Form中選中的可選項計數

    參數說明:
    form:指定的表單
    */
    function selectedCheckboxCount(form){
     var length =0;
     var i=0;
     var count =0;
     eles = form.elements;
     while(i<eles.length){
      obj= eles.item(i);
    //  type = obj.attributes.item("type").nodeValue;
            type = obj.type;
      if(type == "checkbox"){
       if(obj.checked){
        count++;
       }
      }
      i++;
     }
     return count;
    }

    //得到字節長度
    function getByteLen(str)
    {
            var l = str.length;
            var n = l;
            for ( var i=0; i<l; i++ )
        
                    if ( str.charCodeAt(i) <0 || str.charCodeAt(i) >255 )
                            n=n+1;
            return n
    }

    /*
    說明:
    1.清除表格中的數據(0.0 和 0)
    2.如果cell中沒有數據,則自動加上一個空格
    3.清除空白行的checkbox

    參數:
    clearzero:是否清除"0"、"0.0",false不清除、true清除(默認為true)
    tablename:要清除的表格名字,默認為sortTable
    */
    function clear_table(clearzero,tablename)
    {
     var tobject;
     if(tablename==null)
      tobject=gmobj("sortTable");
     else
      tobject=gmobj(tablename);
     //如果table未定義,則不進行過濾
     
     if(tobject==null)
      return;
      
     
     //如果函數調用參數為空,表示要清除0、0.0;反之,不要清除0、0.0。
     var clear = (clearzero==null)?true:clearzero;

     //清除0、0.0,填補空格
     var rows = tobject.rows;
     var j=0;
     for(var i=0;i<rows.length;i++)
     {
      //取得第一個cell的屬性clear,如果為1,表示該行沒有數據,則清除該行所有數據
      
       while(tobject.rows[i].cells[j] != null)
       {
        if(clear)
        {
         if(tobject.rows[i].cells[j].innerHTML==0 ||tobject.rows[i].cells[j].innerHTML==0.0||tobject.rows[i].cells[j].innerHTML=="")
          tobject.rows[i].cells[j].innerText=" ";
        }
        else
        {
         if (tobject.rows[i].cells[j].innerHTML=="")
          tobject.rows[i].cells[j].innerText=" ";
        }
        j++;
       }
       j=0;
      
     }
        return true;
    }

    function gmobj(mtxt)  /* Get object by object name */
    {
      if (document.getElementById) {
          m=document.getElementById(mtxt);
      } else if (document.all) {
          m=document.all[mtxt];
      } else if (document.layers) {
          m=document.layers[mtxt];
      }
      return m;
    }
    /*
    -------------------------------------------------------------------------------
    說    明:JavaScript腳本,驗證表單中的數據項  end
    -------------------------------------------------------------------------------  
    */

    /*
    用途:檢查輸入字符串是否是帶小數的數字格式,可以是負數(并且滿足規定的精度)
    輸入:str:字符串
                l:總位數
               d:小數點后位數
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function isDecimal( str,l,d ){  
             if(isInteger(str)) {
        if (l==null)  return true;
        if (str<0) l--;
          if (str.length<=l) return true;
             }

             var re = /^[-]{0,1}(\d+)[\.]+(\d+)$/;
           if (re.test(str)) {
      if (l==null)  return true;
      if (d==null) d=0;
            if(RegExp.$1==0&&RegExp.$2==0) return false;
      if (RegExp.$1.length+RegExp.$2.length<=l
       && RegExp.$2.length<=d)  return true;
        }
     return false;
    }



    semovy 2007-09-16 14:46 發表評論
    ]]>
    javascript固定div位置在頁面中的位置http://m.tkk7.com/WshmAndLily/articles/144495.htmlsemovysemovyWed, 12 Sep 2007 07:03:00 GMThttp://m.tkk7.com/WshmAndLily/articles/144495.htmlhttp://m.tkk7.com/WshmAndLily/comments/144495.htmlhttp://m.tkk7.com/WshmAndLily/articles/144495.html#Feedback2http://m.tkk7.com/WshmAndLily/comments/commentRss/144495.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/144495.html<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <HTML>
    <HEAD>
    <TITLE>AAAAAAAA</TITLE>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html" charset="UTF-8">
    </HEAD>
    <style>
    <!--
    .div{
    position: absolute;
    border: 2px solid red;
    background-color: #EFEFEF;
    line-height:90px;
    font-size:12px;
    z-index:1000;
    }
    -->
    </style>
    <BODY>
    <div id="Javascript.Div1" class="div" style="width: 240px; height:90px" align="center">正中...</div>
    <SCRIPT LANGUAGE="JavaScript">
    function sc1(){
    document.getElementById("Javascript.Div1").style.top=
       document.documentElement.scrollTop+(document.documentElement.clientHeight-document.getElementById("Javascript.Div1").offsetHeight)/2
    document.getElementById("Javascript.Div1").style.left=
       document.documentElement.scrollLeft+(document.documentElement.clientWidth-document.getElementById("Javascript.Div1").offsetWidth)/2;
    }
    </SCRIPT>


    <div id="Javascript.Div2" class="div" style="width: 240px; height:90px;" align="center">左上...</div>
    <SCRIPT LANGUAGE="JavaScript">
    function sc2(){
    document.getElementById("Javascript.Div2").style.top=document.documentElement.scrollTop
    document.getElementById("Javascript.Div2").style.left=document.documentElement.scrollLeft;
    }
    </SCRIPT>

    <div id="Javascript.Div3" class="div" style="width: 240px; height:90px;" align="center">左下...</div>
    <SCRIPT LANGUAGE="JavaScript">
    function sc3(){
    document.getElementById("Javascript.Div3").style.top=
        document.documentElement.scrollTop+document.documentElement.clientHeight-document.getElementById("Javascript.Div3").offsetHeight;
    document.getElementById("Javascript.Div3").style.left=document.documentElement.scrollLeft;
    }
    </SCRIPT>

    <div id="Javascript.Div4" class="div" style="width: 240px; height:90px;" align="center">右上...</div>
    <SCRIPT LANGUAGE="JavaScript">
    function sc4(){
    document.getElementById("Javascript.Div4").style.top=document.documentElement.scrollTop;
    document.getElementById("Javascript.Div4").style.left=
        document.documentElement.scrollLeft+document.documentElement.clientWidth-document.getElementById("Javascript.Div4").offsetWidth;
    }
    </SCRIPT>

    <div id="Javascript.Div5" class="div" style="width: 240px; height:90px;" align="center">右下...</div>
    <SCRIPT LANGUAGE="JavaScript">
    function sc5(){

    document.getElementById("Javascript.Div5").style.top=
        document.documentElement.scrollTop+document.documentElement.clientHeight-document.getElementById("Javascript.Div5").offsetHeight;
    document.getElementById("Javascript.Div5").style.left=
        document.documentElement.scrollLeft+document.documentElement.clientWidth-document.getElementById("Javascript.Div5").offsetWidth;;
    }
    </SCRIPT>


    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function scall(){
    sc1();sc2();sc3();sc4();sc5();
    }
    window.onscroll=scall;
    window.onresize=scall;
    window.onload=scall;
    //-->
    </SCRIPT>
    <div style="position: absolute; top: 0; left: 0; width: 10000px; height: 4000px;"></div>
    </BODY>
    </HTML>

     



    semovy 2007-09-12 15:03 發表評論
    ]]>
    Javascript 獲取滾動條位置http://m.tkk7.com/WshmAndLily/articles/144429.htmlsemovysemovyWed, 12 Sep 2007 02:50:00 GMThttp://m.tkk7.com/WshmAndLily/articles/144429.htmlhttp://m.tkk7.com/WshmAndLily/comments/144429.htmlhttp://m.tkk7.com/WshmAndLily/articles/144429.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/144429.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/144429.html
    <script type="text/javascript">
  •  
  • // 說明:用 Javascript 獲取滾動條位置等信息
  • // 來源 :ThickBox 2.1 
  • // 整理 :CodeBit.cn ( http://www.CodeBit.cn )
  •  
  • function getScroll() 
  • {
  •     var t, l, w, h;
  •     
  •     if (document.documentElement && document.documentElement.scrollTop) {
  •         t = document.documentElement.scrollTop;
  •         l = document.documentElement.scrollLeft;
  •         w = document.documentElement.scrollWidth;
  •         h = document.documentElement.scrollHeight;
  •     } else if (document.body) {
  •         t = document.body.scrollTop;
  •         l = document.body.scrollLeft;
  •         w = document.body.scrollWidth;
  •         h = document.body.scrollHeight;
  •     }
  •     return { t: t, l: l, w: w, h: h };
  • }
  •  
  • </script>
  •  


  • semovy 2007-09-12 10:50 發表評論
    ]]>
    prototype.js開發實例http://m.tkk7.com/WshmAndLily/articles/144121.htmlsemovysemovyMon, 10 Sep 2007 15:30:00 GMThttp://m.tkk7.com/WshmAndLily/articles/144121.htmlhttp://m.tkk7.com/WshmAndLily/comments/144121.htmlhttp://m.tkk7.com/WshmAndLily/articles/144121.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/144121.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/144121.html閱讀全文

    semovy 2007-09-10 23:30 發表評論
    ]]>
    為圖片添加圓角與3D陰影http://m.tkk7.com/WshmAndLily/articles/142148.htmlsemovysemovySun, 02 Sep 2007 14:37:00 GMThttp://m.tkk7.com/WshmAndLily/articles/142148.htmlhttp://m.tkk7.com/WshmAndLily/comments/142148.htmlhttp://m.tkk7.com/WshmAndLily/articles/142148.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/142148.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/142148.html為圖片添加圓角與3D陰影

    semovy 2007-09-02 22:37 發表評論
    ]]>
    主站蜘蛛池模板: 国产伦精品一区二区三区免费下载| 午夜毛片不卡免费观看视频| 亚洲精品中文字幕麻豆| 久久久久久久久免费看无码| 黄色网址免费在线| 久久久国产精品亚洲一区| 国产大片免费观看中文字幕| 免费人成网站在线观看不卡| 亚洲1区1区3区4区产品乱码芒果 | 亚洲综合婷婷久久| 国产福利免费在线观看| 久久精品私人影院免费看| 日韩国产精品亚洲а∨天堂免| 国产亚洲成av人片在线观看| 成人免费视频88| 无码av免费一区二区三区试看| 亚洲欧美日韩中文无线码| 亚洲AV日韩精品久久久久久| 日韩免费高清视频| 91热成人精品国产免费| 青青草国产免费国产是公开| 亚洲免费福利视频| 日本红怡院亚洲红怡院最新| 免费永久在线观看黄网站| 精品女同一区二区三区免费站| 香蕉免费一级视频在线观看| 亚洲日韩亚洲另类激情文学| 久久亚洲精品国产精品| 91麻豆精品国产自产在线观看亚洲 | 日韩中文字幕精品免费一区| 中文字幕免费在线看电影大全| 亚洲欧美自偷自拍另类视| 久久精品国产亚洲AV无码娇色| 亚洲精品视频免费| 日本特黄特黄刺激大片免费| 四虎在线视频免费观看视频| 三上悠亚在线观看免费| 人妖系列免费网站观看| 国产精品无码亚洲一区二区三区| 亚洲av一本岛在线播放| 亚洲精品mv在线观看|