<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ChenTaoqian&#039;s Blog &#187; Javascript</title>
	<atom:link href="http://www.chentaoqian.com/archives/category/compute/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://www.chentaoqian.com</link>
	<description>主机,企业邮箱,域名,空间,服务器,Java,Oracle,PHP,Linux,JS,MySQL,Apache</description>
	<lastBuildDate>Wed, 30 Nov 2011 14:35:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Javascript跨域和Ajax跨域解决方案</title>
		<link>http://www.chentaoqian.com/archives/788</link>
		<comments>http://www.chentaoqian.com/archives/788#comments</comments>
		<pubDate>Sat, 02 Jul 2011 08:46:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[跨域]]></category>

		<guid isPermaLink="false">http://www.chentaoqian.com/?p=788</guid>
		<description><![CDATA[ajax跨域和JS的跨域通信(Cross The Site)的几种解决方案
最近做的一个项目中需要ajax跨域取得数据,如果是在本域中确实没有问题，但是放到二级域和其他域下浏览器直接就弹出提示框:“该页正在访问其控制范围之外的数据，这有些危险，是否继续”
1.什么引起了ajax跨域不能的问题
ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互，而浏览器出于安全考虑，不允许js代码进行跨域操作，所以会警告。
2.有什么完美的解决方案么？
没有。解决方案有不少，但是只能是根据自己的实际情况来选择。
具体情况有:
一、本域和子域的相互访问: www.aa.com和book.aa.com
二、本域和其他域的相互访问: www.aa.com和www.bb.com 用 iframe
三、本域和其他域的相互访问: www.aa.com和www.bb.com 用 XMLHttpRequest访问代理
四、本域和其他域的相互访问: www.aa.com和www.bb.com 用 JS创建动态脚本
解决方法：
一、
如果想做到数据的交互，那么www.aa.com和book.aa.com必须由你来开发才可以。可以将book.aa.com用iframe添加到
www.aa.com的某个页面下,在www.aa.com和iframe里面都加上document.domain =
“aa.com”，这样就可以统一域了，可以实现跨域访问。就和平时同一个域中镶嵌iframe一样，直接调用里面的JS就可以了。（这个办法我没有尝
试，不过理论可行）
二、当两个域不同时,如果想相互调用，那么同样需要两个域都是由你来开发才可以。用iframe可以实现数据的互相调用。解决方案就是用window.location对象的hash属性。hash属性就是http://domian/web/a.htm#dshakjdhsjka
里面的#dshakjdhsjka。利用JS改变hash值网页不会刷新，可以这样实现通过JS访问hash值来做到通信。不过除了IE之外其他大部分浏
览器只要改变hash就会记录历史，你在前进和后退时就需要处理，非常麻烦。不过再做简单的处理时还是可以用的，具体的代码我再下面有下载。大体的过程是
页面a和页面b在不同域下,b通过iframe添加到a里，a通过JS修改iframe的hash值，b里面做一个监听（因为JS只能修改hash，数据
是否改变只能由b自己来判断），检测到b的hash值被修改了，得到修改的值，经过处理返回a需要的值，再来修改a的hash值（这个地方要注意，如果a
本身是那种查询页面的话比如http://domian/web/a.aspx?id=3,在b中直接parent.window.location是无法取得数据的，同样报没有权限的错误，需要a把这个传过来，所以也比较麻烦），同样a里面也要做监听，如果hash变化的话就取得返回的数据，再做相应的处理。
三、
这种情形是最经常遇到的，也是用的最多的了。就是www.aa.com和www.bb.com你只能修改一个，也就是另外一个是别人的，人家告诉你你要取
得数据就访问某某连接参数是什么样子的，最后返回数据是什么格式的。而你需要做的就是在你的域下新建一个网页，让服务器去别人的网站上取得数据，再返回给
你。domain1下的a向同域下的GetData.aspx请求数据，GetData.aspx向domain2下的
ResponseData.aspx发送请求,ResponseData.aspx返回数据给GetData.aspx,
GetData.aspx再返回给a,这样就完成了一次数据请求。GetData.aspx在其中充当了代理的作用。具体可以看下我的代码。
四、
这个和上个的区别就是请求是使用&#60;script&#62;标签来请求的，这个要求也是两个域都是由你来开发才行。原理就是JS文件注入，在本域内的a
内生成一个JS标签，它的SRC指向请求的另外一个域的某个页面b，b返回数据即可，可以直接返回JS的代码。因为script的src属性是可以跨域
的。具体看代码，这个也比较简单。
code:
http://www.live-share.com/files/300697/Cross_The_Site_Test_code.rar.html
总结：
第一种情况：域和子域的问题，可以完全解决交互。
第二种情况：跨域，实现过程非常麻烦，需要两个域开发者都能控制，适用于简单交互。
第三种情况：跨域，开发者只控制一个域即可，实现过程需要增加代理取得数据，是常用的方式。
第四种情况：跨域，两个域开发者都需要控制，返回一段js代码。
PS:代码自己按照情况修改即可。
这是拿别人的参考链接，老美的文章比较多。
1. Security Considerations: Dynamic HTML
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/sec_dhtml.asp
2. About Cross-Frame Scripting and Security
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/om/xframe_scripting_security.asp
3. Cross-Domain Proxy
http://ajaxpatterns.org/Cross-Domain_Proxy
4. Cross Domain XMLHttpRequest using an IFrame Proxy
http://manual.dojotoolkit.org/WikiHome/DojoDotBook/Book75
5. Back Button Support for Atlas UpdatePanels
http://www.nikhilk.net/BackButtonSupport.aspx
6. Cross-document messaging hack
http://blog.monstuff.com/archives/000304.html
7. Building Mash-ups with “Atlas”
http://atlas.asp.net/docs/Walkthroughs/DevScenarios/bridge.aspx
8. Calling web services hosted outside of your application with “Atlas”
http://blogs.msdn.com/federaldev/archive/2006/07/31/684229.aspx
http://www.federaldeveloper.com/Shared%20Documents/Presentations%20by%20Marc%
20Schweigert/CallAtlasWebServiceInDifferentProject.zip
9. [...]]]></description>
		<wfw:commentRss>http://www.chentaoqian.com/archives/788/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>动态加载JS脚本的4种方法</title>
		<link>http://www.chentaoqian.com/archives/779</link>
		<comments>http://www.chentaoqian.com/archives/779#comments</comments>
		<pubDate>Wed, 09 Mar 2011 05:20:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.chentaoqian.com/archives/779</guid>
		<description><![CDATA[1、直接document.write
&#60;script language=&#8221;javascript&#8221;&#62;
document.write(&#8220;&#60;script src=&#8217;test.js&#8217;&#62;&#60;\/script&#62;&#8221;);
&#60;/script&#62;
2、动态改变已有script的src属性
&#60;script src=&#8221; id=&#8221;s1&#8243;&#62;&#60;/script&#62;
&#60;script language=&#8221;javascript&#8221;&#62;
s1.src=&#8221;test.js&#8221;
&#60;/script&#62;
3、动态创建script元素
&#60;script&#62;
var oHead = document.getElementsByTagName(&#8216;HEAD&#8217;).item(0);
var oScript= document.createElement(&#8220;script&#8221;);
oScript.type = &#8220;text/javascript&#8221;;
oScript.src=&#8221;test.js&#8221;;
oHead.appendChild( oScript);
&#60;/script&#62;
这三种方法都是异步执行的，也就是说，在加载这些脚本的同时，主页面的脚本继续运行，如果用以上的方法，那下面的代码将得不到预期的效果。
要动态加载的JS脚本：a.js，以下是该文件的内容。
var str = &#8220;中国&#8221;;
alert( &#8220;这是a.js中的变量：&#8221; + str );
主页面代码：
&#60;script language=&#8221;JavaScript&#8221;&#62;
function LoadJS( id, fileUrl )
{
var scriptTag = document.getElementById( id );
var oHead = document.getElementsByTagName(&#8216;HEAD&#8217;).item(0);
var oScript= document.createElement(&#8220;script&#8221;);
if ( scriptTag ) oHead.removeChild( scriptTag );
oScript.id = id;
oScript.type = &#8220;text/javascript&#8221;;
oScript.src=fileUrl ;
oHead.appendChild( oScript);
}
LoadJS( &#8220;a.js&#8221; );
alert( &#8220;主页面动态加载a.js并取其中的变量：&#8221; + str );
&#60;/script&#62;
上述代码执行后 a.js [...]]]></description>
		<wfw:commentRss>http://www.chentaoqian.com/archives/779/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>1个JS写的图片预览程序</title>
		<link>http://www.chentaoqian.com/archives/527</link>
		<comments>http://www.chentaoqian.com/archives/527#comments</comments>
		<pubDate>Sat, 10 Apr 2010 15:15:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[预览]]></category>

		<guid isPermaLink="false">http://www.chentaoqian.com/?p=527</guid>
		<description><![CDATA[一段JS写的图片预览程序，简单实用。
这是基础版本，可以改进出很多版本。

&#60;!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.0 Transitional//EN&#8221;&#62;
&#60;HTML&#62;
&#60;HEAD&#62;
&#60;TITLE&#62; New Document &#60;/TITLE&#62;
&#60;META NAME=&#8221;Generator&#8221; CONTENT=&#8221;EditPlus&#8221;&#62;
&#60;META NAME=&#8221;Author&#8221; CONTENT=&#8221;"&#62;
&#60;META NAME=&#8221;Keywords&#8221; CONTENT=&#8221;"&#62;
&#60;META NAME=&#8221;Description&#8221; CONTENT=&#8221;"&#62;
&#60;script&#62;
/*获取属性值*/
function getAttr(o, v){
return o.v &#124;&#124; o.getAttribute(v);
}
/*等比缩放，并在原图上设置图片实际尺寸*/
function autoImgSizes(t){
if(t.offsetWidth == 0 &#124;&#124; t.offsetHeight == 0){
t.src = t.src + &#8220;?time=&#8221; + +new Date();
return;
}
//记录图片是实际高宽
t.w = t.offsetWidth;
t.h = t.offsetHeight;
var param = {width:t.offsetWidth, height:t.offsetHeight};
if(param.width &#62; getAttr(t, &#8220;maxWidth&#8221;) &#124;&#124; param.height &#62; getAttr(t, &#8220;maxHeight&#8221;)){
rateWidth = param.width [...]]]></description>
		<wfw:commentRss>http://www.chentaoqian.com/archives/527/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>90个实用的JavaScript小技巧(三)</title>
		<link>http://www.chentaoqian.com/archives/430</link>
		<comments>http://www.chentaoqian.com/archives/430#comments</comments>
		<pubDate>Mon, 06 Jul 2009 14:43:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[技巧]]></category>

		<guid isPermaLink="false">http://www.chentaoqian.com/?p=430</guid>
		<description><![CDATA[//自定义的apply,call
Function.prototype.apply = function (obj, argu) {
 if (obj) obj.constructor.prototype._caller = this; 
 var argus = new Array();
 for (var i=0;i&#60;argu.length;i++)
  argus[i] = &#8220;argu[" + i + "]&#8220;;
 var r;
 eval(&#8220;r = &#8221; + (obj ? (&#8220;obj._caller(&#8220; + argus.join(&#8220;,&#8221;) + &#8220;);&#8221;) : (&#8220;this(&#8220; + argus.join(&#8220;,&#8221;) + &#8220;);&#8221;)));
 return r;
};
Function.prototype.call = function (obj) {
 var argu = new Array();
 for (var i=1;i&#60;arguments.length;i++)
  argu[i-1] = arguments[i];
 return this.apply(obj, argu);
};
 
//下载文件
function DownURL(strRemoteURL,strLocalURL)
{
 try
 {
  var xmlHTTP=new ActiveXObject(&#8220;Microsoft.XMLHTTP&#8221;);
  xmlHTTP.open(&#8220;Get&#8221;,strRemoteURL,false);
  xmlHTTP.send();
  var adodbStream=new ActiveXObject(&#8220;ADODB.Stream&#8221;);
  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(&#8220;下载URL出错!&#8221;);
 }
 //window.confirm(&#8220;下载完成.&#8221;); 
}
//检验连接是否有效
function getXML(URL) 
{
 var xmlhttp = new ActiveXObject(&#8220;microsoft.xmlhttp&#8221;);
 xmlhttp.Open(&#8220;GET&#8221;,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 
&#60;SCRIPT language=&#8220;VBScript&#8221;&#62;
Function URLEncoding(vstrIn)
    strReturn = &#8220;&#8221;
    For i = 1 To Len(vstrIn)
        ThisChr = Mid(vStrIn,i,1)
        If Abs(Asc(ThisChr)) &#60; &#38;HFF Then
            strReturn = strReturn &#38; ThisChr
        Else
            innerCode = Asc(ThisChr)
            If innerCode &#60; 0 Then
                innerCode = innerCode + &#38;H10000
            End If
            Hight8 = (innerCode  And &#38;HFF00) &#38;HFF
            Low8 = innerCode And &#38;HFF
            strReturn = strReturn &#38; &#8220;%&#8221; &#38; Hex(Hight8) &#38;  &#8220;%&#8221; &#38; Hex(Low8)
        End If
    Next
    URLEncoding = strReturn
End Function
Function bytes2BSTR(vIn)
    strReturn = &#8220;&#8221;
    For i = 1 To LenB(vIn)
        ThisCharCode = AscB(MidB(vIn,i,1))
        If ThisCharCode &#60; &#38;H80 Then
            strReturn = strReturn &#38; Chr(ThisCharCode)
        Else
            NextCharCode = AscB(MidB(vIn,i+1,1))
            strReturn = strReturn &#38; Chr(CLng(ThisCharCode) * &#38;H100 + CInt(NextCharCode))
            i = i + 1
        End If
    Next
    bytes2BSTR = strReturn
End Function
dim strA,oReq
strA = URLEncoding(&#8220;submit1=Submit&#38;text1=中文&#8221;)
set oReq = CreateObject(&#8220;MSXML2.XMLHTTP&#8221;)
oReq.open &#8220;POST&#8221;,&#8220;http://ServerName/VDir/TstResult.asp&#8221;,false 
oReq.setRequestHeader &#8220;Content-Length&#8221;,Len(strA)
oReq.setRequestHeader &#8220;CONTENT-TYPE&#8221;,&#8220;application/x-www-form-urlencoded&#8221;
oReq.send strA
msgbox bytes2BSTR(oReq.responseBody)
&#60;/SCRIPT&#62;
//readyState是xmlhttp返回数据的进度，0=载入中,1=未初始化,2=已载入,3=运行中,4=完成
//组件是否安装
isComponentInstalled(&#8220;{6B053A4B-A7EC-4D3D-4567-B8FF8A1A5739}&#8221;, &#8220;componentID&#8221;)) 
//检查网页是否存在 
function CheckURL(URL)
{
  var xmlhttp = new ActiveXObject(&#8220;Microsoft.XMLHTTP&#8221;);
  xmlhttp.Open(&#8220;GET&#8221;,URL, false);
  try
  { 
    xmlhttp.Send(); 
    var result = xmlhttp.status;
  }
  catch(e) {return(false); }
  if(result==200)
  { 
    return true;
  }
  xmlhttp = null;
  return false;
}
//连接数据库
&#60;script language=&#8220;javascript&#8221;&#62;
  //用 JavaScript 写服务器端连接数据库的代码示例 
  var conn = new ActiveXObject(&#8220;ADODB.Connection&#8221;);
  conn.Open(&#8220;Provider=SQLOLEDB.1; Data Source=localhost; User ID=sa; &#8221;
    +&#8220;Password=; Initial Catalog=pubs&#8221;);
  var rs = new ActiveXObject(&#8220;ADODB.Recordset&#8221;);
  var sql=&#8220;select * from authors&#8221;;
  rs.open(sql, conn);
 shtml = &#8220;&#60;table width=&#8217;100%&#8217; border=1&#62;&#8221;;
 shtml +=&#8220;&#60;tr bgcolor=&#8217;#f4f4f4&#8242;&#62;&#60;td&#62;au_id&#60;/td&#62;&#60;td&#62;au_lname&#60;/td&#62;&#60;td&#62;au_fname&#60;/td&#62;&#60;td&#62;phone&#60;/td&#62;&#60;td&#62;address&#60;/td&#62;&#60;td&#62; city&#60;/td&#62;&#60;td&#62;state&#60;/td&#62;&#60;td&#62;zip&#60;/td&#62;&#60;/tr&#62;&#8221;;
  while(!rs.EOF)
  {
 shtml += &#8220;&#60;tr&#62;&#60;td&#62;&#8221; + rs(&#8220;au_id&#8221;) + &#8220;&#60;/td&#62;&#60;td&#62;&#8221; + rs(&#8220;au_lname&#8221;) + &#8220;&#60;/td&#62;&#60;td&#62;&#8221; + rs(&#8220;au_fname&#8221;) + &#8220;&#60;/td&#62;&#60;td&#62;&#8221; + rs(&#8220;phone&#8221;) + &#8220;&#60;/td&#62;&#60;td&#62;&#8221; + rs(&#8220;address&#8221;) + &#8220;&#60;/td&#62;&#60;td&#62;&#8221; + rs(&#8220;city&#8221;) + &#8220;&#60;/td&#62;&#60;td&#62;&#8221; + rs(&#8220;state&#8221;) + &#8220;&#60;/td&#62;&#60;td&#62;&#8221; + rs(&#8220;zip&#8221;) + &#8220;&#60;/td&#62;&#60;/tr&#62;&#8221;;
 rs.moveNext;
  }
  shtml += &#8220;&#60;/table&#62;&#8221;;
  document.write(shtml);
  rs.close(); 
  rs = null; 
  conn.close(); 
  conn = null;
&#60;/script&#62;
//使用数据岛
&#60;html&#62;
&#60;body&#62;
srno：&#60;input type=text datasrc=#xmldate DataFLD=srno size=&#8220;76&#8243;&#62;&#60;BR&#62;
times：&#60;input type=text datasrc=#xmldate DataFLD=times size=&#8220;76&#8243;&#62;&#60;BR&#62;
&#60;input id=&#8220;first&#8221; TYPE=button value=&#8220;&#60;&#60;　第一条记录&#8221; onclick=&#8220;xmldate.recordset.moveFirst()&#8221;&#62;
&#60;input id=&#8220;prev&#8221; TYPE=button value=&#8220;&#60;上一条记录&#8221; onclick=&#8220;xmldate.recordset.movePrevious()&#8221;&#62;  
&#60;input id=&#8220;next&#8221; TYPE=button value=&#8220;下一条记录&#62;&#8221; onclick=&#8220;xmldate.recordset.moveNext()&#8221;&#62;  
&#60;input id=&#8220;last&#8221; TYPE=button value=&#8220;最后一条记录&#62;&#62;&#8221; onclick=&#8220;xmldate.recordset.moveLast()&#8221;&#62;   
&#60;input id=&#8220;Add&#8221; TYPE=button value=&#8220;添加新记录&#8221; onclick=&#8220;xmldate.recordset.addNew()&#8221;&#62;  
&#60;XML ID=&#8220;xmldate&#8221;&#62;
&#60;infolist&#62;
&#60;info &#62;&#60;srno&#62;20041025-01&#60;/srno&#62;&#60;times&#62;null&#60;/times&#62;&#60;/info&#62;
&#60;info &#62;&#60;srno&#62;20041101-09&#60;/srno&#62;&#60;times&#62;2004年10月1日2点22分0秒&#60;/times&#62;&#60;/info&#62;
&#60;/infolist&#62;
&#60;/XML&#62;
&#60;/body&#62;
&#60;/html&#62;
//获得参数
&#60;body&#62;
&#60;a href=&#8220;javascript:location.href=location.href + &#8217;?a=1&#38;b=2&#8242;&#8221;&#62;search&#60;/a&#62;
&#60;script language=&#8220;JavaScript&#8221;&#62;
&#60;!&#8211;
var a = location.search.substr(1);
if(a.length&#62;0)
{
 var re = /([^&#38;]*?)=([^&#38;]*)/g
 var s = a.match(re);
 for(var i= 0;i&#60;s.length;i++)
 {
  alert(s[i]);
  alert(s[i].split(&#8220;=&#8221;)[1]);
 }
}
//&#8211;&#62; 
&#60;/script&#62;
&#60;/body&#62;
//可编辑SELECT
&#60;input type=text name=re_name style=&#8220;width:100px;height:21px;font-size:10pt;&#8221;&#62;&#60;span style=&#8220;width:18px;border:0px solid red;&#8221;&#62;&#60;select name=&#8220;r00&#8243; style=&#8220;margin-left:-100px;width:118px; background-color:#FFEEEE;&#8221; onChange=&#8220;document.all.re_name.value=this.value;&#8221;&#62;
                &#60;option value=&#8220;1&#8243;&#62;11111111&#60;option&#62;
                &#60;option value=&#8220;2&#8243;&#62;222222&#60;/option&#62;
                &#60;option value=&#8220;3&#8243;&#62;333333&#60;/option&#62;
              &#60;/select&#62;
              &#60;/span&#62;
//设置光标位置
function getCaret(textbox)
{
 var control = document.activeElement;
 textbox.focus();
 var rang = document.selection.createRange();
  rang.setEndPoint(&#8220;StartToStart&#8221;,textbox.createTextRange())
 control.focus();
 return rang.text.length;
}
function setCaret(textbox,pos)
{
 try
 {
  var r =textbox.createTextRange();
   r.moveStart(&#8216;character&#8217;,pos);
   r.collapse(true);
   r.select();
 }
 catch(e)
 {}
}
function selectLength(textbox,start,len)
{
 try
 {
  var r =textbox.createTextRange();
 
  r.moveEnd(&#8216;character&#8217;,len-(textbox.value.length-start));
  r.moveStart(&#8216;character&#8217;,start);
  
  r.select();
 }
 catch(e)
 {//alert(e.description)} 
}
function insertAtCaret(textbox,text)
{
 textbox.focus();
 document.selection.createRange().text = text;
}
//页内查找
function findInPage(str)
{
 var txt, i, found,n = 0;
 if (str == &#8220;&#8221;)
 {
  return false;
 }
 txt = document.body.createTextRange();
 for (i = 0; i &#60;= n &#38;&#38; (found = txt.findText(str)) != false; i++)
 {
  txt.moveStart(&#8220;character&#8221;, 1);
  txt.moveEnd(&#8220;textedit&#8221;);
 }
 if (found)
 {
  txt.moveStart(&#8220;character&#8221;, -1);
  txt.findText(str);
  txt.select();
  txt.scrollIntoView();
  n++;  
 }
 else
 {
  if (n &#62; 0)
  {
   n = 0;
   findInPage(str);
  }
  else
  {
   alert(str + &#8220;&#8230;            您要找的文字不存在。n n请试着输入页面中的关键字再次查找！&#8221;);
  }
 }
 return false;
}
//操作EXCEL
&#60;script language=&#8220;javascript&#8221;&#62;
function jStartExcel() {
 var xls = new ActiveXObject ( &#8220;Excel.Application&#8221; );
 xls.visible = true;
 var newBook = xls.Workbooks.Add;
 newBook.Worksheets.Add;
 newBook.Worksheets(1).Activate;
 xls.ActiveWorkBook.ActiveSheet.PageSetup.Orientation = 2;
 xls.ActiveWorkBook.ActiveSheet.PageSetup.PaperSize = 5;
 newBook.Worksheets(1).Columns(&#8220;A&#8221;).columnwidth=50;
 newBook.Worksheets(1).Columns(&#8220;A&#8221;).WrapText = true;
 newBook.Worksheets(1).Columns(&#8220;B&#8221;).columnwidth=50;
 newBook.Worksheets(1).Columns(&#8220;B&#8221;).WrapText = true;
 newBook.Worksheets(1).Range(&#8220;A1:B1000&#8243;).NumberFormat = &#8220;0&#8243;;
 newBook.Worksheets(1).Range(&#8220;A1:B1000&#8243;).HorizontalAlignment = -4131;
 newBook.Worksheets(1).Cells(1,1).Interior.ColorIndex=&#8220;15&#8243;;
 newBook.Worksheets(1).Cells(1,1).value=&#8220;First Column, First Cell&#8221;;
 newBook.Worksheets(1).Cells(2,1).value=&#8220;First Column, Second Cell&#8221;;
 newBook.Worksheets(1).Cells(1,2).value=&#8220;Second Column, First Cell&#8221;;
 newBook.Worksheets(1).Cells(2,2).value=&#8220;Second Column, Second Cell&#8221;;
 newBook.Worksheets(1).Name=&#8220;My First WorkSheet&#8221;;
}
&#60;/script&#62;
//自定义提示条
&#60;a href=&#8220;#&#8221; title=&#8220;这是提示&#8221;&#62;tip&#60;/a&#62;
&#60;script Language=&#8220;JavaScript&#8221;&#62;
//***********默认设置定义.********************* 
tPopWait=50;//停留tWait豪秒后显示提示。 
tPopShow=5000;//显示tShow豪秒后关闭提示 
showPopStep=20;
popOpacity=99;
//***************内部变量定义***************** 
sPop=null;
curShow=null;
tFadeOut=null;
tFadeIn=null;
tFadeWaiting=null;
document.write(&#8220;&#60;style type=&#8217;text/css&#8217;id=&#8217;defaultPopStyle&#8217;&#62;&#8221;);
document.write(&#8220;.cPopText {  background-color: #F8F8F5;color:#000000; border: 1px #000000 solid;font-color: font-size: 12px; padding-right: 4px; padding-left: 4px; height: 20px; padding-top: 2px; padding-bottom: 2px; filter: Alpha(Opacity=0)}&#8221;);
document.write(&#8220;&#60;/style&#62;&#8221;);
document.write(&#8220;&#60;div id=&#8217;dypopLayer&#8217; style=&#8217;position:absolute;z-index:1000;&#8217; class=&#8217;cPopText&#8217;&#62;&#60;/div&#62;&#8221;);
function showPopupText(){
var o=event.srcElement;
MouseX=event.x;
MouseY=event.y;
if(o.alt!=null &#38;&#38; o.alt!=&#8220;&#8221;){o.dypop=o.alt;o.alt=&#8220;&#8221;};
        if(o.title!=null &#38;&#38; o.title!=&#8220;&#8221;){o.dypop=o.title;o.title=&#8220;&#8221;};
if(o.dypop!=sPop) {
sPop=o.dypop;
clearTimeout(curShow);
clearTimeout(tFadeOut);
clearTimeout(tFadeIn);
clearTimeout(tFadeWaiting);
if(sPop==null &#124;&#124; sPop==&#8220;&#8221;) {
dypopLayer.innerHTML=&#8220;&#8221;;
dypopLayer.style.filter=&#8220;Alpha()&#8221;;
dypopLayer.filters.Alpha.opacity=0;
}
else {
if(o.dyclass!=null) popStyle=o.dyclass 
else popStyle=&#8220;cPopText&#8221;;
curShow=setTimeout(&#8220;showIt()&#8221;,tPopWait);
}
}
}
function showIt(){
dypopLayer.className=popStyle;
dypopLayer.innerHTML=sPop;
popWidth=dypopLayer.clientWidth;
popHeight=dypopLayer.clientHeight;
if(MouseX+12+popWidth&#62;document.body.clientWidth) popLeftAdjust=-popWidth-24
else popLeftAdjust=0;
if(MouseY+12+popHeight&#62;document.body.clientHeight) popTopAdjust=-popHeight-24
else popTopAdjust=0;
dypopLayer.style.left=MouseX+12+document.body.scrollLeft+popLeftAdjust;
dypopLayer.style.top=MouseY+12+document.body.scrollTop+popTopAdjust;
dypopLayer.style.filter=&#8220;Alpha(Opacity=0)&#8221;;
fadeOut();
}
function fadeOut(){
if(dypopLayer.filters.Alpha.opacity&#60;popOpacity) {
dypopLayer.filters.Alpha.opacity+=showPopStep;
tFadeOut=setTimeout(&#8220;fadeOut()&#8221;,1);
}
else {
dypopLayer.filters.Alpha.opacity=popOpacity;
tFadeWaiting=setTimeout(&#8220;fadeIn()&#8221;,tPopShow);
}
}
function fadeIn(){
if(dypopLayer.filters.Alpha.opacity&#62;0) {
dypopLayer.filters.Alpha.opacity-=1;
tFadeIn=setTimeout(&#8220;fadeIn()&#8221;,1);
}
}
document.onmouseover=showPopupText;
&#60;/script&#62;
//插入文字
document.onclick =function(){ 
var oSource = window.event.srcElement; 
if(oSource.tagName!=&#8220;DIV&#8221;) 
return false; 
var sel = document.selection; 
if (sel!=null) { 
var rng = sel.createRange(); 
if (rng!=null) 
rng.pasteHTML(&#8220;&#60;font color=red&#62;插入文字&#60;/font&#62;&#8221;); 
} 
}
//netscapte下操作xml 
doc = new ActiveXObject(&#8220;Msxml2.DOMDocument&#8221;);
doc = new ActiveXObject(&#8220;Microsoft.XMLDOM&#8221;)
-&#62;&#62;
doc = (new DOMParser()).parseFromString(sXML,&#8217;text/xml&#8217;)
//判断键值
&#60;html&#62;
&#60;meta http-equiv=&#8220;Content-Type&#8221; content=&#8220;text/html; charset=gb2312&#8243;&#62;
&#60;head&#62;
&#60;script language=&#8220;javascript&#8221;&#62;
var ie  =navigator.appName==&#8220;Microsoft Internet Explorer&#8221;?true:false;
  
function keyDown(e)
{
 if(!ie)
 {
  var nkey=e.which;
  var iekey=&#8217;现在是ns浏览器&#8217;;
  var realkey=String.fromCharCode(e.which);
 }
 if(ie)
 {
  var iekey=event.keyCode;
  var nkey=&#8217;现在是ie浏览器&#8217;;
  var realkey=String.fromCharCode(event.keyCode);
  if(event.keyCode==32){realkey=&#8221; 空格&#8221;}
  if(event.keyCode==13){realkey=&#8221; 回车&#8221;}
  if(event.keyCode==27){realkey=&#8221; Esc&#8221;}
  if(event.keyCode==16){realkey=&#8221; Shift&#8221;}
  if(event.keyCode==17){realkey=&#8221; Ctrl&#8221;}
  if(event.keyCode==18){realkey=&#8221; Alt&#8221;}
 }
 alert(&#8216;ns浏览器中键值:&#8217;+nkey+&#8217;n'+&#8217;ie浏览器中键值:&#8217;+iekey+&#8217;n'+&#8217;实际键为&#8217;+realkey);
}
document.onkeydown = keyDown;
&#60;/script&#62;
&#60;/head&#62;
&#60;body&#62;
//Javascript Document. 
&#60;hr&#62;
&#60;center&#62;
&#60;h3&#62;请按任意一个键。。。。&#60;/h3&#62;
&#60;/center&#62;
&#60;/body&#62;
&#60;/html&#62;
//禁止FSO 
1.注销组件
regsvr32 /u scrrun.dll
2.修改PROGID 
HKEY_CLASSES_ROOTScripting.FileSystemObject
Scripting.FileSystemObject
3.对于使用object的用户，修改HKEY_CLASSES_ROOTScripting.
//省略号
&#60;DIV STYLE=&#8220;width: 120px; height: 50px; border: 1px solid blue;
            overflow: hidden; text-overflow:ellipsis&#8221;&#62;
&#60;NOBR&#62;就是比如有一行文字，很长，表格内一行显示不下.&#60;/NOBR&#62;
&#60;/DIV&#62;
//检测media play版本
&#60;IE:clientCaps ID=&#8220;oClientCaps&#8221; style=&#8220;{behavior:url(#default#clientcaps)}&#8221; /&#62;
&#60;SCRIPT&#62;
var flash=&#8220;&#8221;;
    WMPVersion= oClientCaps.getComponentVersion(&#8220;{22D6F312-B0F6-11D0-94AB-0080C74C7E95}&#8221;,&#8220;ComponentID&#8221;); 
    if (WMPVersion != &#8220;&#8221;) {
    flash = &#8220;&#8221;;
    var version = WMPVersion.split(&#8220;,&#8221;);
    var i;
    for (i = 0; i &#60; version.length; i++) {
      if (i != 0)
    flash += &#8220;.&#8221;;
      flash += version[i];
    }
     document.write(&#8220;您的Windows Media Player 版本是:&#8221;+flash+&#8220;&#60;p&#62;&#8221;);
  }
&#60;/SCRIPT&#62;
//图象按比例
&#60;script language=&#8220;JavaScript&#8221;&#62;
&#60;!&#8211;
//图片按比例缩放 
var flag=false;
function DrawImage(ImgD){
 var image=new Image();
 var iwidth = 80;  //定义允许图片宽度 
 var iheight = 80;  //定义允许图片高度 
 image.src=ImgD.src;
 if(image.width&#62;0 &#38;&#38; image.height&#62;0){
 flag=true;
 if(image.width/image.height&#62;= iwidth/iheight){
  if(image.width&#62;iwidth){  
  ImgD.width=iwidth;
  ImgD.height=(image.height*iwidth)/image.width;
  }else{
  ImgD.width=image.width;  
  ImgD.height=image.height;
  }
  ImgD.alt=image.width+&#8220;×&#8221;+image.height;
  }
 else{
  if(image.height&#62;iheight){  
  ImgD.height=iheight;
  ImgD.width=(image.width*iheight)/image.height;  
  }else{
  ImgD.width=image.width;  
  ImgD.height=image.height;
  }
  ImgD.alt=image.width+&#8220;×&#8221;+image.height;
  }
 }
} 
//&#8211;&#62; 
&#60;/script&#62;
&#60;img src=&#8220;..&#8221; onload = &#8220;DrawImage(this)&#8221;&#62;
//细线SELECT 
&#60;span style=&#8220;border:1px solid #000000; position:absolute; overflow:hidden;&#8221; &#62;
&#60;select style=&#8220;margin:-2px;&#8221;&#62;
&#60;option&#62;1111&#60;/option&#62;
&#60;option&#62;11111111111111&#60;/option&#62;
&#60;option&#62;111111111&#60;/option&#62;
&#60;/select&#62;&#60;/span&#62;
//Import
function Import() {
 for( var i=0; i&#60;arguments.length; i++ ) {
  var file = arguments[i];
  if ( file.match(/.js$/i)) 
   document.write(&#8216;&#60;script type=&#8221;text/javascript&#8220; src=&#8221;&#8216; + file + &#8217;&#8221;&#62;&#60;/sc&#8217; + &#8217;ript&#62;&#8217;);
  else
   document.write(&#8216;&#60;style type=&#8221;text/css&#8221;&#62;@import &#8221;&#8216; + file + &#8217;&#8221; ;&#60;/style&#62;&#8217;);
 }
};
//js枚举
function getComputerName()
{
 var objWMIService = GetObject(&#8220;Winmgmts:rootcimv2&#8243;);
 for(e = new Enumerator(objWMIService) ; !e.atEnd() ; e.moveNext())
 {
    var getComputer = e.item();
    return getComputer.Name;
 }
}
//条件编译
&#60;script language=javascript&#62;
/*@cc_on @*/
/*@if (@_win32 &#38;&#38; @_jscript_version&#62;5)
function window.confirm(str)
{
    execScript(&#8220;n = msgbox(&#8216;&#8221;+ str +&#8221;&#8216;, 257)&#8221;, &#8221;vbscript&#8221;);
    return(n == 1);
}
@end @*/
&#60;/script&#62;
//取得innerText
&#60;SCRIPT LANGUAGE=&#8220;JavaScript&#8221;&#62;
&#60;!&#8211;
 var xmlDoc = new ActiveXObject(&#8220;Msxml2.DOMDocument.4.0&#8243;);
 var currNode;
 xmlDoc.async = false;
 xmlDoc.async = false;
 xmlDoc.loadXML(&#8220;&#60;TABLENAME&#62;      你好你阿三    大法     司法等四              &#60;/TABLENAME&#62;&#8221;);
 currNode = xmlDoc.documentElement;
   
  var s = currNode.xml;
  var r = /&#60;([^&#62;s]*?)[^&#62;]*?&#62;([^&#60;]*?)&#60;/1&#62;/
  var b = s.replace(r,&#8220;$2&#8243;);
  alert(b);
//&#8211;&#62; 
&#60;/SCRIPT&#62;
//mergeAttributes 复制所有读/写标签属性到指定元素。
&#60;SCRIPT&#62;
function fnMerge(){
oSource.children[1].mergeAttributes(oSource.children[0]);
}
&#60;/SCRIPT&#62;
&#60;SPAN ID=oSource&#62;
&#60;DIV
ID=&#8220;oDiv&#8221;
ATTRIBUTE1=&#8220;true&#8221;
ATTRIBUTE2=&#8220;true&#8221;
onclick=&#8220;alert(&#8216;click&#8217;);&#8221;
onmouseover=&#8220;this.style.color=&#8217;#0000FF&#8217;;&#8221;
onmouseout=&#8220;this.style.color=&#8217;#000000&#8242;;&#8221;
&#62;
This is a sample &#60;B&#62;DIV&#60;/B&#62; element.
&#60;/DIV&#62;
&#60;DIV ID=&#8220;oDiv2&#8243;&#62;
This is another sample &#60;B&#62;DIV&#60;/B&#62; element.
&#60;/DIV&#62;
&#60;/SPAN&#62;
&#60;INPUT
TYPE=&#8220;button&#8221;
VALUE=&#8220;Merge Attributes&#8221;
onclick=&#8220;fnMerge()&#8221;
&#62;
]]></description>
		<wfw:commentRss>http://www.chentaoqian.com/archives/430/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>90个实用的JavaScript小技巧(二)</title>
		<link>http://www.chentaoqian.com/archives/428</link>
		<comments>http://www.chentaoqian.com/archives/428#comments</comments>
		<pubDate>Mon, 06 Jul 2009 14:30:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[技巧]]></category>

		<guid isPermaLink="false">http://www.chentaoqian.com/?p=428</guid>
		<description><![CDATA[//各种尺寸
s  +=  &#8220;\r\n网页可见区域宽：&#8221;+  document.body.clientWidth;  
s  +=  &#8220;\r\n网页可见区域高：&#8221;+  document.body.clientHeight;  
s  +=  &#8220;\r\n网页可见区域高：&#8221;+  document.body.offsetWeight  +&#8220;  (包括边线的宽)&#8221;;  
s  +=  &#8220;\r\n网页可见区域高：&#8221;+  document.body.offsetHeight  +&#8220;  (包括边线的宽)&#8221;;  
s  +=  &#8220;\r\n网页正文全文宽：&#8221;+  document.body.scrollWidth;  
s  +=  &#8220;\r\n网页正文全文高：&#8221;+  document.body.scrollHeight;  
s  +=  &#8220;\r\n网页被卷去的高：&#8221;+  document.body.scrollTop;  
s  +=  &#8220;\r\n网页被卷去的左：&#8221;+  document.body.scrollLeft;  
s  +=  &#8220;\r\n网页正文部分上：&#8221;+  window.screenTop;  
s  +=  &#8220;\r\n网页正文部分左：&#8221;+  window.screenLeft;  
s  +=  &#8220;\r\n屏幕分辨率的高：&#8221;+  window.screen.height;  
s  +=  &#8220;\r\n屏幕分辨率的宽：&#8221;+  window.screen.width;  
s  +=  &#8220;\r\n屏幕可用工作区高度：&#8221;+  window.screen.availHeight;  
s  +=  &#8220;\r\n屏幕可用工作区宽度：&#8221;+  window.screen.availWidth; 


//过滤数字
&#60;input type=text onkeypress=&#8220;return event.keyCode&#62;=48&#38;&#38;event.keyCode&#60;=57&#124;&#124;(this.value.indexOf(&#8216;.&#8217;)&#60;0?event.keyCode==46:false)&#8221; onpaste=&#8220;return !clipboardData.getData(&#8216;text&#8217;).match(/\D/)&#8221; ondragenter=&#8220;return false&#8221;&#62;
//特殊用途
&#60;input type=button value=导入收藏夹 onclick=&#8220;window.external.ImportExportFavorites(true,&#8217;http://localhost&#8217;);&#8221;&#62; 
&#60;input type=button value=导出收藏夹 onclick=&#8220;window.external.ImportExportFavorites(false,&#8217;http://localhost&#8217;);&#8221;&#62; 
&#60;input type=button value=整理收藏夹 onclick=&#8220;window.external.ShowBrowserUI(&#8216;OrganizeFavorites&#8217;, null)&#8221;&#62;
&#60;input type=button value=语言设置   onclick=&#8220;window.external.ShowBrowserUI(&#8216;LanguageDialog&#8217;, null)&#8221;&#62;
&#60;input type=button value=加入收藏夹 onclick=&#8220;window.external.AddFavorite(&#8216;http://www.google.com/&#8217;, &#8217;google&#8217;)&#8221;&#62; 
&#60;input type=button value=加入到频道 onclick=&#8220;window.external.addChannel(&#8216;http://www.google.com/&#8217;)&#8221;&#62; 
&#60;input type=button value=加入到频道 onclick=&#8220;window.external.showBrowserUI(&#8216;PrivacySettings&#8217;,null)&#8221;&#62;
//不缓存
&#60;META HTTP-EQUIV=&#8220;pragma&#8221; CONTENT=&#8220;no-cache&#8221;&#62;
&#60;META HTTP-EQUIV=&#8220;Cache-Control&#8221; CONTENT=&#8220;no-cache, must-revalidate&#8221;&#62;
&#60;META HTTP-EQUIV=&#8220;expires&#8221; CONTENT=&#8220;0&#8243;&#62;
//正则匹配
匹配中文字符的正则表达式： [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内)：[^\x00-\xff]
匹配空行的正则表达式：\n[\s&#124; ]*\r
匹配HTML标记的正则表达式：/&#60;(.*)&#62;.*&#60;\/\1&#62;&#124;&#60;(.*) \/&#62;/ 
匹配首尾空格的正则表达式：(^\s*)&#124;(\s*$)（像vbscript那样的trim函数）
匹配Email地址的正则表达式：\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式：http://([\w-]+\.)+[\w-]+(/[\w- ./?%&#38;=]*)? 
以下是例子：
利用正则表达式限制网页表单里的文本框输入内容：
用正则表达式限制只能输入中文：onkeyup=&#8220;value=value.replace(/[^\u4E00-\u9FA5]/g,&#8221;)&#8221; onbeforepaste=&#8220;clipboardData.setData(&#8216;text&#8217;,clipboardData.getData(&#8216;text&#8217;).replace(/[^\u4E00-\u9FA5]/g,&#8221;))&#8221;
1.用正则表达式限制只能输入全角字符： onkeyup=&#8220;value=value.replace(/[^\uFF00-\uFFFF]/g,&#8221;)&#8221; onbeforepaste=&#8220;clipboardData.setData(&#8216;text&#8217;,clipboardData.getData(&#8216;text&#8217;).replace(/[^\uFF00-\uFFFF]/g,&#8221;))&#8221;
2.用正则表达式限制只能输入数字：onkeyup=&#8220;value=value.replace(/[^\d]/g,&#8221;) &#8221;onbeforepaste=&#8220;clipboardData.setData(&#8216;text&#8217;,clipboardData.getData(&#8216;text&#8217;).replace(/[^\d]/g,&#8221;))&#8221;
3.用正则表达式限制只能输入数字和英文：onkeyup=&#8220;value=value.replace(/[\W]/g,&#8221;) &#8221;onbeforepaste=&#8220;clipboardData.setData(&#8216;text&#8217;,clipboardData.getData(&#8216;text&#8217;).replace(/[^\d]/g,&#8221;))&#8221;
//消除图像工具栏
&#60;IMG SRC=&#8220;mypicture.jpg&#8221; HEIGHT=&#8220;100px&#8221; WIDTH=&#8220;100px&#8221; GALLERYIMG=&#8220;false&#8221;&#62; 
or
&#60;head&#62;
&#60;meta http-equiv=&#8220;imagetoolbar&#8221; content=&#8220;no&#8221;&#62;
&#60;/head&#62;
//无提示关闭
function Close()
{
 var ua=navigator.userAgent
 var ie=navigator.appName==&#8220;Microsoft Internet Explorer&#8221;?true:false
 if(ie)
 {
      var IEversion=parseFloat(ua.substring(ua.indexOf(&#8220;MSIE &#8221;)+5,ua.indexOf(&#8220;;&#8221;,ua.indexOf(&#8220;MSIE &#8221;))))
  if(IEversion&#60; 5.5)
  {
   var str  = &#8217;&#60;object id=noTipClose classid=&#8220;clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11&#8243;&#62;&#8217;
       str += &#8217;&#60;param name=&#8220;Command&#8221; value=&#8220;Close&#8221;&#62;&#60;/object&#62;&#8217;;
       document.body.insertAdjacentHTML(&#8220;beforeEnd&#8221;, str);
       document.all.noTipClose.Click();
  }
      else
  {
       window.opener =null;
       window.close();
      }
   }
 else
 {
  window.close()
   }
}
//取得控件得绝对位置(1)
&#60;script language=&#8220;javascript&#8221;&#62; 
function getoffset(e)
{ 
 var t=e.offsetTop; 
 var l=e.offsetLeft; 
 while(e=e.offsetParent)
 { 
  t+=e.offsetTop; 
  l+=e.offsetLeft; 
 } 
 var rec = new Array(1);
 rec[0]  = t;
 rec[1] = l;
 return rec
} 
&#60;/script&#62;
//获得控件的绝对位置(2)
oRect = obj.getBoundingClientRect();
oRect.left
oRect.
//最小化,最大化,关闭
&#60;object id=min classid=&#8220;clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11&#8243;&#62; 
&#60;param name=&#8220;Command&#8221; value=&#8220;Minimize&#8221;&#62;&#60;/object&#62; 
&#60;object id=max classid=&#8220;clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11&#8243;&#62; 
&#60;param name=&#8220;Command&#8221; value=&#8220;Maximize&#8221;&#62;&#60;/object&#62; 
&#60;OBJECT id=close classid=&#8220;clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11&#8243;&#62; 
&#60;PARAM NAME=&#8220;Command&#8221; value=&#8220;Close&#8221;&#62;&#60;/OBJECT&#62; 
&#60;input type=button value=最小化 onclick=min.Click()&#62; 
&#60;input type=button value=最大化 onclick=max.Click()&#62; 
&#60;input type=button value=关闭 onclick=close.Click()&#62;
//光标停在文字最后
&#60;script language=&#8220;javascript&#8221;&#62;
function cc()
{
 var e = event.srcElement;
 var r =e.createTextRange();
 r.moveStart(&#8216;character&#8217;,e.value.length);
 r.collapse(true);
 r.select();
}
&#60;/script&#62;
&#60;input type=text name=text1 value=&#8220;123&#8243; onfocus=&#8220;cc()&#8221;&#62;
//页面进入和退出的特效
进入页面&#60;meta http-equiv=&#8220;Page-Enter&#8221; content=&#8220;revealTrans(duration=x, transition=y)&#8221;&#62;
推出页面&#60;meta http-equiv=&#8220;Page-Exit&#8221; content=&#8220;revealTrans(duration=x, transition=y)&#8221;&#62; 
这个是页面被载入和调出时的一些特效。duration表示特效的持续时间，以秒为单位。transition表示使
用哪种特效，取值为1-23:
　　0 矩形缩小 
　　1 矩形扩大 
　　2 圆形缩小
　　3 圆形扩大 
　　4 下到上刷新 
　　5 上到下刷新
　　6 左到右刷新 
　　7 右到左刷新 
　　8 竖百叶窗
　　9 横百叶窗 
　　10 错位横百叶窗 
　　11 错位竖百叶窗
　　12 点扩散 
　　13 左右到中间刷新 
　　14 中间到左右刷新
　　15 中间到上下
　　16 上下到中间 
　　17 右下到左上
　　18 右上到左下 
　　19 左上到右下 
　　20 左下到右上
　　21 横条 
　　22 竖条
//网页是否被检索
&#60;meta name=&#8220;ROBOTS&#8221; content=&#8220;属性值&#8221;&#62;
　　其中属性值有以下一些:
　　属性值为&#8220;all&#8221;: 文件将被检索，且页上链接可被查询；
　　属性值为&#8220;none&#8221;: 文件不被检索，而且不查询页上的链接；
　　属性值为&#8220;index&#8221;: 文件将被检索；
　　属性值为&#8220;follow&#8221;: 查询页上的链接；
　　属性值为&#8220;noindex&#8221;: 文件不检索，但可被查询链接；
　　属性值为&#8220;nofollow&#8221;:
//打印分页
&#60;p  style=&#8220;page-break-after:always&#8221;&#62;page1&#60;/p&#62;  
&#60;p  style=&#8220;page-break-after:always&#8221;&#62;page2&#60;/p&#62;
//设置打印
&#60;object id=&#8220;factory&#8221; style=&#8220;display:none&#8221; viewastext
  classid=&#8220;clsid:1663ed61-23eb-11d2-b92f-008048fdd814&#8243;
  codebase=&#8220;http://www.meadroid.com/scriptx/ScriptX.cab#Version=5,60,0,360&#8243; 
&#62;&#60;/object&#62;
&#60;input type=button value=页面设置 onclick=&#8220;factory.printing.PageSetup()&#8221;&#62;
&#60;input type=button value=打印预览 onclick=&#8220;factory.printing.Preview()&#8221;&#62;
 
&#60;script language=javascript&#62;
function window.onload()
{
   // &#8211; advanced features 
   factory.printing.SetMarginMeasure(2) // measure margins in inches 
   factory.printing.SetPageRange(false, 1, 3) // need pages from 1 to 3 
   factory.printing.printer = &#8220;HP DeskJet 870C&#8221;
   factory.printing.copies = 2
   factory.printing.collate = true
   factory.printing.paperSize = &#8220;A4&#8243;
   factory.printing.paperSource = &#8220;Manual feed&#8221;
   // &#8211; basic features 
   factory.printing.header = &#8220;居左显示&#38;b居中显示&#38;b居右显示页码，第&#38;p页/共&#38;P页&#8221;
   factory.printing.footer = &#8220;（自定义页脚）&#8221;
   factory.printing.portrait = false
   factory.printing.leftMargin = 0.75
   factory.printing.topMargin = 1.5
   factory.printing.rightMargin = 0.75
   factory.printing.bottomMargin = 1.5
}
function Print(frame) {
  factory.printing.Print(true, frame) // print with prompt 
}
&#60;/script&#62;
&#60;input type=button value=&#8220;打印本页&#8221; onclick=&#8220;factory.printing.Print(false)&#8221;&#62;
&#60;input type=button value=&#8220;页面设置&#8221; onclick=&#8220;factory.printing.PageSetup()&#8221;&#62;
&#60;input type=button value=&#8220;打印预览&#8221; onclick=&#8220;factory.printing.Preview()&#8221;&#62;&#60;br&#62;
&#60;a href=&#8220;http://www.meadroid.com/scriptx/docs/printdoc.htm?static&#8221;  target=_blank&#62;具体使用手册，更多信息，点这里&#60;/a&#62;
//自带的打印预览
WebBrowser.ExecWB(1,1) 打开 
Web.ExecWB(2,1) 关闭现在所有的IE窗口，并打开一个新窗口 
Web.ExecWB(4,1) 保存网页 
Web.ExecWB(6,1) 打印 
Web.ExecWB(7,1) 打印预览 
Web.ExecWB(8,1) 打印页面设置 
Web.ExecWB(10,1) 查看页面属性 
Web.ExecWB(15,1) 好像是撤销，有待确认 
Web.ExecWB(17,1) 全选 
Web.ExecWB(22,1) 刷新 
Web.ExecWB(45,1) 关闭窗体无提示 
&#60;style media=print&#62; 
.Noprint{display:none;}&#60;!&#8211;用本样式在打印时隐藏非打印项目&#8211;&#62; 
.PageNext{page-break-after: always;}&#60;!&#8211;控制分页&#8211;&#62; 
&#60;/style&#62; 
&#60;object  id=&#8220;WebBrowser&#8221;  width=0  height=0  classid=&#8220;CLSID:8856F961-340A-11D0-A96B-00C04FD705A2&#8243;&#62;    
&#60;/object&#62;    
 
&#60;center class=&#8220;Noprint&#8221; &#62;
&#60;input type=button value=打印 onclick=document.all.WebBrowser.ExecWB(6,1)&#62; 
&#60;input type=button value=直接打印 onclick=document.all.WebBrowser.ExecWB(6,6)&#62; 
&#60;input type=button value=页面设置 onclick=document.all.WebBrowser.ExecWB(8,1)&#62; 
&#60;/p&#62; 
&#60;p&#62; &#60;input type=button value=打印预览 onclick=document.all.WebBrowser.ExecWB(7,1)&#62; 
&#60;/center&#62;
//去掉打印时的页眉页脚
&#60;script  language=&#8220;JavaScript&#8221;&#62;  
var HKEY_Root,HKEY_Path,HKEY_Key;
HKEY_Root=&#8220;HKEY_CURRENT_USER&#8221;;
HKEY_Path=&#8220;\\Software\\Microsoft\\Internet Explorer\\PageSetup\\&#8221;;
//设置网页打印的页眉页脚为空 
function PageSetup_Null()
{
 try
 {
         var Wsh=new ActiveXObject(&#8220;WScript.Shell&#8221;);
  HKEY_Key=&#8220;header&#8221;;
  Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,&#8220;&#8221;);
  HKEY_Key=&#8220;footer&#8221;;
  Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,&#8220;&#8221;);
 }
 catch(e){}
}
//设置网页打印的页眉页脚为默认值 
function  PageSetup_Default()
{  
 try
 {
  var Wsh=new ActiveXObject(&#8220;WScript.Shell&#8221;);
  HKEY_Key=&#8220;header&#8221;;
  Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,&#8220;&#38;w&#38;b页码,&#38;p/&#38;P&#8221;);
  HKEY_Key=&#8220;footer&#8221;;
  Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,&#8220;&#38;u&#38;b&#38;d&#8221;);
 }
 catch(e){}
}
&#60;/script&#62;
&#60;input type=&#8220;button&#8221; value=&#8220;清空页码&#8221; onclick=PageSetup_Null()&#62;
&#60;input type=&#8220;button&#8221; value=&#8220;恢复页码&#8221; onclick=PageSetup_Default()&#62;
//浏览器验证
function checkBrowser()
{ 
   this.ver=navigator.appVersion 
   this.dom=document.getElementById?1:0 
   this.ie6=(this.ver.indexOf(&#8220;MSIE 6&#8243;)&#62;-1 &#38;&#38; this.dom)?1:0; 
   this.ie5=(this.ver.indexOf(&#8220;MSIE 5&#8243;)&#62;-1 &#38;&#38; this.dom)?1:0; 
   this.ie4=(document.all &#38;&#38; !this.dom)?1:0; 
   this.ns5=(this.dom &#38;&#38; parseInt(this.ver) &#62;= 5) ?1:0; 
   this.ns4=(document.layers &#38;&#38; !this.dom)?1:0; 
   this.mac=(this.ver.indexOf(&#8216;Mac&#8217;) &#62; -1) ?1:0; 
   this.ope=(navigator.userAgent.indexOf(&#8216;Opera&#8217;)&#62;-1); 
   this.ie=(this.ie6 &#124;&#124; this.ie5 &#124;&#124; this.ie4) 
   this.ns=(this.ns4 &#124;&#124; this.ns5) 
   this.bw=(this.ie6 &#124;&#124; this.ie5 &#124;&#124; this.ie4 &#124;&#124; this.ns5 &#124;&#124; this.ns4 &#124;&#124; this.mac &#124;&#124; this.ope) 
   this.nbw=(!this.bw) 
   return this;
}
//计算内容宽和高
&#60;SCRIPT  language=&#8220;javascript&#8221;&#62;  
function  test(obj)  
{  
       var  range  =  obj.createTextRange();  
       alert(&#8220;内容区宽度:  &#8221;  +  range.boundingWidth    
                                                 +  &#8220;px\r\n内容区高度:  &#8221;  +  range.boundingHeight  +  &#8220;px&#8221;);  
             
}  
&#60;/SCRIPT&#62;  
&#60;BODY&#62;  
&#60;Textarea id=&#8220;txt&#8221; height=&#8220;150&#8243;&#62;sdf&#60;/textarea&#62;&#60;INPUT  type=&#8220;button&#8221;  value=&#8220;计算内容宽度&#8221;  onClick=&#8220;test(txt)&#8221;&#62;  
&#60;/BODY&#62;
//无模式的提示框
function modelessAlert(Msg)
{
   window.showModelessDialog(&#8220;javascript:alert(\&#8221;"+escape(Msg)+&#8220;\&#8221;);window.close();&#8221;,&#8220;&#8221;,&#8220;status:no;resizable:no;help:no;dialogHeight:height:30px;dialogHeight:40px;&#8221;);
}
//屏蔽按键
&#60;html&#62;
&#60;head&#62;
  &#60;meta http-equiv=&#8220;Content-Type&#8221; content=&#8220;text/html; charset=gb2312&#8243;&#62;
  &#60;noscript&#62;&#60;meta http-equiv=&#8220;refresh&#8221; content=&#8220;0;url=about:noscript&#8221;&#62;&#60;/noscript&#62;
  &#60;title&#62;屏蔽鼠标右键、Ctrl+N、Shift+F10、Alt+F4、F11、F5刷新、退格键&#60;/title&#62;
&#60;/head&#62;
&#60;body&#62;
&#60;script language=&#8220;Javascript&#8221;&#62;&#60;!&#8211;
  //屏蔽鼠标右键、Ctrl+N、Shift+F10、F11、F5刷新、退格键 
  //Author: meizz(梅花雨) 2002-6-18 
function document.oncontextmenu(){event.returnValue=false;}//屏蔽鼠标右键 
function window.onhelp(){return false} //屏蔽F1帮助 
function document.onkeydown()
{
  if ((window.event.altKey)&#38;&#38;
      ((window.event.keyCode==37)&#124;&#124;   //屏蔽 Alt+ 方向键 ← 
       (window.event.keyCode==39)))   //屏蔽 Alt+ 方向键 → 
  {
     alert(&#8220;不准你使用ALT+方向键前进或后退网页！&#8221;);
     event.returnValue=false;
  }
     /* 注：这还不是真正地屏蔽 Alt+ 方向键，
     因为 Alt+ 方向键弹出警告框时，按住 Alt 键不放，
     用鼠标点掉警告框，这种屏蔽方法就失效了。以后若
     有哪位高手有真正屏蔽 Alt 键的方法，请告知。*/
  if ((event.keyCode==8)  &#124;&#124;                 //屏蔽退格删除键 
      (event.keyCode==116)&#124;&#124;                 //屏蔽 F5 刷新键 
      (event.ctrlKey &#38;&#38; event.keyCode==82)){ //Ctrl + R 
     event.keyCode=0;
     event.returnValue=false;
     }
  if (event.keyCode==122){event.keyCode=0;event.returnValue=false;}  //屏蔽F11 
  if (event.ctrlKey &#38;&#38; event.keyCode==78) event.returnValue=false;   //屏蔽 Ctrl+n 
  if (event.shiftKey &#38;&#38; event.keyCode==121)event.returnValue=false;  //屏蔽 shift+F10 
  if (window.event.srcElement.tagName == &#8220;A&#8221; &#38;&#38; window.event.shiftKey) 
      window.event.returnValue = false;             //屏蔽 shift 加鼠标左键新开一网页 
  if ((window.event.altKey)&#38;&#38;(window.event.keyCode==115))             //屏蔽Alt+F4 
  {
      window.showModelessDialog(&#8220;about:blank&#8221;,&#8220;&#8221;,&#8220;dialogWidth:1px;dialogheight:1px&#8221;);
      return false;
  }
}
&#60;/script&#62;
屏蔽鼠标右键、Ctrl+N、Shift+F10、Alt+F4、F11、F5刷新、退格键
&#60;/body&#62;
&#60;/html&#62;
//屏蔽打印
&#60;style&#62;
@media print{
* {display:none}
}
&#60;/style&#62;
//移动的图层，拖动
1.&#60;span style=&#8217;position:absolute;width:200;height:200;background:red&#8217; onmousedown=MouseDown(this) onmousemove=MouseMove() onmouseup=MouseUp()&#62;meizz&#60;/span&#62;
&#60;script language=javascript&#62;
var Obj;
function MouseDown(obj)
{
  Obj=obj;
  Obj.setCapture();
  Obj.l=event.x-Obj.style.pixelLeft;
  Obj.t=event.y-Obj.style.pixelTop;
}
function MouseMove()
{
  if(Obj!=null)
  {
    Obj.style.left = event.x-Obj.l;
    Obj.style.top = event.y-Obj.t;
  }
}
function MouseUp()
{
  if(Obj!=null)
  {
    Obj.releaseCapture();
    Obj=null;
  }
}
&#60;/script&#62;
2.
&#60;div id=&#8220;myDiv&#8221; src=&#8220;logo.gif&#8221; ondrag=&#8220;doDrag();&#8221; onmouseover=&#8220;this.style.cursor=&#8217;hand&#8217;&#8221; style=&#8220;position:absolute;left=100;top=100;&#8221; onmousedown=&#8220;doMouseDown();&#8221;&#62;
&#60;a href=&#8220;#&#8221; onclick=&#8220;return false&#8221;&#62;&#60;h1&#62;wlecome&#60;/h1&#62;&#60;/a&#62;
&#60;/div&#62;
&#60;script language=&#8220;JavaScript&#8221; type=&#8220;text/javascript&#8221;&#62;
var orgMouseX;
var orgMouseY;
var orgObjX;
var orgObjY;
function doDrag()
{
var myObject=document.all.myDiv;var x=event.clientX;
var y=event.clientY;
myObject.style.left=x-(orgMouseX-orgObjX);
myObject.style.top=y-(orgMouseY-orgObjY);
 
}
function doMouseDown()
{
orgMouseX=event.clientX;
orgMouseY=event.clientY;
orgObjX=parseInt(document.all.myDiv.style.left);
orgObjY=parseInt(document.all.myDiv.style.top);
}
 
&#60;/script&#62;
//文档状态改变
&#60;iframe src=&#8220;a.html&#8221; id=&#8220;f&#8221; name=&#8220;f&#8221; scrolling=&#8220;no&#8221; frameborder=0 marginwidth=0 marginheight=0&#62;&#60;/iframe&#62;
&#60;script&#62;
var doc=window.frames["f"].document;
function s(){
 if (doc.readyState==&#8220;complete&#8221;){
  document.all.f.style.height=doc.body.scrollHeight
  document.all.f.style.width=doc.body.scrollWidth
 }
}
doc.onreadystatechange=s
&#60;/script&#62;
//刷新后不变的文本框
&#60;HTML&#62;
&#60;HEAD&#62;
&#60;META NAME=&#8220;save&#8221; CONTENT=&#8220;history&#8221;&#62;
&#60;STYLE&#62;
   .sHistory {behavior:url(#default#savehistory);}
&#60;/STYLE&#62;
&#60;/HEAD&#62;
&#60;BODY&#62;
&#60;INPUT class=sHistory type=text id=oPersistInput&#62;
&#60;/BODY&#62;
&#60;/HTML&#62;
//访问剪贴板
(1)拖拽访问
event.dataTransfer.setData(&#8220;URL&#8221;, oImage.src);
sImageURL = event.dataTransfer.getData(&#8220;URL&#8221;)
(2)普通访问
window.clipboardData.setData(&#8220;Text&#8221;,oSource.innerText);
window.clipboardData.getData(&#8220;Text&#8221;);
//操作COOKIE
function SetCookie(sName, sValue)
{
 document.cookie = sName + &#8220;=&#8221; + escape(sValue) + &#8220;; &#8221;;
}
function GetCookie(sName)
{
 var aCookie = document.cookie.split(&#8220;; &#8221;);
 for (var i=0; i &#60; aCookie.length; i++)
 {
  
  var aCrumb = aCookie[i].split(&#8220;=&#8221;);
  if (sName == aCrumb[0]) 
  return unescape(aCrumb[1]);
 }
 
}
function DelCookie(sName)
{
document.cookie = sName + &#8220;=&#8221; + escape(sValue) + &#8220;; expires=Fri, 31 Dec 1999 23:59:59 GMT;&#8221;;
}
//setTimeout增加参数
&#60;script&#62;
var _st = window.setTimeout;
window.setTimeout = function(fRef, mDelay) {
 if(typeof fRef == &#8217;function&#8216;){
  var argu = Array.prototype.slice.call(arguments,2);
  var f = (function(){ fRef.apply(null, argu); });
  return _st(f, mDelay);
 }
 return _st(fRef,mDelay);
}
function test(x){
 alert(x);
}
window.setTimeout(test,1000,&#8217;fason&#8217;);
&#60;/script&#62;
]]></description>
		<wfw:commentRss>http://www.chentaoqian.com/archives/428/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>90个实用的JavaScript小技巧(一)</title>
		<link>http://www.chentaoqian.com/archives/426</link>
		<comments>http://www.chentaoqian.com/archives/426#comments</comments>
		<pubDate>Mon, 06 Jul 2009 14:18:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[技巧]]></category>

		<guid isPermaLink="false">http://www.chentaoqian.com/?p=426</guid>
		<description><![CDATA[90个很实用的JavaScript开发技巧，如果你对JavaScript开发感兴趣，千万别错过了这篇文章。不管你是学习的新手还是开发的老手，这些技巧同样对你有很帮助。
事件源对象
event.srcElement.tagName
event.srcElement.type
捕获释放
event.srcElement.setCapture(); 
event.srcElement.releaseCapture(); 

事件按键
event.keyCode
event.shiftKey
event.altKey
event.ctrlKey
事件返回值
event.returnValue
鼠标位置
event.x
event.y
窗体活动元素
document.activeElement
绑定事件
document.captureEvents(Event.KEYDOWN);
访问窗体元素
document.all(&#8220;txt&#8221;).focus();
document.all(&#8220;txt&#8221;).select();
窗体命令
document.execCommand
窗体COOKIE
document.cookie
菜单事件
document.oncontextmenu
创建元素
document.createElement(&#8220;SPAN&#8221;); 
根据鼠标获得元素：
document.elementFromPoint(event.x,event.y).tagName==&#8221;TD
document.elementFromPoint(event.x,event.y).appendChild(ms) 
窗体图片
document.images[索引]
窗体事件绑定
document.onmousedown=scrollwindow;
元素
document.窗体.elements[索引]
对象绑定事件
document.all.xxx.detachEvent(&#8216;onclick&#8217;,a);
插件数目
navigator.plugins
取变量类型
typeof($js_libpath) == &#8220;undefined&#8221;
下拉框
下拉框.options[索引]
下拉框.options.length
查找对象
document.getElementsByName(&#8220;r1&#8243;);
document.getElementById(id);
定时
timer=setInterval(&#8217;scrollwindow()&#8217;,delay);
clearInterval(timer);
UNCODE编码
escape() ,unescape
父对象
obj.parentElement(dhtml)
obj.parentNode(dom)
交换表的行
TableID.moveRow(2,1)

替换CSS
document.all.csss.href = &#8220;a.css&#8221;;

并排显示
display:inline
隐藏焦点
hidefocus=true
根据宽度换行
style=&#8221;word-break:break-all&#8221;
自动刷新
&#60;meta HTTP-EQUIV=&#8221;refresh&#8221; CONTENT=&#8221;8;URL=http://c98.yeah.net&#8221;&#62;
简单邮件
&#60;a  href=&#8221;mailto:aaa@bbb.com?subject=ccc&#38;body=xxxyyy&#8221;&#62; 
快速转到位置
obj.scrollIntoView(true)
锚
&#60;a name=&#8221;first&#8221;&#62;
&#60;a href=&#8221;#first&#8221;&#62;anchors&#60;/a&#62;
网页传递参数
location.search();
可编辑
obj.contenteditable=true
执行菜单命令
obj.execCommand
双字节字符
/[^\x00-\xff]/
汉字
/[\u4e00-\u9fa5]/
让英文字符串超出表格宽度自动换行
word-wrap: break-word; word-break: break-all;
透明背景
&#60;IFRAME src=&#8221;1.htm&#8221; width=300 height=180 allowtransparency&#62;&#60;/iframe&#62;
获得style内容
obj.style.cssText
HTML标签
document.documentElement.innerHTML
第一个style标签
document.styleSheets[0]
style标签里的第一个样式
document.styleSheets[0].rules[0]
防止点击空链接时，页面往往重置到页首端。
&#60;a href=&#8221;javascript:function()&#8221;&#62;word&#60;/a&#62;
上一网页源
asp:
request.servervariables(&#8220;HTTP_REFERER&#8221;)
javascript:
document.referrer
释放内存
CollectGarbage();
禁止右键
document.oncontextmenu = function() { return false;}
禁止保存
&#60;noscript&#62;&#60;iframe src=&#8221;*.htm&#8221;&#62;&#60;/iframe&#62;&#60;/noscript&#62;
禁止选取&#60;body oncontextmenu=&#8221;return false&#8221; ondragstart=&#8221;return false&#8221; onselectstart =&#8221;return false&#8221; onselect=&#8221;document.selection.empty()&#8221; oncopy=&#8221;document.selection.empty()&#8221; onbeforecopy=&#8221;return false&#8221;onmouseup=&#8221;document.selection.empty()&#62; 
禁止粘贴
&#60;input type=text onpaste=&#8221;return false&#8221;&#62;
地址栏图标
&#60;link rel=&#8221;Shortcut Icon&#8221; href=&#8221;favicon.ico&#8221;&#62;
favicon.ico 名字最好不变16*16的16色,放虚拟目录根目录下
收藏栏图标
&#60;link rel=&#8221;Bookmark&#8221; href=&#8221;favicon.ico&#8221;&#62;
查看源码
&#60;input type=button value=查看网页源代码 onclick=&#8221;window.location = &#8216;view-source:&#8217;+ &#8216;http://www.csdn.net/&#8217;&#8221;&#62;
关闭输入法
&#60;input style=&#8221;ime-mode:disabled&#8221;&#62;
自动全选
&#60;input type=text name=text1 value=&#8221;123&#8243; onfocus=&#8221;this.select()&#8221;&#62;
ENTER键可以让光标移到下一个输入框
&#60;input onkeydown=&#8221;if(event.keyCode==13)event.keyCode=9&#8243;&#62;
文本框的默认值
&#60;input type=text value=&#8221;123&#8243; onfocus=&#8221;alert(this.defaultValue)&#8221;&#62;
title换行
obj.title = &#8220;123&#38;#13sdfs&#38;#32&#8243;
获得时间所代表的微秒
var n1 = new Date(&#8220;2004-10-10&#8243;.replace(/-/g, [...]]]></description>
		<wfw:commentRss>http://www.chentaoqian.com/archives/426/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript配合XML实现内容分页</title>
		<link>http://www.chentaoqian.com/archives/360</link>
		<comments>http://www.chentaoqian.com/archives/360#comments</comments>
		<pubDate>Sat, 20 Jun 2009 15:42:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[分页]]></category>

		<guid isPermaLink="false">http://www.chentaoqian.com/?p=360</guid>
		<description><![CDATA[数据以XML文件为载体，存放在某个XML文件中，使用Javascript对XML文件中的数据内容实现分页显示。示例如下：
&#60;!DOCTYPE html PUBLIC &#8220;-//W3C//DTD XHTML 1.0 Transitional//EN&#8221; &#8220;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&#8220;&#62;
&#60;html xmlns=&#8221;http://www.w3.org/1999/xhtml&#8221; &#62;
&#60;head&#62;
    &#60;title&#62;&#60;/title&#62;
   
&#60;/head&#62;
&#60;body onload=&#8221;getxmlDoc()&#8221;&#62;
&#60;script language=&#8221;javascript&#8221; type=&#8221;text/javascript&#8221;&#62;
var xmlDoc;
var nodeIndex;
var pageIndex;
var pageSize=13;
var lastPage;   //最后一页
var overSize    //最后一页的记录数
function getxmlDoc()
{
  xmlDoc=new ActiveXObject(&#8220;Microsoft.XMLDOM&#8221;);
    var currNode;
    xmlDoc.async=false;
    xmlDoc.load(&#8220;myTest.xml&#8221;);    //导入数据所在的XML文件;
    if(xmlDoc.parseError.errorCode!=0)
    {
        var myErr=xmlDoc.parseError;
        alert(&#8220;出错！&#8221;+myErr.reason);
    }
    getRecordCount();
    onFirst();
   
}
function getRecordCount()
{
    var personNode= xmlDoc.selectNodes(&#8220;/Root&#8221;)[0];
    var recordCount=personNode.childNodes.length;
    var pageCount=Math.ceil(recordCount/pageSize);
    document.getElementById(&#8220;txtPageCount&#8221;).value=pageCount;
    document.getElementById(&#8220;txtRecordCount&#8221;).value=recordCount;
    overSize=recordCount%pageSize;
    if(overSize&#62;0)
    {
        lastPage=recordCount-overSize;
    }
    else
    {
        [...]]]></description>
		<wfw:commentRss>http://www.chentaoqian.com/archives/360/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用Javascript生成XML文档</title>
		<link>http://www.chentaoqian.com/archives/357</link>
		<comments>http://www.chentaoqian.com/archives/357#comments</comments>
		<pubDate>Sat, 20 Jun 2009 15:03:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.chentaoqian.com/?p=357</guid>
		<description><![CDATA[下面是一段用Javascript生成XML文档的实例，本来想提炼出一个XML的API文档，后来找不到它的参数说明，今天也没心情（心神不宁啊，原因看这里）。下次再整理一篇XML API 文档出来，今天先把这个实例放出来，也是教学性质的实例，实用、明了。
&#60;script language=&#8221;javascript&#8221;&#62;
&#60;!&#8211;
var doc = new ActiveXObject(&#8220;Msxml2.DOMDocument&#8221;); //ie5.5+,CreateObject(&#8220;Microsoft.XMLDOM&#8221;) 
//加载文档
//doc.load(&#8220;b.xml&#8221;);
//创建文件头
var p = doc.createProcessingInstruction(&#8220;xml&#8221;,&#8221;version=&#8217;1.0&#8242;  encoding=&#8217;gb2312&#8242;&#8221;);
    //添加文件头
    doc.appendChild(p);
//用于直接加载时获得根接点
//var root = doc.documentElement;
//两种方式创建根接点
//    var root = doc.createElement(&#8220;students&#8221;);
    var root = doc.createNode(1,&#8221;students&#8221;,&#8221;");
    //创建子接点
    var n = doc.createNode(1,&#8221;ttyp&#8221;,&#8221;");
        //指定子接点文本
        //n.text = &#8221; this is a test&#8221;;
    
    //创建孙接点
    var o = doc.createElement(&#8220;sex&#8221;);
        o.text = &#8220;男&#8221;;    //指定其文本
    //创建属性
    var r = doc.createAttribute(&#8220;id&#8221;);
        r.value=&#8221;test&#8221;;
        //添加属性
        [...]]]></description>
		<wfw:commentRss>http://www.chentaoqian.com/archives/357/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>破解鼠标右键菜单屏蔽十一招</title>
		<link>http://www.chentaoqian.com/archives/107</link>
		<comments>http://www.chentaoqian.com/archives/107#comments</comments>
		<pubDate>Fri, 05 Jun 2009 15:56:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[破解]]></category>

		<guid isPermaLink="false">http://www.chentaoqian.com/?p=107</guid>
		<description><![CDATA[现在很多的网页设置了禁用鼠标右键，使很多的人没有办法继续操作，现在教你几招，让你轻松破解网页上的“鼠标右键菜单屏蔽”。
　　破解鼠标右键菜单屏蔽大法一：在网页上任意处将右键按下，等跳出对话框时不要放开右键，将鼠标移至对话框，用鼠标左键点“确定”，在将鼠标移动到想要的连接处，放开右键。 
　　破解鼠标右键菜单屏蔽大法二：同“1”，只是将鼠标移至对话框，用回车去“确认”。
　　破解鼠标右键菜单屏蔽大法三：用组合键“CTRL+F10”。
　　破解鼠标右键菜单屏蔽大法四： 在页面中点击右键，当出现警告窗口时，左手按键盘上的“CTRL+F4”键关闭提示窗口（以上的方法适用于仅禁用而没有隐藏右键菜单的网页）。
　　破解鼠标右键菜单屏蔽大法五：先用鼠标左键进入该页，记录下该页地址，用下载工具“添加新任务”强行下载（该方法适用于可以打开的连接）。
　　破解鼠标右键菜单屏蔽大法六： 同“4”，但是可以查看网页源代码，找到该连接后用下载工具“添加新任务”强行下载（该方法适合比较简单的网页）。
　　破解鼠标右键菜单屏蔽大法七：可以将该网页“另存为”到硬盘上，修改后直接下载（此法适用于有主页基础的人）。
　　破解鼠标右键菜单屏蔽大法八：在IE设置禁用所有的脚本文件，大胆下载后在改回原来的设置（此方法适用于对IE设置较了解的老鸟）。
　　破解鼠标右键菜单屏蔽大法九：直接将想要的图片用左键拖着，然后按下“WIN+D”键，这样一来就可以拖到桌面上保存（此方法适用于单手操作较灵活的同志）。
　　破解鼠标右键菜单屏蔽大法十：查看源代码如果发现用了这样的代码：
　　你可以在地址栏键入：javascript :alert(document.oncontextmenu=&#8221;&#8221;)回车，确定对话框后，直接使用右键。
　　破解鼠标右键菜单屏蔽大法十一：把该网站加入到IE的“受限制站点”（这个是在IE选项的→安全→受限制站点里面添加），这样限制网页中大部分脚本的运行，包括限制右键的脚本，然后刷新一下网页,一般来说就可以了，当然使用这种办法也有可能造成有的网页不能正常浏览，那就只好用上面一条了。
]]></description>
		<wfw:commentRss>http://www.chentaoqian.com/archives/107/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Javascript使用技巧</title>
		<link>http://www.chentaoqian.com/archives/102</link>
		<comments>http://www.chentaoqian.com/archives/102#comments</comments>
		<pubDate>Fri, 05 Jun 2009 15:42:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.chentaoqian.com/?p=102</guid>
		<description><![CDATA[1。一个js文件。
如果其中有对ID的获取操作，最好把代码加载在HTML语言后面。。否则，会产生错误！
原因很简单，html都没有加载，怎么能获取到呢？
但是，如果是特效的话，似乎还是放head区域比较好的！
2。防止表单的重复提交：
&#60;form name=&#8221;form1&#8243; method=&#8221;post&#8221; action=&#8221;" onSubmit=&#8217;submitonce(this)&#8217;&#62;
&#8230;&#8230;..
function submitonce(theform) {
if (document.all&#124;&#124;document.getElementById) {
         for (i=0;i&#60;theform.length;i++) {
         var tempobj=theform.elements[i];
                 if(tempobj.type.toLowerCase()==&#8221;submit&#8221; &#124;&#124; tempobj.type.toLowerCase()==&#8221;reset&#8221;) tempobj.disabled=true;
         }
}
}
3.关于浮动代码和 documentElement / body
常常有人提问，为什么 漂浮广告 / 对联代码 在 xHTML 1.1 DTD 文件头 / FF 下不能使用
这是因为，按照标准来说，我们看到的窗体的滚动条不应该是 body 的，而是 HTML 的（也就是 document.documentElement 对象）
所以，解决办法是，把以前不标准的代码中， document.body.scrollTop 或者类似的代码变换为 document.documentElement.scrollTop
4.让图片支持缩小放大
&#60;script language=&#8221;JavaScript&#8221;&#62;
&#60;!&#8211;
//改变图片大小
function resizepic(thispic)
{
if(thispic.width&#62;700) thispic.width=700;
}
//无级缩放图片大小
function bbimg(o)
{
   var zoom=parseInt(o.style.zoom, 10)&#124;&#124;100;
   zoom+=event.wheelDelta/12;
   if (zoom&#62;0) o.style.zoom=zoom+&#8217;%';
   return false;
}
&#8211;&#62;
&#60;/script&#62;
&#60;P [...]]]></description>
		<wfw:commentRss>http://www.chentaoqian.com/archives/102/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

