??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美系列亚洲系列,中国成人一区,黄页网站在线播放http://www.aygfsteel.com/mlw2000/category/16281.htmlBe happy here...zh-cnWed, 28 Feb 2007 01:49:24 GMTWed, 28 Feb 2007 01:49:24 GMT60javascript 异常处理 [转]http://www.aygfsteel.com/mlw2000/articles/99917.htmlmlw2000mlw2000Thu, 15 Feb 2007 03:18:00 GMThttp://www.aygfsteel.com/mlw2000/articles/99917.htmlhttp://www.aygfsteel.com/mlw2000/comments/99917.htmlhttp://www.aygfsteel.com/mlw2000/articles/99917.html#Feedback0http://www.aygfsteel.com/mlw2000/comments/commentRss/99917.htmlhttp://www.aygfsteel.com/mlw2000/services/trackbacks/99917.html 异常 处理概述
在代码的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>



mlw2000 2007-02-15 11:18 发表评论
]]>
下拉列表的设定JS代码http://www.aygfsteel.com/mlw2000/articles/96537.htmlmlw2000mlw2000Mon, 29 Jan 2007 08:37:00 GMThttp://www.aygfsteel.com/mlw2000/articles/96537.htmlhttp://www.aygfsteel.com/mlw2000/comments/96537.htmlhttp://www.aygfsteel.com/mlw2000/articles/96537.html#Feedback0http://www.aygfsteel.com/mlw2000/comments/commentRss/96537.htmlhttp://www.aygfsteel.com/mlw2000/services/trackbacks/96537.htmlfunction setSelect(formName,objName,objValue)
{
 
 var objSel = document.forms(formName).elements(objName);
 
 for (var i = 0; i < objSel.length; i++)
 {
  if (objSel.options(i).value == objValue)
  {
   objSel.options(i).selected = true;
   
   break;
  }
 }
}

调用Ҏ
<script language="javascript">setSelect("form1","fenl",'<bean:write name="law" property="fenl"/>')</script> 

mlw2000 2007-01-29 16:37 发表评论
]]>
|页播放技术【好代码?? http://www.aygfsteel.com/mlw2000/articles/88840.htmlmlw2000mlw2000Tue, 19 Dec 2006 08:21:00 GMThttp://www.aygfsteel.com/mlw2000/articles/88840.htmlhttp://www.aygfsteel.com/mlw2000/comments/88840.htmlhttp://www.aygfsteel.com/mlw2000/articles/88840.html#Feedback0http://www.aygfsteel.com/mlw2000/comments/commentRss/88840.htmlhttp://www.aygfsteel.com/mlw2000/services/trackbacks/88840.html<html>
<head>
<title>aboutplayer</title>
<style>
body {
 overflow:auto;
 font-size:12px;
 cursor:default;
 background-color: #977E4A;
}

#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>



