javascript技巧大全 (3)

//自定义的apply,call

Function.prototype.apply =  function (obj, argu) {
  if (obj) obj.constructor.prototype._caller =  this
  var argus =  new  Array();
 for ( var i=0;i<argu.length;i++)
  argus[i] =  "argu[" + i +  "]";
  var r;
 eval( "r = " + (obj ? ( "obj._caller(" + argus.join( ",") +  ");") : ( "this(" + argus.join( ",") +  ");")));
  return r;
};
Function.prototype.call =  function (obj) {
  var argu =  new  Array();
 for ( var i=1;i<arguments.length;i++)
  argu[i-1] = arguments[i];
  return  this.apply(obj, argu);
};       


//下载文件

function DownURL(strRemoteURL,strLocalURL)
{
 try
 {
   var xmlHTTP= new  ActiveXObject( "Microsoft.XMLHTTP");
  xmlHTTP.open( "Get",strRemoteURL, false);
  xmlHTTP.send();
   var adodbStream= new  ActiveXObject( "ADODB.Stream");
  adodbStream.Type=1; //1=adTypeBinary
  adodbStream.Open();
  adodbStream.write(xmlHTTP.responseBody);
  adodbStream.SaveToFile(strLocalURL,2);
  adodbStream.Close();
  adodbStream= null;
  xmlHTTP= null;
  
 }
  catch(e)
 {
  window.confirm( "下载URL出错!");
 }
  //window.confirm("下载完成.");
}


//检验连接是否有效

//组件是否安装
isComponentInstalled("{6B053A4B-A7EC-4D3D-4567-B8FF8A1A5739}", "componentID"))

//检查网页是否存在

function Checkurl(/URL)
{
   var xmlhttp =  new  ActiveXObject( "Microsoft.XMLHTTP");
  xmlhttp.Open( "GET",URL,  false);
  try
  { 
    xmlhttp.Send(); 
     var result = xmlhttp.status;
  }
   catch(e) { return( false); }
   if(result==200)
  { 
     return  true;
  }
  xmlhttp =  null;
   return  false;
}

//连接数据库

<script language= "javascript">
   //用 JavaScript 写服务器端连接数据库的代码示例
   var conn =  new  ActiveXObject( "ADODB.Connection");
  conn.Open( "Provider=SQLOLEDB.1; Data Source=localhost; User ID=sa; "
    + "Password=; Initial Catalog=pubs");
   var rs =  new  ActiveXObject( "ADODB.Recordset");
   var sql= "select * from authors";
  rs.open(sql, conn);
 shtml =  "<table width='100%' border=1>";
 shtml += "<tr bgcolor='#f4f4f4'><td>au_id</td><td>au_lname</td><td>au_fname</td><td>phone</td><td>address</td><td> city</td><td>state</td><td>zip</td></tr>";
   while(!rs.EOF)
  {
 shtml +=  "<tr><td>" + rs( "au_id") +  "</td><td>" + rs( "au_lname") +  "</td><td>" + rs( "au_fname") +  "</td><td>" + rs( "phone") +  "</td><td>" + rs( "address") +  "</td><td>" + rs( "city") +  "</td><td>" + rs( "state") +  "</td><td>" + rs( "zip") +  "</td></tr>";
 rs.moveNext;
  }
  shtml +=  "</table>";
  document.write(shtml);
  rs.close(); 
  rs =  null
  conn.close(); 
  conn =  null;
</script>

//使用数据岛

<html>
<body>
srno:<input type=text datasrc=#xmldate DataFLD=srno size= "76"><BR>
times:<input type=text datasrc=#xmldate DataFLD=times size= "76"><BR>
<input id= "first" TYPE=button value= "<< 第一条记录" οnclick= "xmldate.recordset.moveFirst()">
<input id= "prev" TYPE=button value= "<上一条记录" οnclick= "xmldate.recordset.movePrevious()">  
<input id= "next" TYPE=button value= "下一条记录>" οnclick= "xmldate.recordset.moveNext()">  
<input id= "last" TYPE=button value= "最后一条记录>>" οnclick= "xmldate.recordset.moveLast()">   
<input id= "Add" TYPE=button value= "添加新记录" οnclick= "xmldate.recordset.addNew()">  

