??xml version="1.0" encoding="utf-8" standalone="yes"?>
在代码的q行q程中,错误是不可避免的Qȝ来说Q错误发生于两种情况Q一是程序内部的逻辑或者语法错误,二是q行环境或者用戯入中不可预知的数据造成的错误。对于前者,q之ؓ错误QerrorQ,可以通过调试E序来解冻I而后一U则更多的称之ؓ异常QexceptionQ,思义Q就是超出常规,没有按程序设计的意愿来输入数据。当Ӟ异常q会有许多种cd?br />所以说Q?b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">异常q不{h于错误,相反Q有时还会利?b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">异常来解决一些问题?b style="COLOR: black; BACKGROUND-COLOR: #ffff66">JavaScript可以捕获一?b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">异常q进行相应的处理Q从而避免了览器向用户报错?/font>
使用try-catch-finally处理异常
用户可以使用该结?b style="COLOR: black; BACKGROUND-COLOR: #99ff99">处理可能发生异常的代码,如果发生异常Q则由catch捕获q进?b style="COLOR: black; BACKGROUND-COLOR: #99ff99">处理Q其语法如下Q?br />try{
//要执行的代码
}
catch(e){
//处理异常的代?br />}
finally{
//无论异常发生与否Q都会执行的代码
}
通过异常处理Q可以避免程序停止运行,从而具有了一定的自我修复能力?br />在Ajax开发中Q利?b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">异常处理的一个典型应用就是创建XMLHttpRequest对象Q不同浏览器创徏它的方式是不一LQؓ了代码能够跨浏览器q行Q就可以利用异常Q一U方法不行,再用另一U方法,直到不发?b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">异常为止Q例如:
<script language="JavaScript" type="text/javascript">
<!--
var xmlhttp;
try{
//试用IE览器的方式创徏XMLHttpRequest对象
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
try{
//试用非IE览器的方式常见XMLHttpRequest对象
xmlhttp=new XMLHttpRequest();
}catch(e){}
}
//-->
</script>
通过q种方式Q就可以跨浏览器创徏XMLHttpRequest对象。注意,即不在catch块内q行处理Qcatch标识及其参数e也是必须写的Q否则会产生语法错误Q而finnally则不是必ȝ?/font>
使用throw语句抛出异常
?b style="COLOR: black; BACKGROUND-COLOR: #ffff66">JavaScript中有其内部的异常机制Q在遇到非法操作时能自动抛出异常。实际的开发中Q随着E序的复杂,需要能自己实现异常Q这可以通过throw语句来实玎ͼ
throw valueQ?br />其中value是要抛出的异常变量Q它可以?b style="COLOR: black; BACKGROUND-COLOR: #ffff66">JavaScript中的M一U类型。但?b style="COLOR: black; BACKGROUND-COLOR: #ffff66">JavaScript内部?b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">异常中,异常参数Q即catch(e)中的eQ是一个名为error的对象,可以通过new Error(message)来创个对象,异常的描q被作ؓerror对象的一个属性messageQ可以由构造函C入,也可以之后赋倹{通过q个异常描述messageQ可以让E序获取异常的详l信息,从而自?b style="COLOR: black; BACKGROUND-COLOR: #99ff99">处理?br />下面的程序计两个数据的和,如果参数不是数字Q则抛出异常Q代码如下:
<script language="JavaScript" type="text/javascript">
<!--
//函数默认要求参数为数?br />function sum(a,b){
a=parseInt(a);
b=parseInt(b);
//如果a或b不能转换为数字则抛出一?b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">异常对象
if(isNaN(a) || isNaN(b)){
throw new Error("arguments are not numbers");
}
return a+b;
}
try{
//错误的调?br /> var s=sum("c","d");
}catch(e){
//昄异常的详l信?br /> alert(e.message);
}
//-->
</script>
E序中用字母作为参C递给sum函数Q是错误的,所以函数内抛出了一?b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">异常对象Q这个对象被catch语句获取Qƈ使用alert语句昄了其详细信息?br />注意Q用new Error(message)创徏异常对象只是一U默认的习惯Q也是内|?b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">异常的实现方式。这不是必需的,完全可以抛出L数据cd?b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">异常Q例如一个整敎ͼ来作?b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">异常的描q。只要在E序中抛?b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">异常和捕?b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">异常能匹配即可?br />
Error对象除了message属性以外,q有一些其他的属性,q些属性因览器而异Q例如:在IE览器中Qerror对象的属性包括name、number、description、messageQ而在Firefox览器中Qerror对象的属性包括message、fileName、lineNumber、stack、name。在实际的应用中如果要实现自q异常Q这些属性只要被赋|都是可用的,其中Firefox览器还会自动对stack属性赋|用于昄异常出现的位|?/font>
#table01 {
font-size:12px;
background-Color:black;
color:white;
text-align:center;
}
#playListTitle {
background-Color:#001122;
color:white;
font-size:12px;
font-weight:bold;
width:100%;
height:16px;
padding:2px;
}
#playList {
width:150px;
height:225px;
margin:0px;
font-size:12px;
background-Color:black;
color:white;
}
#musicList {
width:200px;
border:buttonface 4px groove;
height:80px;
position:absolute;
right:5px;
top:23px;
left: -1px;
}
#musicListTitle {
font-size:13px;
width:100%;
height:20px;
background-Color:#C5FFC5;
padding:3px;
font-weight:bold;
}
#musicList a {
text-decoration:none;
width:100%;
height:20px;
line-height:20px;
font-szie:20px;
line-height:20px;
padding-top:5px;
padding-left:10px;
}
#musicList a:hover {
background-Color:#E5FFE5;
}
.style1 {
color: #006699;
font-weight: bold;
}
.style2 {font-size: 12px}
a:link {
text-decoration: none;
}
a:visited {
text-decoration: none;
}
a:hover {
text-decoration: none;
}
a:active {
text-decoration: none;
}
.style4 {font-size: 12px; color: #FFFF33; }
.style7 {font-family: "Times New Roman", Times, serif}
</style>
<script>
function playList_dragOver(){
event.returnValue=false;
}
function playList_dragEnter(){
event.returnValue=false;
event.dataTransfer.dropEffect='link';
}
function addMusic(){
if(event.srcElement.tagName=='A'){
strTxt=event.srcElement.innerText;
strURL=event.srcElement.href;
playList.innerHTML="";
playList.options[0]=new Option(strTxt,strURL);
playList.options[0].selected=true;
}
event.returnValue=false;
playList_dblClick();
return(false);
}
function playList_drop(){
strTxt=unescape(event.dataTransfer.getData('Text').split(":")[0]);
strURL=unescape(event.dataTransfer.getData('Text').split(":")[1]);
playList.options[playList.options.length]=new Option(strTxt,strURL);
}
function playList_keyDown(){
if(event.keyCode==46){
try{
playList.options[playList.options.selectedIndex].outerHTML="";
}catch(e){}
return(false);
}
if(event.keyCode==13){
playList_dblClick();
return(false);
}
}
function playList_dblClick(){
MediaPlayer1.detachEvent("PlayStateChange",checkPlayStatus);
MediaPlayer1.fileName=playList.value;
MediaPlayer1.play();
setTimeout('MediaPlayer1.play();MediaPlayer1.attachEvent("PlayStateChange",checkPlayStatus);',1000);
}
function musicList_dragStart(){
if(event.srcElement.tagName=='A'){
event.dataTransfer.setData('Text',escape(event.srcElement.innerText)+":"+escape(event.srcElement.href));
}else{
return(false);
}
}
function init(){
MediaPlayer1.AutoRewind=false;
MediaPlayer1.AutoStart=true;
MediaPlayer1.SendPlayStateChangeEvents=true;
MediaPlayer1.attachEvent("PlayStateChange",checkPlayStatus);
}
function checkPlayStatus(oldState,newState){
try{
if(MediaPlayer1.PlayState==0){
MediaPlayer1.detachEvent("PlayStateChange",checkPlayStatus);
MediaPlayer1.stop();
if(playList.options.selectedIndex<playList.options.length-1){
playList.options[playList.options.selectedIndex+1].selected=true;
}else{
playList.options[0].selected=true;
}
MediaPlayer1.fileName=playList.value;
MediaPlayer1.play();
setTimeout('MediaPlayer1.play();MediaPlayer1.attachEvent("PlayStateChange",checkPlayStatus);',1000);
}
}catch(e){}
}
</script>
<script>
function doFull()
{
var objId = "MediaPlayer1";
var funcStr = objId + ".displaySize = 3";
eval(funcStr);
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"><body onload="init();">
<table id=table01>
<tr>
<td>
<object classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" id="MediaPlayer1" width="286" height="225" STANDBY="Loading Windows Media Player components..." TYPE="application/x-oleobject">
<param name="AudioStream" value="-1">
<param name="AutoSize" value="-1">
<!--是否自动调整播放大小-->
<param name="AutoStart" value="0">
<!--是否自动播放-->
<param name="AnimationAtStart" value="-1">
<param name="AllowScan" value="-1">
<param name="AllowChangeDisplaySize" value="-1">
<param name="AutoRewind" value="0">
<param name="Balance" value="0">
<!--左右声道q,最?9640,最?640-->
<param name="BaseURL" value>
<param name="BufferingTime" value="15">
<!--~冲旉-->
<param name="CaptioningID" value>
<param name="ClickToPlay" value="-1">
<param name="CursorType" value="0">
<param name="CurrentPosition" value="0">
<!--当前播放q度 -1 表示不变,0表示开?单位是秒,比如10表示从第10U处开始播?值必L-1.0或大于等?-->
<param name="CurrentMarker" value="0">
<param name="DefaultFrame" value>
<param name="DisplayBackColor" value="0">
<param name="DisplayForeColor" value="16777215">
<param name="DisplayMode" value="0">
<param name="DisplaySize" value="0">
<!--视频1-50%, 0-100%, 2-200%,3-全屏 其它的g0处理,数则采用四舍五入然后按前的处理-->
<param name="Enabled" value="-1">
<param name="EnableContextMenu" value="1">
<!-是否用右键弹单控?->
<param name="EnablePositionControls" value="-1">
<param name="EnableFullScreenControls" value="-1">
<param name="EnableTracker" value="-1">
<!--是否允许拉动播放q度条到L地方播放-->
<param name="Filename" value="" valuetype="ref">
<param name="InvokeURLs" value="-1">
<param name="Language" value="-1">
<param name="Mute" value="0">
<!--是否静音-->
<param name="PlayCount" value="10">
<!--重复播放ơ数,0为始l重?->
<param name="PreviewMode" value="-1">
<param name="Rate" value="1">
<!--播放速度1.0-2.0倍的速度播放-->
<param name="SAMILang" value>
<param name="SAMIStyle" value>
<param name="SAMIFileName" value>
<!--选择同时播放(伴音)的歌?->
<param name="SelectionStart" value="-1">
<param name="SelectionEnd" value="-1">
<param name="SendOpenStateChangeEvents" value="-1">
<param name="SendWarningEvents" value="-1">
<param name="SendErrorEvents" value="-1">
<param name="SendKeyboardEvents" value="0">
<param name="SendMouseClickEvents" value="0">
<param name="SendMouseMoveEvents" value="0">
<param name="SendPlayStateChangeEvents" value="-1">
<param name="ShowCaptioning" value="0">
<!--是否昄字幕,Z块黑?下面会有一大块黑色,一般不昄-->
<param name="ShowControls" value="-1">
<!--是否昄控制,比如播放,停止,暂停-->
<param name="ShowAudioControls" value="-1">
<!--是否昄音量控制-->
<param name="ShowDisplay" value="0">
<!--昄节目信息,比如版权{?->
<param name="ShowGotoBar" value="0">
<!--一条框,在下?有往下箭?->
<param name="ShowPositionControls" value="-1">
<!--是否昄往前往后及列表,如果昄一般也都是灰色不可控制-->
<param name="ShowStatusBar" value="-1">
<!--当前播放信息,昄是否正在播放,及L放时间和当前播放到的旉-->
<param name="ShowTracker" value="-1">
<!--是否昄当前播放跟踪?卛_前的播放q度?->
<param name="TransparentAtStart" value="-1">
<param name="VideoBorderWidth" value="0">
<!--昄部的宽部,如果于视频?则最ؓ视频?或者加大到指定?q自动加大高?此改变只改变四周的黑框大?不改变视频大?->
<param name="VideoBorderColor" value="0">
<!--昄黑色框的颜色, 为RGB?比如ffff00为黄?->
<param name="VideoBorder3D" value="0">
<param name="Volume" value="0">
<!--音量大小,负DC是当前音量的减?D动会取绝对?最大ؓ0,最ؓ-9640,最?-->
<param name="WindowlessVideo" value="0">
<embed src="-1" width="286" height="225" autostart="0" audiostream="-1" autosize="-1" animationatstart="-1" allowscan="-1" allowchangedisplaysize="-1" autorewind="0" balance="0" baseurl="value" bufferingtime="15" captioningid="value" clicktoplay="-1" cursortype="0" currentposition="0" currentmarker="0" defaultframe="value" displaybackcolor="0" displayforecolor="16777215" displaymode="0" displaysize="0" enabled="-1" enablecontextmenu="-1" enablepositioncontrols="-1" enablefullscreencontrols="-1" enabletracker="-1" filename="" invokeurls="-1" language="-1" mute="0" playcount="10" previewmode="-1" rate="1" samilang="value" samistyle="value" samifilename="value" selectionstart="-1" selectionend="-1" sendopenstatechangeevents="-1" sendwarningevents="-1" senderrorevents="-1" sendkeyboardevents="0" sendmouseclickevents="0" sendmousemoveevents="0" sendplaystatechangeevents="-1" showcaptioning="0" showcontrols="-1" showaudiocontrols="-1" showdisplay="0" showgotobar="0" showpositioncontrols="-1" showstatusbar="-1" showtracker="-1" transparentatstart="-1" videoborderwidth="0" videobordercolor="0" videoborder3d="0" volume="0" windowlessvideo="0"></embed>
<!--如果?可以允许全屏,否则只能在窗口中查看-->
</object>
</td>
<td>
<div id=playListTitle>Play List:</div>
<select id=playList size=2 ondragover="playList_dragOver();" ondragenter="playList_dragEnter();"
ondrop="playList_drop();" onkeydown="playList_keyDown();" ondblclick="playList_dblClick();">
</select>
</td>
</tr>
</table>
<script language="JavaScript1.2">
var dragswitch=0
var nsx
var nsy
var nstemp
function drag_dropns(name){
temp=eval(name)
temp.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP)
temp.onmousedown=gons
temp.onmousemove=dragns
temp.onmouseup=stopns
}
function gons(e){
temp.captureEvents(Event.MOUSEMOVE)
nsx=e.x
nsy=e.y
}
function dragns(e){
if (dragswitch==1){
temp.moveBy(e.x-nsx,e.y-nsy)
return false
}
}
function stopns(){
temp.releaseEvents(Event.MOUSEMOVE)
}
//drag drop function for IE 4+////
/////////////////////////////////
var dragapproved=false
function drag_dropie(){
if (dragapproved==true){
document.all.showimage.style.pixelLeft=tempx+event.clientX-iex
document.all.showimage.style.pixelTop=tempy+event.clientY-iey
return false
}
}
function initializedragie(){
iex=event.clientX
iey=event.clientY
tempx=showimage.style.pixelLeft
tempy=showimage.style.pixelTop
dragapproved=true
document.onmousemove=drag_dropie
}
if (document.all){
document.onmouseup=new Function("dragapproved=false")
}
////drag drop functions end here//////
function hidebox(){
if (document.all)
showimage.style.visibility="hidden"
else if (document.layers)
document.showimage.visibility="hide"
}
</script>
<div id="showimage" style="position:absolute; width:500px; left:465px; top:18px; height: 0px;">
<table border="0" width="199" cellspacing="0" cellpadding="0">
<tr>
<td width="100%"><table border="0" width="100%" cellspacing="0" cellpadding="0"
height="36">
<tr>
<td width="100%" bgcolor="#C6FFC6" style="padding:4px" onMousedown="initializedragie()"><ilayer width="100%" onSelectStart="return false"><layer width="100%" onMouseover="dragswitch=1;drag_dropns(showimage)" onMouseout="dragswitch=0" class="style1">
<div align="left" class="style2">
<div align="center">用鼠标按着我拖拖看<span class="style7">^o^</span></div>
</div>
</layer>
</ilayer></td>
<td bgcolor="#00CCFF" style="cursor:hand"><strong><a href="#" onClick="hidebox();return false">×</a></strong></td>
</tr>
<tr>
<td width="100%" style="padding:4px" colspan="2"><p> </p>
<div id=musicList ondragstart="musicList_dragStart();">
<div class="style2" id=musicListTitle>All Music</div>
<span class="style2"><a href=" <a href=" <a href=" <a href=" <hr>
<span class="style4">Tips: 把歌曲拖入播攑ֈ?lt;br>
</span>
<input type="button" class="style2" onclick="doFull();" value="全屏/ESCq回">
</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div id=info></div>
<body>
</html>
<HTML xmlns:v>
<style>
v\:*{behavior:url(#default#VML)}
v\:textpath{font-family:楷体_gb2312;font-size:26px;v-text-align:left}
</style>
<body>
<xmp id=xLyric style=display:none>
[ti:误我来]
[ar:苏芮&虞戡q]
[al:]
[00:00.00]?: 梁弘?br />[00:06.34]?: 梁弘?
[00:16.00]<1-3:3;6:2;7:3>我踩着不变的步?
[00:22.19]<3:2;6:2;9:2>是ؓ了配合你的到?
[00:28.54]在慌张迟疑的时?
[00:35.25]误我来
[00:41.61]我带着梦的期?
[00:47.96]是无法按捺的情怀
[00:53.99]在你不注意的时?
[01:00.75]误我来
[02:19.49][01:10.00]别说什?
[02:26.39][01:16.28]那是你无法预知的世界
[02:33.94][01:23.51]别说 你不用说
[02:39.72][01:29.32]你的眼睛已经告诉了我
[02:52.22][01:42.46]当春雨飘呀飘的飘在
[02:58.54][01:48.41]你滴也滴不完的发?
[03:04.62][01:54.53]戴着你的水晶珠链
[03:11.60][02:01.36]误我来
[03:19.24][02:07.02]www.aboutplayer.com
</xmp>
</body>
</html>
<script>
window.onerror=function(){return false}
start()
function start(){
browser_ini()
timer_ini()
emv_ini()
lrc.setData(oo("xLyric").innerHTML)
lrc.write("歌曲载入中,误心{待...","l")
emv.play("mms://218.66.102.192/mp3/2005-01-06/fea30a20-e49f-4ebc-8f25-44cfe4830ca7.wma")
}
function emv_ini(){
var l
window.emv={}
lrc_ini()
l="<div id=bxEmv style=position:absolute;left:180;top:50;width:600;height:460>"
l+="<div style=position:absolute;left:0;top:0;width:600;height:460;></div>"
l+="<div id=bxEmvScreen style=position:absolute;overflow:hidden;left:19;top:26;width:560;height:360;>"
l+="</div>"
l+="</div>"
l+="<object classid=clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95 id=mplayer width=250 height=200 style=display:none></object>"
insHtm(document.body,l)
emv.play=function(url){oo("mplayer").FileName=url;oo("mplayer").Play()}
emv.time=function(){
var mPos=mplayer.CurrentPosition,n=lrc.i
var n1,o,len,w,per,n0,n1
n1=n<lrc.arr.length-1?lrc.arr[n+1].slice(0,"|")*1:9999
if(n1<mPos){
lrc.i++
n++
if(n==0)
lrc.write(lrc.arr[n].slice("|"),"l")
if(n<lrc.arr.length-1)
lrc.write(lrc.arr[n+1].slice("|"),n%2==1?"l":"r")
}
if(n>=0){
n0=lrc.arr[n].slice(0,"|")
n1=lrc.arr.length>n+1?lrc.arr[n+1].slice(0,"|"):4
o=oo("bxCaption_"+(n%2==0?"l":"r")+"_cover")
len=o.time!=""?o.time*1:n1-n0
per=(mPos-n0)/len
for(i=0.001;i<1;i+=0.001){
per1=lrc.getRealPos(o,i)
if(per1>=per)
break
}
o.style.width=o.width*i
}
}
timer.add("emv.time()")
}
function lrc_ini(){
window.lrc={}
lrc.wordPer=function(str,pos){
return str.slice(0,pos).replace(/[^\x00-\xff]/g," ").length/str.replace(/[^\x00-\xff]/g," ").length
}
lrc.setData=function(str){
var l,a,i,ad,n,j
str=str.replace(/\|/g,"").replace(/\r\n/g,"\n")
str=str.replace(/\[(\d\d)\:(\d\d)\.(\d\d)\]/g,function($0,$1,$2,$3){return ($1*60+$2*1+$3/100)+"|"})
a=str.split("\n")
lrc.arr=new Array()
for(i=0;i<a.length;i++){
ad=a[i].split("|")
for(j=1;j<ad.length;j++){
lrc.arr.add(ad[j-1]+"|"+ad[ad.length-1])
}
}
lrc.i=-1
sortIndex=0
sortDir=1
lrc.arr.sort(sortFoo)
}
lrc.getRealPos=function(obj,pos){
var a=obj.path,zoom=obj.zoom,pos1=pos*zoom
var a,i,ad
for(i=0;i<a.length;i++){
ad=a[i]
if(pos<=ad[0])
continue
if(pos>ad[0]&&pos<=ad[1])
pos1+=(zoom*ad[2]-zoom)*(pos-ad[0])
else{
pos1+=(zoom*ad[2]-zoom)*(ad[1]-ad[0])
}
}
return pos1
}
lrc.write=function(str,pos){
var word=str,style=""
var x,y,l,w,w1,o,a,i,ad
if(/^\<.+\>/.test(str)){
word=str.slice(">")
style=str.slice(1).slice(0,">")
}
w=word.replace(/[^\x00-\xff]/g," ").length*13+2
if(pos=="l"){
x=40
y=285
}
else{
x=520-w
y=315
}
l="<div id=bxCaption_"+pos+" style='position:absolute;left:"+x+";top:"+y+";width:"+w+";height:32;overflow:hidden'>"
l+="<v:curve to=800,1 strokecolor=black strokeweight=3 style=position:absolute;top:14>"
l+="<v:path textpathok=t /><v:textpath on=t string='"+word+"' /></v:curve>"
l+="<v:curve to=800,1 strokecolor=white fillcolor=white strokeweight=1 style=position:absolute;top:14>"
l+="<v:path textpathok=t /><v:textpath on=t string='"+word+"' /></v:curve>"
l+="</div>"
l+="<div id=bxCaption_"+pos+"_cover width="+w+" style=position:absolute;left:"+x+";top:"+y+";width:0;height:32;overflow:hidden>"
l+="<v:curve to=800,1 strokecolor=white strokeweight=3 style=position:absolute;top:14>"
l+="<v:path textpathok=t /><v:textpath on=t string='"+word+"' /></v:curve>"
l+="<v:curve to=800,1 strokecolor=blue fillcolor=blue strokeweight=1 style=position:absolute;top:14>"
l+="<v:path textpathok=t /><v:textpath on=t string='"+word+"' /></v:curve>"
l+="</div>"
odel("bxCaption_"+pos)
odel("bxCaption_"+pos+"_cover")
insHtm("bxEmvScreen",l)
o=oo("bxCaption_"+pos+"_cover")
o.time=style.get("time")
o.path=new Array()
len1=1
a=style.split(";")
for(i=0;i<a.length;i++){
if(!/(\d+):(\d+)/.test(a[i]))
continue
if(/(\d+)-(\d+):(\d+)/.test(a[i])){
ad=/(\d+)-(\d+):(\d+)/.exec(a[i])
ad[0]=lrc.wordPer(word,ad[1]-1)
ad[1]=lrc.wordPer(word,ad[2]*1)
ad[2]=ad[3]
}
else{
ad=/(\d+):(.+)/.exec(a[i])
ad[0]=lrc.wordPer(word,ad[1]-1)
ad[1]=lrc.wordPer(word,ad[1]*1)
}
len1+=(ad[1]-ad[0])*(ad[2]-1)
o.path.add(ad)
}
o.zoom=1/len1
}
}
function browser_ini(){
window.isIE=navigator.userAgent.indexOf("IE")>0
window.isIE5=navigator.userAgent.indexOf("IE 5.0")>0
String.prototype.trim=function(){return this.replace(/(^[\s]*)|([\s]*$)/g,"")}
String.prototype.inc=function(s1,s2){if(s2==null){s2=","};return (s2+this+s2).indexOf(s2+s1+s2)>-1?true:false}
String.prototype._slice="".slice
String.prototype.slice=function(n1,n2){var v,b1=typeof(n1)=="number",b2=typeof(n2)=="number";if(!b1||typeof(n2)=="string"){v=eval("this._slice("+(b1?n1:this.indexOf(n1)+(n2==null?1:0)+(this.indexOf(n1)==-1?this.length:0))+(n2==null?"":(b2?n2:(this.indexOf(n2)==-1?"":","+this.indexOf(n2))))+")")}else{v=isIE5&&n1<0&&n2==null?this._slice(this.length-1):eval("this._slice(n1"+(n2==null?"":","+n2)+")")}return v}
String.prototype.get=function(str,def){if(this.inc(str,";"))return 1;var a=this.match(new RegExp("(^|;)"+str+":[^;]*"));return a==null||str==""?(def==null?"":def):a[0].replace(";","").slice(str.length+1)}
Array.prototype.add=function(key){this[this.length]=key}
window.oo=function(obj){return typeof(obj)=="string"?document.getElementById(obj):obj}
window.insHtm=function(op,html,inEnd){op=oo(op);if(isIE){op.insertAdjacentHTML(inEnd==null?"beforeend":"afterbegin",html)}else{var r=op.ownerDocument.createRange();r.setStartBefore(op);eval("op."+(inEnd==null?"appendChild":"insertBefore")+"(r.createContextualFragment(html),op.firstChild)");}}
window.odel=function(obj){if(oo(obj)!=null){oo(obj).parentNode.removeChild(oo(obj))}}
if(!isIE){
HTMLElement.prototype.contains=function(node){if(!node)return false;do if(node==this){return true}while(node=node.parentNode){return false}}
Event.prototype.__defineGetter__("srcElement",function(){var node=this.target;while(node.nodeType!=1){node=node.parentNode}return node})
Event.prototype.__defineGetter__("toElement",function(){return this.relatedTarget})
}
}
function timer_ini(){
window.timer={}
timer.handle=null
timer.queue=""
timer.i=0
timer.add=function(key){if(!timer.queue.inc(key,";")){timer.queue+=key+";"}}
timer.del=function(key){timer.queue=move.queue.replace(key+";","")}
timer.inv=function(){
window.clearTimeout(timer.handle)
eval(timer.queue)
timer.i++
timer.handle=window.setTimeout("timer.inv()",10)
}
timer.inv()
}
function sortFoo(v1,v2){
var s1=v1.split("|")[sortIndex],s2=v2.split("|")[sortIndex]
if(!isNaN(s1)&&!isNaN(s2)){
s1*=1
s2*=1
}
return (s1==s2?0:(s1>s2?1:-1))*sortDir
}
</script>
<HTML>
<HEAD>
<TITLE>试正则表达式的|页</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=GB2312">
<link rel="stylesheet" type="text/css" href="css/css.css">
<SCRIPT>
/**
* Method 试正则表达式函?
* @param method 接收到的正则表达式类的方?
*/
function check(method)
{
// 用戯入的正则表达式的标志转换为小?
form1.flags.value = form1.flags.value.toLowerCase();
// 如果含有不是g、i、m的字W? ?提示q返?
if ( form1.flags.value.search(/[^g|i|m]/g) != -1 )
{
alert("flags only can be g, i, m");
return;
}
// 利用用户输入的字W串和标志徏立正则表辑ּ
var re = new RegExp(form1.regex.value, form1.flags.value);
// 获得q显C生成的正则表达式的字符串Ş?
destRegex.innerText = re.toString() + ' ';
// 定义 q回?
var cr;
ex = "new RegExp('" + form1.regex.value + "', '" + form1.flags.value + "').";
// Ҏ用户选择的方? q行相应的调?
switch ( method )
{
case '0': // 正则表达式的 exec Ҏ
cr = re.exec(form1.string.value);
ex = ex + "exec('" + form1.string.value + "')";
break;
case '1': // 正则表达式的 test Ҏ
cr = re.test(form1.string.value);
ex = ex + "test('" + form1.string.value + "')";
break;
case '2': // 字符串类?match Ҏ
cr = form1.string.value.match(re);
ex = "'" + form1.string.value + "'.match(" + re.toString() + ")";
break;
case '3': // 字符串类?search Ҏ
cr = form1.string.value.search(re);
ex = "'" + form1.string.value + "'.search(" + re.toString() + ")";
break;
case '4': // 字符串类?replace Ҏ
cr = form1.string.value.replace(re);
ex = "'" + form1.string.value + "'.replace(" + re.toString() + ")";
break;
case '5': // 字符串类?split Ҏ
cr = form1.string.value.split(re);
ex = "'" + form1.string.value + "'.split(" + re.toString() + ")";
break;
}
// 获得q显C辑ּ
expression.innerText = ex;
// 获得q显C结果的cd
returnType.innerText = typeof(cr);
// 定义l果
var result = '';
if ( cr != null && typeof(cr) == 'object' && cr.length != null ) // 如果计算l果是一个数l? 则取出所有数l的?
{
for ( i = 0; i < cr.length; i++ )
{
result += "array[" + i + "] = '" + cr[i] + "'\n";
}
}
else
if ( cr != null ) // 如果计算l果不ؓnull, 则取结果的?
{
result = cr;
}
// 获得q显C结?
matchResult.innerText = result + ' ';
// 获得q显C正则表辑ּ的lastIndex属?
lastIndex.innerText = re.lastIndex + ' ';
}
</SCRIPT>
</HEAD>
<BODY ALIGN=CENTER>
<h3>试正则表达?lt;/h3>
<FORM NAME="form1" METHOD="post" ACTION="" ALIGN=CENTER>
<TABLE BORDER="1" width="772" align="center">
<TR>
<TD COLSPAN="2" ALIGN="CENTER" width="762"><B>试正则表达?lt;/B></TD>
</TR>
<TR>
<TD width="147">正则表达式字W串:</TD>
<TD width="609"><INPUT NAME="regex" TYPE="text" size="75"></TD>
</TR>
<TR>
<TD width="147">正则表达式参?</TD>
<TD width="609"><INPUT NAME="flags" TYPE="text" ID="flags" size="20" value="g"></TD>
</TR>
<TR>
<TD width="147">试用的字符?</TD>
<TD width="609"><INPUT NAME="string" TYPE="text" size="75"></TD>
</TR>
<TR>
<TD width="147">选择试Ҏ:</TD>
<TD ALIGN="CENTER" width="609">
<SELECT NAME="select" onChange="check(this.value)">
<OPTION VALUE="0">exec</OPTION>
<OPTION VALUE="1">test</OPTION>
<OPTION VALUE="2">match</OPTION>
<OPTION VALUE="3">search</OPTION>
<OPTION VALUE="4">replace</OPTION>
<OPTION VALUE="5">split</OPTION>
</SELECT>
<INPUT VALUE='你好运' onclick="check(form1.select.value)" TYPE=button>
</TD>
</TR>
<TR>
<TD width="147">生成的表辑ּ:</TD>
<TD STYLE="color: blue" ID=destRegex width="609"> </TD>
</TR>
<TR>
<TD width="147">生成的JS表达?</TD>
<TD STYLE="color: blue" ID=expression width="609"> </TD>
<TR>
<TD width="147">q回cd:</TD>
<TD STYLE="color: darkred" ID=returnType width="609"> </TD>
</TR>
<TR>
<TD width="147">l果:</TD>
<TD STYLE="color: red" ID=matchResult width="609"> </TD>
</TR>
<TR>
<TD width="147">regex lastIndex:</TD>
<TD STYLE="color: red" ID=lastIndex width="609"> </TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
属??XML:NAMESPACE PREFIX = O /?> |
||||||||||||||
1.constructor 指定创徏一个对象的函数?o:p> |
||||||||||||||
constructor 属性是每个h原型的对象的原型成员。这包括除了 arguments、Enumerator、Error、Global、Math、RegExp、Regular Expression ?VBArray 对象以外的所有内?JScript 对象。constructor 属性包含了ҎU函数的引用,此种函数构造了特定对象的实例?br />Zcȝ对象没有 constructor 属性?o:p> |
||||||||||||||
2.length q回字符串的长度?o:p> |
||||||||||||||
length 属性包含一个整?该整数指C?String 对象中的字符数。String 对象中的最后一个字W的索引?length - 1?o:p> |
||||||||||||||
3.prototype 为对象的c返回原型的引用?o:p> |
||||||||||||||
用prototype属性ؓ对象的类提供一l基本功能。对象的新的实例“扎쀝了赋予该对象的原型的行为?br />所有内?JScript 对象都有一个只ȝ prototype 属性。可以像该例中那?为原型添加功?但不可以向对象赋予另外一个原型。但?可以向用户定义的对象赋予新的原型?br />本语a参考中,每个内部对象的方法和属性列表都指示了哪些是对象原型的一部分,哪些不是?br />注意Q当以快速模式(JScript .NET 的默认模式)q行?不能修改内置对象?prototype 属性。若要从命o行编译?prototype 属性的E序,必须使用 /fast- 关闭快速选项。由于线E处理问??ASP.NET 中关闭快速选项是不安全的?o:p> |
||||||||||||||
|
||||||||||||||
Ҏ |
||||||||||||||
1.function anchor(anchorString : String ) : String |
||||||||||||||
q回对象中指定文本周围带?HTML 定位点(h NAME 属性)的字W串?br />参数QanchorString是要攑֜ HTML 定位?NAME 属性中的文本?br />备注Q调?anchor Ҏ?String 对象外创Z个命名定位点?br />未进行Q何检查来查看此标记是否已应用于该字符丌Ӏ?o:p> |
||||||||||||||
2.function big() : String |
||||||||||||||
q回 String 对象中文本周围带?HTML <BIG> 标记的字W串?br />备注Q未q行M查来查看此标记是否已应用于该字符丌Ӏ?o:p> |
||||||||||||||
3.function blink() : String |
||||||||||||||
q回 String 对象中文本周围带?HTML <BLINK> 标记的字W串?br />备注Q未q行M查来查看此标记是否已应用于该字符丌Ӏ在 Microsoft Internet Explorer 中不支持 <BLINK> 标记 |
||||||||||||||
4.function bold() : String |
||||||||||||||
q回 String 对象中文本周围带?HTML <B> 标记的字W串?br />备注:未进行Q何检查来查看此标记是否已应用于该字符丌Ӏ? |
||||||||||||||
5.function charAt(index : Number) : String |
||||||||||||||
q回 String 对象的指定烦引处的字W?br />参数Qindex 必选。所需字符的从零开始的索引。有效gؓ 0 到字W串长度?1 的数字?br />备注QcharAt Ҏq回一个字W?该字W值等于指定烦引位|的字符。一个字W串中的W一个字W位于烦引位|?0,W二个字W位于烦引位|?1,依此cL。超出有效范围的 index q回I字W串?o:p> |
||||||||||||||
6.function charCodeAt(index : Number) : String |
||||||||||||||
q回一个整?该整数表C?String 对象中指定位|处的字W的 Unicode ~码?br />参数Qindex 必选。所需字符的从零开始的索引。有效gؓ 0 到字W串长度?1 的数字?br />备注Q一个字W串中的W一个字W位于烦引位|?0,W二个字W位于烦引位|?1,依此cL。如果指?index 没有字符,返?NaN?o:p> |
||||||||||||||
7.function concat([string1 : String [, ... [, stringN : String]]]]) : String |
||||||||||||||
q回一个字W串?该值包含当前字W串与提供的M字符串的q接?br />参数Qstring1, ..., stringN 可选。要q接到当前字W串末尾?String 对象或文本?br />备注Qconcat Ҏ的结果等同于Qresult = curstring + string1 + ... + stringN。curstring 是指对象中存储的用于提供 concat Ҏ的字W串。源字符串中或结果字W串中的值的变化都不会媄响另一个字W串中的倹{如果有不是字符串的参数,则它们在q接?curstring 之前首先被转换为字W串?o:p> |
||||||||||||||
8.function fixed() : String |
||||||||||||||
q回 String 对象中文本周围带?HTML <TT> 标记的字W串?br />备注Q未q行M查来查看此标记是否已应用于该字符丌Ӏ?o:p> |
||||||||||||||
9.function fontcolor(colorVal : String) : String |
||||||||||||||
q回 String 对象中文本周围带?HTML <FONT> 标记Q具?COLOR 属性)的字W串?br />参数QcolorVal 必选。包含颜色值的字符串倹{可以是颜色的十六进制?也可以是颜色的预定义名?br />备注Q有效的预定义颜色名取决?JScript LQ浏览器、服务器{)。它们也可能随主机版本的不同而不同。详l信息请查阅L文。未q行M查来查看此标记是否已应用于该字符丌Ӏ?o:p> |
||||||||||||||
10.function fontsize(intSize : Number) : String |
||||||||||||||
q回 String 对象中文本周围带?HTML <FONT> 标记Q具?SIZE 属性)的字W串?br />参数QintSize 必选。用来指定文本大的整数倹{? |
||||||||||||||
11.function fromCharCode([code1 : Number [, ... [, codeN : Number]]]]) : String |
||||||||||||||
从一?Unicode 字符gq回一个字W串?br />参数Qcode1, ..., codeN 可选。要转换为字W串?Unicode 字符值序列。如果没有给出参?l果为空字符丌Ӏ?br />备注QfromCharCode Ҏ是从全局 String 对象中调用的?o:p> |
||||||||||||||
12.function indexOf(subString : String [, startIndex : Number]) : Number |
||||||||||||||
q回 String 对象内第一ơ出现子字符串的字符位置?br />参数QsubString 必选。在 String 对象中搜索的子字W串? |
||||||||||||||
13.function italics() : String |
||||||||||||||
q回字符串对象中文本周围带有 HTML <I> 标记的字W串?br />备注Q未q行M查来查看此标记是否已应用于该字符丌Ӏ?o:p> |
||||||||||||||
14.function lastIndexOf(substring : String [, startindex : Number ]) : Number |
||||||||||||||
q回 String 对象中某个子字符串的最后一个匹配项的烦引?br />参数Qsubstring 必选。在 String 对象内将被搜索的子字W串? |
||||||||||||||
15.function link(linkstring : String) : String |
||||||||||||||
q回 String 对象中文本周围带?HTML 定位点和 HREF 属性的字符丌Ӏ?br />备注Q调?link Ҏ来创?String 对象外部的超U链接。未q行M查来查看此标记是否已应用于该字符丌Ӏ?o:p> |
||||||||||||||
16.function localeCompare(stringExp : String) : Number |
||||||||||||||
q回一个?指示两个字符串在当前区域讄中是否相{?br />参数QstringExp 必选。要与当前字W串对象q行比较的字W串?br />备注QlocaleCompare 对当前字W串对象?stringExp q行区分区域讄的字W串比较,q返?-1? ?+1,q取决于pȝ中默认的区域讄的排序顺序。如果当前字W串对象排在 stringExp 之前,?localeCompare q回 -1;如果当前字符串排?stringExp 之后,则返?+1。如果返回gؓ?则说明这两个字符串是相等的?o:p> |
||||||||||||||
17.function match(rgExp : RegExp) : Array |
||||||||||||||
使用正则表达式模式对字符串执行搜?q返回一个包含该搜烦l果的数l?br />参数QrgExp 必选。包含正则表辑ּ模式和适用标志?Regular Expression 对象的实例。也可以是包含正则表辑ּ模式和标志的变量名或字符丌Ӏ?br />备注Q如?match Ҏ没有扑ֈ匚w,返?null。如果找到匹??match Ҏq回一个数l?q将更新全局 RegExp 对象的属性以反映匚wl果?br />match Ҏq回的数l有三个属性:input、index ?lastIndex。Input 属性包含整个被搜烦的字W串。Index 属性包含了在整个被搜烦字符串中匚w的子字符串的位置。LastIndex 属性包含了前一ơ匹配中最后一个字W的下一个位|?br />如果没有讄全局标志 (g),数组的零元素包含整个匚w,而第 1 到第 n 个元素包含了匚w中曾出现q的M个子匚w。此行ؓ与没有设|全局标志?exec Ҏ的行为相同。如果设|了全局标志,则元?0 ?n 中包含所有出现的匚w?o:p> |
||||||||||||||
18.function replace(rgExp : RegExp, replaceText : String) : String |
||||||||||||||
q回一个字W串的副?该字W串的文本已被用正则表辑ּ或搜索字W串替换?br />参数QrgExp 必选。Regular Expression 对象的实例包含正则表辑ּ模式和适用标志。也可以?String 对象或文本。如?rgExp 不是 Regular Expression 对象的实?它将被{换ؓ字符?q对l果q行_的搜?字符串将不会被试图{化ؓ正则表达式?
如果 replaceText 是一个函?对于每个匚w的子字符?调用该函数时带有下面?m + 3 个参?q里 m 是在 rgExp 中用于捕L左括弧的个数。第一个参数是匚w的子字符丌Ӏ接下来?m 个参数是搜烦中捕获到的全部结果。参?m + 2 是当前字W串对象中发生匹配位|的偏移?而参?m + 3 是当前字W串对象。结果ؓ每一匚w的子字符串替换ؓ函数调用的相应返回值后的字W串倹{Replace Ҏ更新全局 RegExp 对象的属性?o:p> |
||||||||||||||
19.function search(rgExp : RegExp) : Number |
||||||||||||||
q回正则表达式搜索中W一个子字符串匹配项的位|?br />参数QrgExp 必选。Regular Expression 对象的实例包含正则表辑ּ模式和适用标志? |
||||||||||||||
20.function slice(start : Number [, end : Number]) : String |
||||||||||||||
q回字符串的片段?br />参数Qstart 必选。指向字W串指定部分的开头的索引?end 可选。指向字W串指定部分的结索引?br />备注Qslice Ҏq回一个包含字W串指定部分?String 对象?br />slice Ҏ一直复制到 end 所指示的元?但是不包括该元素。如?start ,则将其视?length + start,此处 length 为字W串的长度。如?end ,则将其视?length + end,此处 length 为字W串的长度。如果省?end,则将一直提取到字符串的l尾。如?end 出现?start 之前,则不会将M字符复制到新字符串中?o:p> |
||||||||||||||
21.function small() : String |
||||||||||||||
q回 String 对象中文本周围带?HTML <SMALL> 标记的字W串?br />备注Q未q行M查来查看此标记是否已应用于该字符丌Ӏ?o:p> |
||||||||||||||
22.function split([ separator : { String | RegExp } [, limit : Number]]) : Array |
||||||||||||||
q回一个字W串拆分q子字符串时所产生的字W串数组?br />参数Qseparator 可选。字W串或正则表辑ּ对象的实?它标识用于分隔字W串的一个或多个字符。如果忽略该参数,返回包含整个字W串的单元素数组? |
23.function strike() : String |
q回 String 对象中文本周围带?HTML <STRIKE> 标记的字W串?br />备注Q?未进行Q何检查来查看此标记是否已应用于该字符丌Ӏ?o:p> |
24.function sub() : String |
q回 String 对象中文本周围带?HTML <SUB> 标记的字W串?br />备注Q未q行M查来查看此标记是否已应用于该字符丌Ӏ?o:p> |
25.function substr(start : Number [, length : Number]) : String |
q回一个从指定位置开?q具有指定长度的子字W串?br />参数Qstart 必选。所需的子字符串的起始位置。字W串中第一个字W的索引?0? |
26.function substring(start : Number, end : Number) : String |
q回位于 String 对象中的指定位置的子字符丌Ӏ?br />参数Qstart 必选。从 0 开始的索引整数,指示子字W串的v始位|? |
27.function sup() : String |
q回 String 对象中文本周围带?HTML <SUP> 标记的字W串?br />备注Q未q行M查来查看此标记是否已应用于该字符丌Ӏ?o:p> |
28.function tolocaleLowerCase() : String |
q回一个字W串,其中所有的字母都被转换为小?同时考虑到宿ȝ境的当前区域讄?br />备注QtoLocaleLowerCase Ҏ转换字符串中的字W?同时考虑到宿ȝ境的当前区域讄。在大多数情况下,其结果与利用 toLowerCase Ҏ所得到的结果相同。如果语a规则与常规的 Unicode 大小写映冲H?则结果将会不同?o:p> |
29.function tolocaleUpperCase() : String |
||||||||||||||||||
q回一个字W串,其中所有字母都被{换ؓ大写,同时考虑宿主环境的当前区域设|?br />备注QtoLocaleUpperCase Ҏ转换字符串中的字W?同时考虑到宿ȝ境的当前区域讄。在大多数情况下,其结果与使用 toUpperCase Ҏ所得到的结果相同。如果语a规则与常规的 Unicode 大小写映冲H?则结果将会不同?o:p> |
||||||||||||||||||
30.function toLowerCase() : String |
||||||||||||||||||
q回一个字W串,该字W串中的所有字母都被{换ؓ写字母?br />备注QtoLowerCase Ҏ寚w字母字符无效?o:p> |
||||||||||||||||||
31.function toString( [radix : Number] ) : String |
||||||||||||||||||
q回表示对象的字W串?br />参数Qradix 可选。ؓ数字D{换ؓ字符串指定一个基数。此g用于数字
|
32.function toUpperCase() : String |
||||||||||||||||
q回一个字W串,该字W串中的所有字母都被{换ؓ大写字母?br />备注QtoUpperCase Ҏ寚w字母字符无效?o:p> |
||||||||||||||||
33.function valueOf() : object |
||||||||||||||||
q回指定对象的原始倹{?br />备注Q每个内?JScript 对象?valueOf Ҏ被以不同方式定义?o:p>
Math ?Error 对象都没?valueOf Ҏ?o:p> |
主调H口与非模式H口的信息传?/font>
1Q函数调用传递方?/font>
vReturnValue = window.showModelessDialog ( sURL [, vArguments] [, sFeatures] )
主调H口通过showModelessDialogҎ的第二个参数 vArguments 向非模式H口传递参敎ͼ该参数可以是数组Q也可以是DOM对象?/font>
非模式窗口通过window.dialogArguments 来提取传递过来的参数Q若是数l,则用window.dialogArguments[i]来表C数l的Wi个参?/font>
非模式窗口通过window.returnValue向主调窗口传回|q个g为showModelessDialog Ҏ的返回D主调H口接收?/font>
2Q窗口操作传递方?/font>
非模式窗口通过主调H口传递过来window对象直接操纵主调H口的元?/font>
此时showModelessDialog 需要将主调H口?window 对象作ؓ参数传出Q在非模式窗口中卛_取得主调H口的窗口参考,用脚本可以直接对它操Uc?/font>
如主调窗口的调用代码如下Q?/font>
showModelessDialog ("myDialog.htm",window,"status:false;dialogWidth:300px;dialogHeight:300px;edge:Raised; enter: Yes; help: No; resizable: No; status: No");
非模式窗口JScript代码如下Q即可接收主调窗口的H口对象
var sData = window.dialogArguments;
接着可以操作主调窗口的L变量和函CQ如下:
sData.sUserName = ‘Value from ModelessDialog? // sUserName是主调窗口的全局变量
sData.fnUpdate(); //fnUpdate是主调窗口的函数Q在该函C对sUserName变量做处?/font>
q种方式下,主调H口可以不通过普通返回值方式取得非模式H口讑֮的数?o:p>
备注Q?/font>
主调窗口的Window对象传入非模式窗口是一U很灉|的操作手Dc但在实践中发现Q窗口对象只能是主调H口自己的,你不能通过Dom对象l构Q将其他帧页面(非主调窗口)的Window对象传入。但在非模窗口中可以Ҏ传入的主调窗口的Window对象Q通过Dom对象l构引用到非主调H口的Q何对象?/font>
关于非模式对话框的参数设|sFeatures?/font>
http://msdn.microsoft.com/workshop/samples/author/dhtml/refs/showModelessDialog.htm
<input type="text" value="#0099CC" size="12" onclick="returnColor()" style="background-color: #0099CC">
</body>
</html>
2.
test1.html
=====================================
<SCRIPT>
var dWin=null;
function doDialog()
{
dWin=showModelessDialog('color.html',window,'status:no;dialogWidth:260px;dialogHeight:200px');
}
</SCRIPT>
<form name=form1>
<input name="color1">
<button onclick="doDialog();" >open</button>
</form>
color.html
====================================
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2311">
<title>调色?lt;/title>
<script>
var ColorHex=new Array('00','33','66','99','CC','FF')
var SpColorHex=new Array('FF0000','00FF00','0000FF','FFFF00','00FFFF','FF00FF')
var current=null
function intocolor()
{
var colorTable=''
for (i=0;i<2;i++)
{
for (j=0;j<6;j++)
{
colorTable=colorTable+'<tr height=12>'
colorTable=colorTable+'<td width=11 style="background-color:#000000">'
if (i==0){
colorTable=colorTable+'<td width=11 style="background-color:#'+ColorHex[j]+ColorHex[j]+ColorHex[j]+'">'}
else{
colorTable=colorTable+'<td width=11 style="background-color:#'+SpColorHex[j]+'">'}
colorTable=colorTable+'<td width=11 style="background-color:#000000">'
for (k=0;k<3;k++)
{
for (l=0;l<6;l++)
{
colorTable=colorTable+'<td width=11 style="background-color:#'+ColorHex[k+i*3]+ColorHex[l]+ColorHex[j]+'">'
}
}
}
}
colorTable='<table width=253 border="0" cellspacing="0" cellpadding="0" style="border:1px #000000 solid;border-bottom:none;border-collapse: collapse" bordercolor="000000">'
+'<tr height=30><td colspan=21 bgcolor=#cccccc>'
+'<table cellpadding="0" cellspacing="1" border="0" style="border-collapse: collapse">'
+'<tr><td width="3"><td><input type="text" name="DisColor" size="6" disabled style="border:solid 1px #000000;background-color:#ffff00"></td>'
+'<td width="3"><td><input type="text" name="HexColor" size="7" style="border:inset 1px;font-family:Arial;" value="#000000"></td></tr></table></td></table>'
+'<table border="1" cellspacing="0" cellpadding="0" style="border-collapse: collapse" bordercolor="000000" onmouseover="doOver()" onmouseout="doOut()" onclick="doclick()" style="cursor:hand;">'
+colorTable+'</table>';
colorpanel.innerHTML=colorTable
}
function doOver() {
if ((event.srcElement.tagName=="TD") && (current!=event.srcElement)) {
if (current!=null){current.style.backgroundColor = current._background}
event.srcElement._background = event.srcElement.style.backgroundColor
DisColor.style.backgroundColor = event.srcElement.style.backgroundColor
HexColor.value = event.srcElement.style.backgroundColor
event.srcElement.style.backgroundColor = "white"
current = event.srcElement
}
}
function doOut() {
if (current!=null) current.style.backgroundColor = current._background
}
function doclick(){
if (event.srcElement.tagName=="TD"){
dialogArguments.form1.color1.value=event.srcElement._background
window.close();
}
}
</script>
<SCRIPT>
function window.onunload()
{
dialogArguments.dWin=null;
}
</SCRIPT>
</head>
<body onload="intocolor()" topmargin=0 leftmargin=0 scroll=no>
<div id="colorpanel" style="position: absolute;">
</div>
</body>
</html>