mlw2000 2006-12-19 16:21 发表评论
]]>
|页播放技术【好代码?http://www.aygfsteel.com/mlw2000/articles/88838.htmlmlw2000mlw2000Tue, 19 Dec 2006 08:18:00 GMThttp://www.aygfsteel.com/mlw2000/articles/88838.htmlhttp://www.aygfsteel.com/mlw2000/comments/88838.htmlhttp://www.aygfsteel.com/mlw2000/articles/88838.html#Feedback0http://www.aygfsteel.com/mlw2000/comments/commentRss/88838.htmlhttp://www.aygfsteel.com/mlw2000/services/trackbacks/88838.html        <tr>
          <td>
            <b>在线音乐Ҏ</b></td>
        </tr>
      </table>
      <br>
      <table align=center style="font:9pt">
        <tr>
          <td> <object classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" id="MediaPlayer1" width="286" height="225">
              <param name="AudioStream" value="-1">
              <param name="AutoSize" value="-1">
              <!--是否自动调整播放大小-->
              <param name="AutoStart" value="-1">
              <!--是否自动播放-->
              <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="Music/sayoldtime.mp3" 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">
              <!--如果?可以允许全屏,否则只能在窗口中查看-->
            </object> <br>
            <span style="cursor:hand" onClick="alert(document.MediaPlayer1.filename);">查看当前d</span><br>
            <b>MP3Ҏ</b>
            <br><span style="cursor:hand" onClick="document.MediaPlayer1.filename='http://xxzx.wems.net/jxggtd/wems-kj/kjk/yw3/1.MP3';">轩辕剑参外传-天之?lt;/span>
            <span style="cursor:hand" onClick="document.MediaPlayer1.filename='http://202.107.236.189/mal/zz/张真-U红好姑?mp3';">张真(U红好姑?</span>
           
            <br>
            <b>播放速度调整</b>
            <script>
var mediaRate=document.MediaPlayer1.Rate;
var mediaVolume=document.MediaPlayer1.Volume;
var mediaCurrentPosition=document.MediaPlayer1.CurrentPosition;
function setRate(num)
{
     mediaRate=num;
     document.MediaPlayer1.Rate=num;
}
function addCurrentPosition(num)
{
     mediaCurrentPosition=document.MediaPlayer1.CurrentPosition;
     mediaCurrentPosition+=num;
     if(mediaCurrentPosition<0)mediaCurrentPosition=0;
     document.MediaPlayer1.CurrentPosition=mediaCurrentPosition;
}
function addVolume(num)
{
     mediaVolume=document.MediaPlayer1.Volume;
     if(num>0 && mediaVolume<-1)
     {
           mediaVolume+=num;
           if(mediaVolume>-1)mediaVolume=-1;
           document.MediaPlayer1.Volume=mediaVolume;
     }
     else
     {
           if(num<0 && mediaVolume>-9999)
           {      mediaVolume +=num;
                 if(mediaVolume <-9999)mediaVolume=-9999;
                 document.MediaPlayer1.Volume=mediaVolume;
           }
     }
}
function addRate(num)
{
     mediaRate=document.MediaPlayer1.Rate;
     if(num>0 && mediaRate<12.0)
     {
           mediaRate+=num;
           //if(mediaRate >2.0)mediaRate=2.0;
           document.MediaPlayer1.Rate=mediaRate;
     }
     else
     {
           if(num<0 && mediaRate>0.1)
           {      mediaRate +=num;
                 if(mediaRate <0.1)mediaRate=0.1;
                 document.MediaPlayer1.Rate=mediaRate;
           }
     }
}
function exchangeValue(obj)
{
     if(obj=="0")
     {
           obj="-1";
     }
     else
     {
           obj="0";
     }
     return obj;
}
</script>
            <!--速度正常1.0
     速度?.0<value<1.0
     速度?.0<value<2.0
-->
            <span style="cursor:hand" onClick="setRate(1.2);">较快</span> <span style="cursor:hand" onClick="addRate(0.1);">加?lt;/span>
            <span style="cursor:hand" onClick="addRate(-0.1);">减?lt;/span> <span style="cursor:hand" onClick="setRate(0.8);">较慢</span>
            <span style="cursor:hand" onClick="setRate(1);">正常</span> <span style="cursor:hand" onClick="alert(mediaRate);">查看速度</span>
            <br>
            <b>播放声音调整</b> <span style="cursor:hand" onClick="document.MediaPlayer1.Mute=exchangeValue(document.MediaPlayer1.Mute);">静音/取消</span>
            <span style="cursor:hand" onClick="alert(document.MediaPlayer1.Mute);">查看</span>
            <br>
            <span style="cursor:hand" onClick="document.MediaPlayer1.Volume=-1">最?lt;/span>
            <span style="cursor:hand" onClick="document.MediaPlayer1.Volume=-9999">最?lt;/span>
            <span style="cursor:hand" onClick="document.MediaPlayer1.Volume=-180">默认</span>
            <span style="cursor:hand" onClick="document.MediaPlayer1.Volume=-259">中大</span>
            <span style="cursor:hand" onClick="document.MediaPlayer1.Volume=-399">中等</span>
            <span style="cursor:hand" onClick="document.MediaPlayer1.Volume=-999">中小</span>
            <span style="cursor:hand" onClick="document.MediaPlayer1.Volume=-1599">?lt;/span>
            <span style="cursor:hand" onClick="addVolume(100);">加大音量</span> <span style="cursor:hand" onClick="addVolume(-100);">减少音量</span>
            <span style="cursor:hand" onClick="alert(document.MediaPlayer1.Volume);">查看</span>
            <br>
            <b>播放界面控制</b><br>
            <span style="cursor:hand" onClick="document.MediaPlayer1.ShowCaptioning=exchangeValue(document.MediaPlayer1.ShowCaptioning);">昄/隐藏字幕</span>
            <span style="cursor:hand" onClick="alert(document.MediaPlayer1.ShowCaptioning);">查看</span>
            <br>
            <span style="cursor:hand" onClick="document.MediaPlayer1.ShowControls=exchangeValue(document.MediaPlayer1.ShowControls);">昄/隐藏播放控制</span>
            <span style="cursor:hand" onClick="alert(document.MediaPlayer1.ShowControls);">查看</span>
            <br>
            <span style="cursor:hand" onClick="document.MediaPlayer1.ShowAudioControls=exchangeValue(document.MediaPlayer1.ShowAudioControls);">昄/隐藏音量控制</span>
            <span style="cursor:hand" onClick="alert(document.MediaPlayer1.ShowAudioControls);">查看</span>
            <br>
            <span style="cursor:hand" onClick="document.MediaPlayer1.ShowDisplay=exchangeValue(document.MediaPlayer1.ShowDisplay);">昄/隐藏节日信息</span>
            <span style="cursor:hand" onClick="alert(document.MediaPlayer1.ShowDisplay);">查看</span>
            <br>
            <span style="cursor:hand" onClick="document.MediaPlayer1.ShowGotoBar=exchangeValue(document.MediaPlayer1.ShowGotoBar);">昄/隐藏GOTOBAR</span>
            <span style="cursor:hand" onClick="alert(document.MediaPlayer1.ShowGotoBar);">查看</span>
            <br>
            <span style="cursor:hand" onClick="document.MediaPlayer1.ShowPositionControls=exchangeValue(document.MediaPlayer1.ShowPositionControls);">昄/隐藏位置控制</span>
            <span style="cursor:hand" onClick="alert(document.MediaPlayer1.ShowPositionControls);">查看</span>
            <br>
            <span style="cursor:hand" onClick="document.MediaPlayer1.ShowStatusBar=exchangeValue(document.MediaPlayer1.ShowStatusBar);">昄/隐藏播放信息</span>
            <span style="cursor:hand" onClick="alert(document.MediaPlayer1.ShowStatusBar);">查看</span>
            <br>
            <span style="cursor:hand" onClick="document.MediaPlayer1.ShowTracker=exchangeValue(document.MediaPlayer1.ShowTracker);">昄/隐藏播放跟踪?lt;/span>
            <span style="cursor:hand" onClick="alert(document.MediaPlayer1.ShowTracker);">查看</span>
            <br>
            <b>声道切换</b> <span style="cursor:hand" onClick="document.MediaPlayer1.Balance=-9640;">左声?lt;/span>
            <span style="cursor:hand" onClick="document.MediaPlayer1.Balance=9640;">叛_?lt;/span>
            <span style="cursor:hand" onClick="document.MediaPlayer1.Balance=0;">左右q</span>
            <span style="cursor:hand" onClick="alert(document.MediaPlayer1.Balance);">查看</span>
            <br>
            <b>视频H口大小</b> <span style="cursor:hand" onClick="document.MediaPlayer1.DisplaySize=1;">50%</span>
            <span style="cursor:hand" onClick="document.MediaPlayer1.DisplaySize=0;">100%</span>
            <span style="cursor:hand" onClick="document.MediaPlayer1.DisplaySize=2;">200%</span>
            <span style="cursor:hand" onClick="document.MediaPlayer1.DisplaySize=3;">全屏</span>
            <span style="cursor:hand" onClick="alert(document.MediaPlayer1.DisplaySize);">查看</span>
            <br>
            <b>播放q度控制</b> <span style="cursor:hand" onClick="document.MediaPlayer1.CurrentPosition=0;">回到开?lt;/span>
            <span style="cursor:hand" onClick="addCurrentPosition(60);">前进一分钟</span>
            <span style="cursor:hand" onClick="addCurrentPosition(-60);">后退一分钟</span>
            <span style="cursor:hand" onClick="document.MediaPlayer1.CurrentPosition=99999;">到最?lt;/span>
            <span style="cursor:hand" onClick="alert(document.MediaPlayer1.CurrentPosition);">查看</span>
            <br>
            <b>选择伴音</b> <span style="cursor:hand" onClick="document.MediaPlayer1.SAMIFileName='http://xxzx.wems.net/jxggtd/wems-kj/kjk/yw3/1.MP3';">天之?lt;/span>
            <span style="cursor:hand" onClick="document.MediaPlayer1.SAMIFileName='';">?lt;/span>
            <span style="cursor:hand" onClick="alert(document.MediaPlayer1.SAMIFileName);">查看</span>
            (注意不能马上生效,点击后需要再重新播放歌曲) <span style="cursor:hand" onClick="alert(document.MediaPlayer1.maxlength);">查看</span>
            <script language=vbscript>
for each obj in document.MediaPlayer1.all
     messagebox(obj)
next
</script>
</td></tr></table>


mlw2000 2006-12-19 16:18 发表评论
]]>
试正则表达式的工具Q来自网上,E作修改Q?/title><link>http://www.aygfsteel.com/mlw2000/articles/86360.html</link><dc:creator>mlw2000</dc:creator><author>mlw2000</author><pubDate>Fri, 08 Dec 2006 07:31:00 GMT</pubDate><guid>http://www.aygfsteel.com/mlw2000/articles/86360.html</guid><wfw:comment>http://www.aygfsteel.com/mlw2000/comments/86360.html</wfw:comment><comments>http://www.aygfsteel.com/mlw2000/articles/86360.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/mlw2000/comments/commentRss/86360.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/mlw2000/services/trackbacks/86360.html</trackback:ping><description><![CDATA[ <p><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> </p> <p><HTML> </p> <p><HEAD> </p> <p><TITLE>试正则表达式的|页</TITLE> </p> <p><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=GB2312"> <br /><link rel="stylesheet" type="text/css" href="css/css.css"></p> <p><SCRIPT></p> <p>/** </p> <p>* Method 试正则表达式函?</p> <p>* @param method 接收到的正则表达式类的方?</p> <p>*/ </p> <p>function check(method) </p> <p>{ </p> <p>// 用戯入的正则表达式的标志转换为小?</p> <p>form1.flags.value = form1.flags.value.toLowerCase(); </p> <p> </p> <p>// 如果含有不是g、i、m的字W? ?提示q返?</p> <p>if ( form1.flags.value.search(/[^g|i|m]/g) != -1 ) </p> <p>{ </p> <p>alert("flags only can be g, i, m"); </p> <p>return; </p> <p>} </p> <p> </p> <p>// 利用用户输入的字W串和标志徏立正则表辑ּ </p> <p>var re = new RegExp(form1.regex.value, form1.flags.value); </p> <p> </p> <p>// 获得q显C生成的正则表达式的字符串Ş?</p> <p>destRegex.innerText = re.toString() + ' '; </p> <p> </p> <p>// 定义 q回?</p> <p>var cr; </p> <p> </p> <p>ex = "new RegExp('" + form1.regex.value + "', '" + form1.flags.value + "')."; </p> <p> </p> <p>// Ҏ用户选择的方? q行相应的调?</p> <p>switch ( method ) </p> <p>{ </p> <p>case '0': // 正则表达式的 exec Ҏ </p> <p>cr = re.exec(form1.string.value); </p> <p>ex = ex + "exec('" + form1.string.value + "')"; </p> <p>break; </p> <p> </p> <p>case '1': // 正则表达式的 test Ҏ </p> <p>cr = re.test(form1.string.value); </p> <p>ex = ex + "test('" + form1.string.value + "')"; </p> <p>break; </p> <p> </p> <p>case '2': // 字符串类?match Ҏ </p> <p>cr = form1.string.value.match(re); </p> <p>ex = "'" + form1.string.value + "'.match(" + re.toString() + ")"; </p> <p>break; </p> <p> </p> <p>case '3': // 字符串类?search Ҏ </p> <p>cr = form1.string.value.search(re); </p> <p>ex = "'" + form1.string.value + "'.search(" + re.toString() + ")"; </p> <p>break; </p> <p> </p> <p>case '4': // 字符串类?replace Ҏ </p> <p>cr = form1.string.value.replace(re); </p> <p>ex = "'" + form1.string.value + "'.replace(" + re.toString() + ")"; </p> <p>break; </p> <p> </p> <p>case '5': // 字符串类?split Ҏ </p> <p>cr = form1.string.value.split(re); </p> <p>ex = "'" + form1.string.value + "'.split(" + re.toString() + ")"; </p> <p>break; </p> <p>} </p> <p> </p> <p>// 获得q显C辑ּ </p> <p>expression.innerText = ex; </p> <p> </p> <p>// 获得q显C结果的cd </p> <p>returnType.innerText = typeof(cr); </p> <p> </p> <p>// 定义l果 </p> <p>var result = ''; </p> <p> </p> <p>if ( cr != null && typeof(cr) == 'object' && cr.length != null ) // 如果计算l果是一个数l? 则取出所有数l的?</p> <p>{ </p> <p>for ( i = 0; i < cr.length; i++ ) </p> <p>{ </p> <p>result += "array[" + i + "] = '" + cr[i] + "'\n"; </p> <p>} </p> <p>} </p> <p>else </p> <p>if ( cr != null ) // 如果计算l果不ؓnull, 则取结果的?</p> <p>{ </p> <p>result = cr; </p> <p>} </p> <p> </p> <p>// 获得q显C结?</p> <p>matchResult.innerText = result + ' '; </p> <p> </p> <p>// 获得q显C正则表辑ּ的lastIndex属?</p> <p>lastIndex.innerText = re.lastIndex + ' '; </p> <p>} </p> <p></SCRIPT> </p> <p></HEAD> </p> <p> </p> <p><BODY ALIGN=CENTER> </p> <p><h3>试正则表达?lt;/h3></p> <p><FORM NAME="form1" METHOD="post" ACTION="" ALIGN=CENTER> </p> <p><TABLE BORDER="1" width="772" align="center"> </p> <p><TR> </p> <p><TD COLSPAN="2" ALIGN="CENTER" width="762"><B>试正则表达?lt;/B></TD> </p> <p></TR> </p> <p><TR> </p> <p><TD width="147">正则表达式字W串:</TD> </p> <p><TD width="609"><INPUT NAME="regex" TYPE="text" size="75"></TD> </p> <p></TR> </p> <p><TR> </p> <p><TD width="147">正则表达式参?</TD> </p> <p><TD width="609"><INPUT NAME="flags" TYPE="text" ID="flags" size="20" value="g"></TD> </p> <p></TR> </p> <p><TR> </p> <p><TD width="147">试用的字符?</TD> </p> <p><TD width="609"><INPUT NAME="string" TYPE="text" size="75"></TD> </p> <p></TR> </p> <p><TR> </p> <p><TD width="147">选择试Ҏ:</TD> </p> <p><TD ALIGN="CENTER" width="609"> </p> <p><SELECT NAME="select" onChange="check(this.value)"> </p> <p><OPTION VALUE="0">exec</OPTION> </p> <p><OPTION VALUE="1">test</OPTION> </p> <p><OPTION VALUE="2">match</OPTION> </p> <p><OPTION VALUE="3">search</OPTION> </p> <p><OPTION VALUE="4">replace</OPTION> </p> <p><OPTION VALUE="5">split</OPTION> </p> <p></SELECT> </p> <p><INPUT VALUE='你好运' onclick="check(form1.select.value)" TYPE=button> </p> <p></TD> </p> <p></TR> </p> <p><TR> </p> <p><TD width="147">生成的表辑ּ:</TD> </p> <p><TD STYLE="color: blue" ID=destRegex width="609">&nbsp;</TD> </p> <p></TR> </p> <p><TR> </p> <p><TD width="147">生成的JS表达?</TD>  </p> <p><TD STYLE="color: blue" ID=expression width="609">&nbsp;</TD> </p> <p><TR> </p> <p><TD width="147">q回cd:</TD>  </p> <p><TD STYLE="color: darkred" ID=returnType width="609">&nbsp;</TD> </p> <p></TR> </p> <p><TR> </p> <p><TD width="147">l果:</TD> </p> <p><TD STYLE="color: red" ID=matchResult width="609">&nbsp;</TD> </p> <p></TR> </p> <p><TR> </p> <p><TD width="147">regex lastIndex:</TD>  </p> <p><TD STYLE="color: red" ID=lastIndex width="609">&nbsp;</TD> </p> <p></TR> </p> <p></TABLE> </p> <p></FORM> </p> <p></BODY> </p> <p></HTML> <br /></p> <img src ="http://www.aygfsteel.com/mlw2000/aggbug/86360.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/mlw2000/" target="_blank">mlw2000</a> 2006-12-08 15:31 <a href="http://www.aygfsteel.com/mlw2000/articles/86360.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript中String 对象属性和Ҏhttp://www.aygfsteel.com/mlw2000/articles/86252.htmlmlw2000mlw2000Fri, 08 Dec 2006 02:36:00 GMThttp://www.aygfsteel.com/mlw2000/articles/86252.htmlhttp://www.aygfsteel.com/mlw2000/comments/86252.htmlhttp://www.aygfsteel.com/mlw2000/articles/86252.html#Feedback0http://www.aygfsteel.com/mlw2000/comments/commentRss/86252.htmlhttp://www.aygfsteel.com/mlw2000/services/trackbacks/86252.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 必选。用来指定文本大的整数倹{?
备注Q有效的整数值取决于 Microsoft JScript L。详l信息请参见L文档。未q行M查来查看此标记是否已应用于该字符丌Ӏ?o:p>

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串?
startIndex 可选。该整数值指定在 String 对象内开始搜索的索引。若省略此参?则搜索从字符串的起始处开始?br />备注QindexOf Ҏq回一个整数?该值指C?String 对象内子字符串的起始位置。如果未扑ֈ子字W串,则返?-1。如?startindex ,则将 startindex 视ؓ零。如果它比最大字W位|烦引还?则将它视为可能的最大烦引。搜索将从左向右执行。否?此方法与 lastIndexOf 相同?o:p>

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串?
startindex 可选。该整数值指定在 String 对象内开始搜索的索引。若省略该参?则搜索将从字W串的结ּ始?
备注QlastIndexOf Ҏq回一个整数?指示 String 对象内子字符串的开始位|。如果未扑ֈ子字W串,则返?-1。如?startindex ,则将 startindex 视ؓ零。如果它比最大字W位|烦引还?则将它视为可能的最大烦引。从叛_左执行搜索。否?该方法和 indexOf 相同?o:p>

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 必选。一?String 对象或字W串文本,包含用于替换当前字符串对象中 rgExp 的每个成功匹配的文本。在 Jscript 5.5 或更高版本中,replaceText 参数也可是返回替换文本的函数?
备注Q在完成指定的替换之?replace Ҏ的结果是当前字符串对象的副本。下面Q意的匚w变量都可用于识别最新的匚w及匹配字W串。在需要动态确定替换字W串的文本替换中可以使用匚w变量?o:p>