<XML ID= "xmldate">
<infolist>
<info ><srno>20041025-01</srno><times> null</times></info>
<info ><srno>20041101-09</srno><times>2004年10月1日2点22分0秒</times></info>
</infolist>
</XML>
</body>
</html>

//获得参数

<body>
<a href="/ "javascript:location.href="/location.href ";+ '?a=1&b=2'">search</a>
<script language= "JavaScript">
<!--
var a = location.search.substr(1);
if(a.length>0)
{
  var re = /([^&]*?)\=([^&]*)/g
  var s = a.match(re);
 for( var i= 0;i<s.length;i++)
 {
  alert(s[i]);
  alert(s[i].split( "=")[1]);
 }
}
//-->
</script>
</body>

//可编辑SELECT

<input type=text name=re_name style= "width:100px;height:21px;font-size:10pt;"><span style= "width:18px;border:0px solid red;"><select name= "r00" style= "margin-left:-100px;width:118px; background-color:#FFEEEE;" onChange= "document.all.re_name.value=this.value;">
                <option value= "1">11111111<option>
                <option value= "2">222222</option>
                <option value= "3">333333</option>
              </select>
              </span>

//设置光标位置

function getCaret(textbox)
{
  var 

function getXML(URL) 
{
  var xmlhttp =  new  ActiveXObject( "microsoft.xmlhttp");
 xmlhttp.Open( "GET",URL,  false); 
 try
 { 
  xmlhttp.Send();
 }
  catch(e){}
  finally 
 {
   var result = xmlhttp.responseText;
   if(result) 
  {
    if(xmlhttp.Status==200)
   {
     return( true);
   }
    else 
   {
     return( false);
   }
  }
   else 
  {
    return( false);
  }
 }
}

//POST代替FORM

<SCRIPT language= "VBScript">
Function URLEncoding(vstrIn)
    strReturn =  ""
    For i = 1 To Len(vstrIn)
        ThisChr = Mid(vStrIn,i,1)
        If Abs(Asc(ThisChr)) < &HFF Then
            strReturn = strReturn & ThisChr
        Else
            innerCode = Asc(ThisChr)
            If innerCode < 0 Then
                innerCode = innerCode + &H10000
            End If
            Hight8 = (innerCode  And &HFF00)\ &HFF
            Low8 = innerCode And &HFF
            strReturn = strReturn &  "%" & Hex(Hight8) &   "%" & Hex(Low8)
        End If
    Next
    URLEncoding = strReturn
End Function
Function bytes2BSTR(vIn)
    strReturn =  ""
    For i = 1 To LenB(vIn)
        ThisCharCode = AscB(MidB(vIn,i,1))
        If ThisCharCode < &H80 Then
            strReturn = strReturn & Chr(ThisCharCode)
        Else
            NextCharCode = AscB(MidB(vIn,i+1,1))
            strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
            i = i + 1
        End If
    Next
    bytes2BSTR = strReturn
End Function
dim strA,oReq
strA = URLEncoding( "submit1=Submit&text1=中文")
set oReq = CreateObject( "MSXML2.XMLHTTP")
oReq.open  "POST", "http://ServerName/VDir/TstResult.asp",false
oReq.setRequestHeader  "Content-Length",Len(strA)
oReq.setRequestHeader  "CONTENT-TYPE", "application/x-www-form-urlencoded"
oReq.send strA
msgbox bytes2BSTR(oReq.responseBody)
</SCRIPT>

//readyState是xmlhttp返回数据的进度,0=载入中,1=未初始化,2=已载入,3=运行中,4=完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值