字符

含义

$$

$QJScript 5.5 或更高版本)

$&

指定当前字符串对象中与整个模式相匚w的部分。(JScript 5.5 或更高版本)

$`

指定当前字符串对象中位于 $& 所描述的匹配前面的部分。(JScript 5.5 或更高版本)

$'

指定当前字符串对象中位于 $& 所描述的匹配后面的部分。(JScript 5.5 或更高版本)

$n

W?n 个捕获到的子匚w,q里 n Z 1 ?9 的十q制一位数。(JScript 5.5 或更高版本)

$nn

W?nn 个捕获到的子匚w,q里 nn Z 01 ?99 的十q制二位数。(JScript 5.5 或更高版本)

如果 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 对象的实例包含正则表辑ּ模式和适用标志?
备注Qsearch Ҏ表示是否扑ֈ了匹配项。如果找C个匹配项,?search Ҏ返回一个整数?该值指C发生匹配处距字W串开头的偏移量。如果没有找到匹配项,则返?-1?o:p>

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串的单元素数组?
limit 可选。一个用于限制数l中q回的元素数的倹{?br />备注Qsplit Ҏ的结果是在字W串中出?separator 的每个位|分隔字W串后生的字符串数l。separator 不作ؓM数组元素的一部分q回?o:p>

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?
length 可选。返回的子字W串中包含的字符数?br />备注Q如?length ?0 或负?返回一个空字符丌Ӏ如果没有指定该参数,则子字符串将延箋到字W串的结?o:p>

26.function substring(start : Number, end : Number) : String

q回位于 String 对象中的指定位置的子字符丌Ӏ?br />参数Qstart 必选。从 0 开始的索引整数,指示子字W串的v始位|?
end 必选。从 0 开始的索引整数,指示子字W串的结束位|?br />备注Qsubstring Ҏ返回一个字W串,该字W串包含?start 直到 endQ不包含 endQ的子字W串。substring Ҏ使用 start ?end 两者中的较g为子字符串的起始炏V例?strvar.substring(0, 3) ?strvar.substring(3, 0) 返回相同的子字W串。如?start ?end ?NaN 或负?那么它将被替换ؓ 0。子字符串的长度{于 start ?end 之差的绝对倹{例??strvar.substring(0, 3) ?strvar.substring(3, 0) ?q回的子字符串的长度?3?o:p>

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用于数字
备注QtoString Ҏ是一个所有内|的 JScript 对象的成员。它的行为取决于对象的类型:

对象

行ؓ

数组

?Array 的元素{换ؓ字符丌Ӏ结果字W串被连接v?用逗号分隔?o:p>

布尔?o:p>

如果布尔值是 true,则返回“真”。否?q回“假”?o:p>

日期

q回日期的文本表C?o:p>

错误

q回一个包含相关错误信息的字符丌Ӏ?o:p>

函数

q回如下格式的字W串,其中 functionname 是一个函数的名称,此函数的 toString Ҏ被调用: "function functionname() { [native code] }"

数字

q回数字的文字表C?o:p>

字符?o:p>

q回 String 对象的倹{?o:p>

默认

q回“[object objectname]?其中 objectname 是对象类型的名称?o:p>

32.function toUpperCase() : String

q回一个字W串,该字W串中的所有字母都被{换ؓ大写字母?br />备注QtoUpperCase Ҏ寚w字母字符无效?o:p>

33.function valueOf() : object

q回指定对象的原始倹{?br />备注Q每个内?JScript 对象?valueOf Ҏ被以不同方式定义?o:p>

对象

q回?/b>

数组

数组元素被{换ؓ字符?q些字符串被q接在一?用逗号分隔。这?Array.toString ?Array.join Ҏ作用相同?

布尔?o:p>

布尔倹{?o:p>

日期

以毫U数存储的时间??UTC 1970 q?1 ?1 日午夜开始计?

函数

函数本n?o:p>

数字

数字倹{?o:p>

对象

对象本n。这是默认设|?o:p>

字符?o:p>

字符串倹{?o:p>

Math ?Error 对象都没?valueOf Ҏ?o:p>



mlw2000 2006-12-08 10:36 发表评论
]]>
javascript对象定义Ҏ [转]http://www.aygfsteel.com/mlw2000/articles/86212.htmlmlw2000mlw2000Thu, 07 Dec 2006 16:42:00 GMThttp://www.aygfsteel.com/mlw2000/articles/86212.htmlhttp://www.aygfsteel.com/mlw2000/comments/86212.htmlhttp://www.aygfsteel.com/mlw2000/articles/86212.html#Feedback0http://www.aygfsteel.com/mlw2000/comments/commentRss/86212.htmlhttp://www.aygfsteel.com/mlw2000/services/trackbacks/86212.html javascript对象定义Ҏ      工厂模式:
      初开发者可能会q样定义对象:
      var  obj =  new Object();
       obj.name = "hero";
        obj.showName=function (){alert(this.name);}
      q里存在一个问题就是如果我们要在多个地方用obj对象,可能在程序中cM的代码要写好多遍,于是产生了工厂方?br />       function createObj()
       {
            var obj =  new Object();
            obj.name="hero";
            obj.showName=function (){alert(this.name);}
            return obj;
      }
      var obj1 = createObj();
      var obj2 = createObj();
     和另外一U方?构造函数法
       function obj (name)
       {
               this.name=name;
               this.showName= function (){alert(this.name);}
        
       }

  
 把生成对象的代码装h,避免出现重复new的代?当然也可以进一步改q?是createObj传递一些参?而不是给obj赋默认固定?
            function createObj(name)
       {
            var obj =  new Object();
            obj.name=name;
            obj.showName=function (){alert(this.name);}
            return obj;
      }
      var obj1 = createObj("hero");
      var o'b'j2=createObj("dby");
但是存在一个问?是我们每次调用createObj函数都会创徏新的函数 showName.意味着每个对象都有自己版本的showName,所以要改进避开q个问题.
        function showName()
       {
               alert(this.name)
        }
        function createObj(name)
       {
            var obj =  new Object();
            obj.name=name;
            obj.showName=showName;
            return obj;
      }
    
       q样p决了 重复创徏函数的问? 哈哈?大功告成 ,亲一?
     
      原型方式:
          主要是利用对象的prototype属?
         function obj()
         {}
         obj.prototype.name="hero";
         obj.prototype.showName=function()
         {
               alert(this.name);
         }
         看v来似乎比刚才的工厂还完美,但是 有一个问?该函数没有构造函?属性是通过prototype指定?q一点在实际应用中很让h头疼,所有的实例的属性都一样实在是不能让h接受.其q存在一个安全隐?那就是当对象中有引用?例如   加上q样一D?br />obj.prototype.nameArray = new Array("hero","dby");
       然后
          obj1 = new obj();
          obj2 = new obj();
          obj1.nameArray.push("lxw");
          在obj2的nameArray中将也会看到q个属?因ؓ两个对象的nameArray指向的是同一个引?
           所以这U方式ƈ不是理想Ҏ.
    需?改进 
      l合构造函?在构造函数定义属?用原型定义方?br />      例如
      fuction obj(name)
      {
             this.name = name
             this.nameArray = new Array("hero","dby");
      }
      obj.prototype.showName = function(){alert(this.name)}
所有的非函数属性都在构造函数里创徏,函数属性用prototype方式创徏,obj1 中改变nameArray的?不会影响到obj2对象的nameArray的? 而且只有一个showName函数,所以没有内存浪?
    基本上完了,剩下的基本都是一下其他的修饰?有兴的可以自己改着玩玩.
     W者在q里加上一个单?玩了一?
     function obj (name)
     {
            this.name = name;
            this.nameArray=new Array("hero","dby");
            if(typeof  obj._initialized=='undefined')
            {
                     obj.prototype.showName=function(){alert(this.name);}
                     obj._initialized="true";
            }
     }  
     其实不算是单?  只不q是在构造对象的时?先判断一个属性是否被定义,如果没有定义,那么用原型方法l定义对?如果已经定义了属?那么׃在重复定义函C. 该prototypeҎ只被创徏一?病赋g?
    又差不多完美?大功告成  .

mlw2000 2006-12-08 00:42 发表评论
]]>
VMLl图时发现的一个问题(在大量点坐标的情况下中间出现I格Q?/title><link>http://www.aygfsteel.com/mlw2000/articles/86002.html</link><dc:creator>mlw2000</dc:creator><author>mlw2000</author><pubDate>Thu, 07 Dec 2006 01:34:00 GMT</pubDate><guid>http://www.aygfsteel.com/mlw2000/articles/86002.html</guid><wfw:comment>http://www.aygfsteel.com/mlw2000/comments/86002.html</wfw:comment><comments>http://www.aygfsteel.com/mlw2000/articles/86002.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/mlw2000/comments/commentRss/86002.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/mlw2000/services/trackbacks/86002.html</trackback:ping><description><![CDATA[VML sharp的path字符Ԍ在比较短的VMLU的时候,是下面的样子Q?br /><br />" m0,0 l22,23,24,56,57,300,800,800 e"<br /><br />在大量点坐标的情况下,可能会在中间出现I格Q注意下面的56?7之间的空|<br /><br />" m0,0 l22,23,24,56 57,300,800,800 e"<img src ="http://www.aygfsteel.com/mlw2000/aggbug/86002.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/mlw2000/" target="_blank">mlw2000</a> 2006-12-07 09:34 <a href="http://www.aygfsteel.com/mlw2000/articles/86002.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IE中非模式对话?showModelessDialog)应用 [转]http://www.aygfsteel.com/mlw2000/articles/85836.htmlmlw2000mlw2000Wed, 06 Dec 2006 06:18:00 GMThttp://www.aygfsteel.com/mlw2000/articles/85836.htmlhttp://www.aygfsteel.com/mlw2000/comments/85836.htmlhttp://www.aygfsteel.com/mlw2000/articles/85836.html#Feedback0http://www.aygfsteel.com/mlw2000/comments/commentRss/85836.htmlhttp://www.aygfsteel.com/mlw2000/services/trackbacks/85836.html 非模式对话框是IE的一U窗口Ş式,打开非模式对话框后,在其被关闭之前,主调H口不会l箋解析其后的htm代码Q同时主调窗口也不会被选中?/font>

 

主调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



mlw2000 2006-12-06 14:18 发表评论
]]>
|页调色板代码『收集?/title><link>http://www.aygfsteel.com/mlw2000/articles/85714.html</link><dc:creator>mlw2000</dc:creator><author>mlw2000</author><pubDate>Tue, 05 Dec 2006 15:29:00 GMT</pubDate><guid>http://www.aygfsteel.com/mlw2000/articles/85714.html</guid><wfw:comment>http://www.aygfsteel.com/mlw2000/comments/85714.html</wfw:comment><comments>http://www.aygfsteel.com/mlw2000/articles/85714.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/mlw2000/comments/commentRss/85714.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/mlw2000/services/trackbacks/85714.html</trackback:ping><description><![CDATA[ <p>1.<br /><br /><html><br /><head><br /> <br /><script><br />var tempColor = "0099cc";<br />function returnColor(){<br />    var Hcolor = dlgHelper.ChooseColorDlg(tempColor).toString(16);<br />    with(event.srcElement){<br />        value = ((Hcolor.length<6)?"000000".substring(0,6-Hcolor.length):"") + Hcolor;    <br />        style.backgroundColor = ((Hcolor.length<6)?"000000".substring(0,6-Hcolor.length):"") + Hcolor;    <br />    }    <br />    tempColor = Hcolor<br />}<br /></script><br /></head><br /><body><br /><OBJECT id=dlgHelper CLASSID="clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b" width="0px" height="0px"></OBJECT></p> <p><input type="text" value="#0099CC" size="12" onclick="returnColor()" style="background-color: #0099CC"><br /></body><br /></html><br /><br /><br /></p> <p> </p> <hr /> <p> <br />2.<br /><br />test1.html<br />=====================================<br /><SCRIPT><br />var dWin=null;<br />function doDialog()<br />{<br />dWin=showModelessDialog('color.html',window,'status:no;dialogWidth:260px;dialogHeight:200px');<br />}<br /></SCRIPT></p> <p><form name=form1><br /><input name="color1"><br /><button onclick="doDialog();" >open</button><br /></form></p> <p> </p> <p> <br />color.html<br />====================================<br /><html><br /><head><br /><meta http-equiv="Content-Type" content="text/html; charset=gb2311"><br /><title>调色?lt;/title><br /><script><br />var ColorHex=new Array('00','33','66','99','CC','FF')<br />var SpColorHex=new Array('FF0000','00FF00','0000FF','FFFF00','00FFFF','FF00FF')<br />var current=null</p> <p>function intocolor()<br />{<br />var colorTable=''<br />for (i=0;i<2;i++)<br />{<br />for (j=0;j<6;j++)<br />{<br />colorTable=colorTable+'<tr height=12>'<br />colorTable=colorTable+'<td width=11 style="background-color:#000000">'</p> <p>if (i==0){<br />colorTable=colorTable+'<td width=11 style="background-color:#'+ColorHex[j]+ColorHex[j]+ColorHex[j]+'">'} <br />else{<br />colorTable=colorTable+'<td width=11 style="background-color:#'+SpColorHex[j]+'">'} </p> <p> <br />colorTable=colorTable+'<td width=11 style="background-color:#000000">'<br />for (k=0;k<3;k++)<br />{<br />for (l=0;l<6;l++)<br />{<br />colorTable=colorTable+'<td width=11 style="background-color:#'+ColorHex[k+i*3]+ColorHex[l]+ColorHex[j]+'">'<br />}<br />}<br />}<br />}<br />colorTable='<table width=253 border="0" cellspacing="0" cellpadding="0" style="border:1px #000000 solid;border-bottom:none;border-collapse: collapse" bordercolor="000000">'<br />+'<tr height=30><td colspan=21 bgcolor=#cccccc>'<br />+'<table cellpadding="0" cellspacing="1" border="0" style="border-collapse: collapse">'<br />+'<tr><td width="3"><td><input type="text" name="DisColor" size="6" disabled style="border:solid 1px #000000;background-color:#ffff00"></td>'<br />+'<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>'<br />+'<table border="1" cellspacing="0" cellpadding="0" style="border-collapse: collapse" bordercolor="000000" onmouseover="doOver()" onmouseout="doOut()" onclick="doclick()" style="cursor:hand;">'<br />+colorTable+'</table>'; <br />colorpanel.innerHTML=colorTable<br />}</p> <p>function doOver() {<br />if ((event.srcElement.tagName=="TD") && (current!=event.srcElement)) {<br />if (current!=null){current.style.backgroundColor = current._background} <br />event.srcElement._background = event.srcElement.style.backgroundColor<br />DisColor.style.backgroundColor = event.srcElement.style.backgroundColor<br />HexColor.value = event.srcElement.style.backgroundColor<br />event.srcElement.style.backgroundColor = "white"<br />current = event.srcElement<br />}<br />}</p> <p>function doOut() {<br />if (current!=null) current.style.backgroundColor = current._background<br />}</p> <p>function doclick(){<br />if (event.srcElement.tagName=="TD"){<br />dialogArguments.form1.color1.value=event.srcElement._background<br />window.close();<br />}<br />}<br /></script></p> <p><SCRIPT><br />function window.onunload()<br />{<br />dialogArguments.dWin=null;<br />}<br /></SCRIPT><br /></head></p> <p><body onload="intocolor()" topmargin=0 leftmargin=0 scroll=no><br /><div id="colorpanel" style="position: absolute;"><br /></div><br /></body><br /></html></p> <img src ="http://www.aygfsteel.com/mlw2000/aggbug/85714.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/mlw2000/" target="_blank">mlw2000</a> 2006-12-05 23:29 <a href="http://www.aygfsteel.com/mlw2000/articles/85714.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>资料QJavascript 操作XML[转]http://www.aygfsteel.com/mlw2000/articles/82853.htmlmlw2000mlw2000Wed, 22 Nov 2006 10:19:00 GMThttp://www.aygfsteel.com/mlw2000/articles/82853.htmlhttp://www.aygfsteel.com/mlw2000/comments/82853.htmlhttp://www.aygfsteel.com/mlw2000/articles/82853.html#Feedback0http://www.aygfsteel.com/mlw2000/comments/commentRss/82853.htmlhttp://www.aygfsteel.com/mlw2000/services/trackbacks/82853.html 

一般从服务端的q回可以得到一个XML对象?br />例如服务器返回的QXMLHttpRequest.ResponseXML
q里的XMLHttpRequest是ajax的核心对象?br />在IE下可以这样创建:xmlHttp 
=   new  ActiveXObject( " Microsoft.XMLHTTP " ).
javascript操作XML先创Z个XML DOM对象Qvar dom 
=   new  ActiveXObject( " Microsoft.XMLDOM " );
然后dom.loadXMLQResponseXMLQ就ok了?br />接下来就可以操作xmlQ获取内容了?br />一些常用的函数如下Q一些在|上攉的,一些时qx老大教的Q:
Microsoft.XMLDOM 对象常用的属性:
1 、attributes 属性,q回当前节点的属性列?br /> 2 、childNodes 属性,q回当前节点的所有子节点列表
3 、documentElement 属性,q回xml文g的根节点Q通过Microsoft.XMLDOM对象名来调用
4 、firstChild 属性、lastChild 属性,q回当前节点的第一个子Q最后一个)元素Q如果没有子节点是不是返?br />W一个属性?Q?br /> 5 、nextSibling QpreviousSibling Q属性,下一个兄弟节炏V?br /> 6 、nodeName 属性,q回节点的标{֐?br /> 7 、nodeValue 属性,传回指定节点相关的文字(不是属性,是 * Lq个内容  ** Q?br /> 8 、ownerDocument 属性,根节?br /> 9 、parentNode 属性,传回目前节点的父节点。只能应用在有父节点的节点中?br />搞一个例子:
function Add()
{
var dom 
=   new  ActiveXObject( " Microsoft.XMLDOM " ); 
dom.loadXML(ret); 
if  (dom.documentElement  !=   null )

var nodes 
=  dom.documentElement.selectNodes( " //SelectItem " );  // 得到根节点下所有SelectItem节点
if  (nodes  !=   null
{
for (var i = 0 ;i 
一些常用的函数Q?br />
1 、AppendChild ҎQ加上一个节点当作指定节Ҏ后的子节炏V?br /> 2 、cloneNodeQdeepQ方法,deep 是一个布倹{如果ؓtrueQ此节点会复制以指定节点发展出去的所有节
炏V如果是falseQ只有指定的节点和它的属性被复制?br />
3 、createAttribute(name)ҎQ徏立一个指定名U的属性?br /> 4 、createElement ҎQ徏立一个指定名U的元素?br /> 5 、xmlDocument.createNode(type, name, nameSpaceURI);type 用来认要被建立的节点型态,name 是一个字W?br />串来认新节点的名称Q命名空间的前缀则是选择性的。nameSpaceURI 是一个定义命名空间URI 的字
W串。如果前~被包含在名称参数中,此节点会在nameSpaceURI 的内文中以指定的前缀建立。如果不
包含前缀Q指定的命名I间会被视ؓ预设的命名空间?br />
6 、getElementsByTagName ҎQ传回指定名U的元素集合?br /> 7 、haschildnodes ҎQ要解释吗?
8 、insertBefore ҎQ在指定的节点前插入一个子节点。xmlDocumentNode.insertBefore
(newChild,refChild);refChild 是参照节点的地址。新子节点被插到参照节点之前。如果refChild 参数没有包含
在内Q新的子节点会被插到子节点列表的末端?br />
9 、load Ҏ和loadXML ҎQ前q从urlQ后者从字符串片断?br /> 10 、nodeFromID ҎQ传回节点ID W合指定值的节点?br /> 11 、removeChild Ҏ和replaceChild(newChild,oldChild)Q顾名思义
12 、selectNodes和selectSingleNode ҎQ传回所有符合提供样式的节点。参Cؓ一包含XSL 样式的字W串?br />以下攉了一些MSDN的例?br />( 1 )
var xmlDoc 
=   new  ActiveXObject( " Msxml2.DOMDocument.3.0 " );
var rootElement
= xmlDoc.createElement( " memo " );
xmlDoc.appendChild(rootElement);(
2 ) var xmlDoc  =   new  ActiveXObject( " Msxml2.DOMDocument.3.0 " );
var rootElement
= xmlDoc.createElement( " memo " );
rootElement.setAttribute(
" author " " Pat Coleman " );  // 属性author的gؓPat Coleman
xmlDoc.appendChild(rootElement);
(
3 ) var xmlDoc  =   new  ActiveXObject( " Msxml2.DOMDocument.3.0 " );
var rootElement
= xmlDoc.createElement( " memo " );
var memoAttribute
= xmlDoc.createAttribute( " author " );
var memoAttributeText
= xmlDoc.createTextNode( " Pat Coleman " );
memoAttribute.appendChild(memoAttributeText);
rootElement.setAttributeNode(memoAttribute);
xmlDoc.appendChild(rootElement);
// q个例子?2)同样效果Q但是用不同的方法,q里把attribute也当做一个节点,attribute node?/span>
子节点只可以是textnodeQ所以这里要先创Z个textnode在赋l他?br />Q?/span> 4 Q?br />var xmlDoc  =   new  ActiveXObject( " Msxml2.DOMDocument.3.0 " );
var rootElement
= xmlDoc.createElement( " memo " );  // 创徏一个元?/span>
var memoAttribute = xmlDoc.createAttribute( " author " );  // 创徏一个属?/span>
var memoAttributeText = xmlDoc.createTextNode( " Pat Coleman " );  // 创徏一个文本节?/span>
var toElement = xmlDoc.createElement( " to " );  // 再创Z个元?/span>
var toElementText = xmlDoc.createTextNode( " Carole Poland " );  // 再创Z个文本节?/span>
memoAttribute.appendChild(memoAttributeText);
xmlDoc.appendChild(rootElement);
rootElement.setAttributeNode(memoAttribute);
rootElement.appendChild(toElement);
toElement.appendChild(toElementText);


属性:
attributes
Contains the list of attributes 
for   this  node. Read - only.
baseName
* Returns the base name  for  the name qualified with the namespace. Read - only.
childNodes
Contains a node list containing the children nodes. Read
- only.
dataType
* Specifies the data type  for   this  node. Read / write.
definition
* Returns the definition of the node in the document type definition (DTD) or schema. Read - only.
firstChild
Contains the first child of the node. Read
- only.
lastChild
Returns the last child node. Read
- only.
name
Contains the attribute name. Read
- only.
namespaceURI
* Returns the Uniform Resource Identifier (URI)  for  the namespace. Read - only.
nextSibling
Contains the next sibling of 
this  node in the parent ' s child list. Read-only.
nodeName
Contains the qualified name of the element, attribute, or entity reference, or a fixed string 
for  other node types. Read - only.
nodeType
Specifies the XML Document Object Model (DOM) node type, which determines valid values and whether the node can have child nodes. Read
- only.
nodeTypedValue
* Contains the node value expressed in its defined data type. Read / write.
nodeTypeString
* Returns the node type in string form. Read - only.
nodeValue
Contains the text associated with the node. Read
/ write.
ownerDocument
Returns the root of the document that contains the node. Read
- only.
parentNode
Contains the parent node. Read
- only.
parsed
* Indicates the parsed status of the node and child nodes. Read - only.
prefix
* Returns the namespace prefix. Read - only.
previousSibling
Contains the previous sibling of 
this  node in the parent ' s child list. Read-only.
specified
Indicates whether the node (usually an attribute) is explicitly specified or derived from a 
default  value in the document type definition (DTD) or schema. Read - only.
text
Represents the text content of the node or the concatenated text representing the node and its descendants. Read
/ write.
value
Contains the attribute value. Read
/ write.
xml
Contains the XML representation of the node and all its descendants. Read
- only.
ҎQ?br />appendChild
Appends 
new  child node as the last child of  this  node.
cloneNode
Clones a 
new  node.
hasChildNodes
Provides a fast way to determine whether a node has children.
insertBefore
Inserts a child node to the left of the specified node or at the end of the list.
removeChild
Removes the specified child node from the list of children and returns it.
replaceChild
Replaces the specified old child node with the supplied 
new  child node.
selectNodes
Applies the specified pattern
- matching operation to  this  node ' s context and returns the list of matching nodes as IXMLDOMNodeList.
selectSingleNode
Applies the specified pattern
- matching operation to  this  node ' s context and returns the first matching node.
transformNode
Processes 
this  node and its children using the supplied XSL Transformations (XSLT) style sheet and returns the resulting transformation.
transformNodeToObject
Processes 
this  node and its children using the supplied XSL Transformations (XSLT) style sheet and returns the resulting transformation in the supplied object. 


mlw2000 2006-11-22 18:19 发表评论
]]>
վ֩ģ壺 ǫ| º| Զ| | | | ̨| | | | лͨ| | Ʊ| ̨| ͨ| ˾| | | ݶ| | | ͨ| ƽ| | ¬| Ϫ| ī񹤿| | | | ͡| ɳƺ| | ӥ̶| | | ƽ| | | | ۶|