﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-灵魂-放水-随笔分类-JavaScript</title><link>http://www.blogjava.net/zqli/category/10337.html</link><description>为学日益，为道日损。</description><language>zh-cn</language><lastBuildDate>Sun, 22 Apr 2007 03:24:07 GMT</lastBuildDate><pubDate>Sun, 22 Apr 2007 03:24:07 GMT</pubDate><ttl>60</ttl><item><title>[转]在JSP中输出Word文件</title><link>http://www.blogjava.net/zqli/archive/2007/04/22/112568.html</link><dc:creator>放水老倌</dc:creator><author>放水老倌</author><pubDate>Sun, 22 Apr 2007 02:51:00 GMT</pubDate><guid>http://www.blogjava.net/zqli/archive/2007/04/22/112568.html</guid><wfw:comment>http://www.blogjava.net/zqli/comments/112568.html</wfw:comment><comments>http://www.blogjava.net/zqli/archive/2007/04/22/112568.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zqli/comments/commentRss/112568.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zqli/services/trackbacks/112568.html</trackback:ping><description><![CDATA[将页面以word文档的格式输出很简单，在JSP中只需要简单两句就行了，示例如下：<br><!---->&nbsp;&nbsp;&nbsp; &lt;%@ page contentType="text/html;charset=GB2312"%&gt;<br>&nbsp;&nbsp;&nbsp; &lt;html&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;head&gt;&lt;title&gt;在JSP中输出Word文件&lt;/title&gt;&lt;/head&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;body&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;p&gt;将页面内容输出为Word文档示例，点击ok按钮即出现提示是否保存选项。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;p&gt;你想将页面保存为Word文档吗？<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;form action="" method="get"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="submit" value="ok" name="submit"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/form&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String str=request.getParameter("submit");//获取按钮的值<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(str.equals("ok"))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setContentType("application/msword;charset=GB2312");//设置以msword格式输出<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;/body&gt;<br>&nbsp;&nbsp; &lt;/html&gt;<img src ="http://www.blogjava.net/zqli/aggbug/112568.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zqli/" target="_blank">放水老倌</a> 2007-04-22 10:51 <a href="http://www.blogjava.net/zqli/archive/2007/04/22/112568.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]如何清空上传控件（&lt;input type="file"/&gt;）的值</title><link>http://www.blogjava.net/zqli/archive/2007/04/20/112226.html</link><dc:creator>放水老倌</dc:creator><author>放水老倌</author><pubDate>Fri, 20 Apr 2007 08:06:00 GMT</pubDate><guid>http://www.blogjava.net/zqli/archive/2007/04/20/112226.html</guid><wfw:comment>http://www.blogjava.net/zqli/comments/112226.html</wfw:comment><comments>http://www.blogjava.net/zqli/archive/2007/04/20/112226.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zqli/comments/commentRss/112226.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zqli/services/trackbacks/112226.html</trackback:ping><description><![CDATA[上传控件（&lt;input type="file"/&gt;）用于在客户端浏览并上传文件，用户选取的路径可以由value属性获取，但value属性是只读的，不能通过javascript来赋值，这就使得不能通过value=""语句来清空它。很容易理解为什么只读，如果可以随意赋值的话，那么用户只要打开你的网页，你就可以随心所欲的上传他电脑上的文件了，呵呵，毕竟表单的submi是可以随便调用的。<br><br>而上传控件又没有一个clear()之类的函数，所以这使得无刷新上传文件显得稍稍不爽，尤其对于追求完美的开发者而言。然而今天在做一个Asp.net控件时却发现不得不需要清空一下上传控件，于是便开始想办法。网上搜索一番，不出所料，没有找到什么结果。关键时刻只能靠自己了。<br><br>仔细想想，上传控件是不是任何时候都不可能被清空呢？答案是否，form.reset()方法能够重置所有得表单元素。只要调用inputFile.form.reset()，那么上传控件的值就清空了，不要担心它被恢复为某个默认值，value是只读的，你不能为它设置某个初始值。<br><br>于是开始设想，如果我只需要reset一下上传控件，怎么解决？其他的表单元素要保持原状。一个可行的方法是，reset之前获取所有的表单域的值，之后再用这些值填充，虽然显得稍微复杂，但借助prototype框架的Form对象提供的方法，还是很容易做到的。这样就能够得到需要的结果了。<br><br>然而这个方法还是不够优雅，沿着思路继续想下去，不难得到改进的方法：创建一个新的form，把上传控件临时放过来，再调用这个form的reset方法，完工之后再把上传控件弄回去。这个form无需进入DOM结构便能正常工作，所以不用担心会对界面有任影响。下面给出函数实现，经过验证工作良好，呵呵。<br>
<div class="codeArea js"><font color=#006600>//清空文件上传框<br></font><font color=#0000ff>function</font>&nbsp;<font color=#000000>clearFileInput</font><font color=#000000>(</font><font color=#000000>file</font><font color=#000000>){</font><br>&nbsp;&nbsp;&nbsp;&nbsp;<font color=#0000ff>var</font>&nbsp;<font color=#000000>form</font><font color=#000000>=</font><font color=#000000>document</font><font color=#000000>.</font><font color=#000000>createElement</font><font color=#000000>(</font><font color=#ff00ff>'form'</font><font color=#000000>);</font><br>&nbsp;&nbsp;&nbsp;&nbsp;<font color=#000000>document</font><font color=#000000>.</font><font color=#000000>body</font><font color=#000000>.</font><font color=#000000>appendChild</font><font color=#000000>(</font><font color=#000000>form</font><font color=#000000>);</font><br>&nbsp;&nbsp;&nbsp;&nbsp;<font color=#006600>//记住file在旧表单中的的位置<br></font>&nbsp;&nbsp;&nbsp;&nbsp;<font color=#0000ff>var</font>&nbsp;<font color=#000000>pos</font><font color=#000000>=</font><font color=#000000>file</font><font color=#000000>.</font><font color=#000000>nextSibling</font><font color=#000000>;</font><br>&nbsp;&nbsp;&nbsp;&nbsp;<font color=#000000>form</font><font color=#000000>.</font><font color=#000000>appendChild</font><font color=#000000>(</font><font color=#000000>file</font><font color=#000000>);</font><br>&nbsp;&nbsp;&nbsp;&nbsp;<font color=#000000>form</font><font color=#000000>.</font><font color=#000000>reset</font><font color=#000000>();</font><br>&nbsp;&nbsp;&nbsp;&nbsp;<font color=#000000>pos</font><font color=#000000>.</font><font color=#000000>parentNode</font><font color=#000000>.</font><font color=#000000>insertBefore</font><font color=#000000>(</font><font color=#000000>file</font><font color=#000000>,</font><font color=#000000>pos</font><font color=#000000>);</font><br>&nbsp;&nbsp;&nbsp;&nbsp;<font color=#000000>document</font><font color=#000000>.</font><font color=#000000>body</font><font color=#000000>.</font><font color=#000000>removeChild</font><font color=#000000>(</font><font color=#000000>form</font><font color=#000000>);</font><br><font color=#000000>}</font></div>
<img src ="http://www.blogjava.net/zqli/aggbug/112226.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zqli/" target="_blank">放水老倌</a> 2007-04-20 16:06 <a href="http://www.blogjava.net/zqli/archive/2007/04/20/112226.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]用javascript实现html页面之间的参数传递 </title><link>http://www.blogjava.net/zqli/archive/2007/02/04/97893.html</link><dc:creator>放水老倌</dc:creator><author>放水老倌</author><pubDate>Sun, 04 Feb 2007 14:46:00 GMT</pubDate><guid>http://www.blogjava.net/zqli/archive/2007/02/04/97893.html</guid><wfw:comment>http://www.blogjava.net/zqli/comments/97893.html</wfw:comment><comments>http://www.blogjava.net/zqli/archive/2007/02/04/97893.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zqli/comments/commentRss/97893.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zqli/services/trackbacks/97893.html</trackback:ping><description><![CDATA[
		<p>=========================================================</p>
		<p>声明：</p>
		<p>       作者：纪国瑞 <a href="http://www.cscenter.com.cn/">华北电力大学控制系统中心</a></p>
		<p>       要转载此文，必须包含本声明，并不得修改本声明。 </p>
		<p>=========================================================</p>
		<p>       </p>
		<p>我们知道，在服务器端asp程序可以接受html页面上的form传来的参数。</p>
		<p>那么，可不可以传递参数给html页面呢。可以。</p>
		<p>下面是javascript的一种实现方法, 这个函数是通过window.location.href中的分割符获得各个参数。</p>
		<p>有了这个函数，就可以在页面之间传递参数了。</p>
		<p>/*<br /> *函数功能：从href获得参数<br /> *sHref:   <a href="http://www.cscenter.com.cn/arg.htm?arg1=d&amp;arg2=re">http://www.cscenter.com.cn/arg.htm?arg1=d&amp;arg2=re</a><br /> *sArgName:arg1, arg2<br /> *return:  the value of arg. d, re<br /> */<br />function GetArgsFromHref(sHref, sArgName)<br />{<br />    var args  = sHref.split("?");<br />    var retval = "";<br />    <br />    if(args[0] == sHref) /*参数为空*/<br />    {<br />         return retval; /*无需做任何处理*/<br />    }  <br />    var str = args[1];<br />    args = str.split("&amp;");<br />    for(var i = 0; i &lt; args.length; i ++)<br />    {<br />        str = args[i];<br />        var arg = str.split("=");<br />        if(arg.length &lt;= 1) continue;<br />        if(arg[0] == sArgName) retval = arg[1]; <br />    }<br />    return retval;<br />}</p>
<img src ="http://www.blogjava.net/zqli/aggbug/97893.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zqli/" target="_blank">放水老倌</a> 2007-02-04 22:46 <a href="http://www.blogjava.net/zqli/archive/2007/02/04/97893.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]Visual WebGui 基于ajax的界面框架 </title><link>http://www.blogjava.net/zqli/archive/2007/02/04/97836.html</link><dc:creator>放水老倌</dc:creator><author>放水老倌</author><pubDate>Sun, 04 Feb 2007 01:34:00 GMT</pubDate><guid>http://www.blogjava.net/zqli/archive/2007/02/04/97836.html</guid><wfw:comment>http://www.blogjava.net/zqli/comments/97836.html</wfw:comment><comments>http://www.blogjava.net/zqli/archive/2007/02/04/97836.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zqli/comments/commentRss/97836.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zqli/services/trackbacks/97836.html</trackback:ping><description><![CDATA[
		<p>Visual WebGui 是一个基于ajax的界面框架 ，他是基于.net的，自称是google gwt的.net对手，功能很全，也很漂亮。可以作为界面设计的参考！</p>
		<p>
				<a href="http://www.visualwebgui.com/tutorials/How_to_create_2in1_applications.html">
						<img height="328" alt="Visual Web Gui" src="http://ajaxian.com/wp-content/images/visualwebgui.png" width="580" border="0" />
				</a>
		</p>
		<p>项目主页：<a href="http://www.visualwebgui.com/">http://www.visualwebgui.com/</a></p>
		<p>测试页面：<a href="http://samples.visualwebgui.com/MainForm.wgx">http://samples.visualwebgui.com/MainForm.wgx</a></p>
<img src ="http://www.blogjava.net/zqli/aggbug/97836.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zqli/" target="_blank">放水老倌</a> 2007-02-04 09:34 <a href="http://www.blogjava.net/zqli/archive/2007/02/04/97836.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]在HTML网页中巧用URL </title><link>http://www.blogjava.net/zqli/archive/2006/12/18/88630.html</link><dc:creator>放水老倌</dc:creator><author>放水老倌</author><pubDate>Mon, 18 Dec 2006 12:32:00 GMT</pubDate><guid>http://www.blogjava.net/zqli/archive/2006/12/18/88630.html</guid><wfw:comment>http://www.blogjava.net/zqli/comments/88630.html</wfw:comment><comments>http://www.blogjava.net/zqli/archive/2006/12/18/88630.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zqli/comments/commentRss/88630.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zqli/services/trackbacks/88630.html</trackback:ping><description><![CDATA[
		<p>出处:http://blog.csdn.net/21aspnet/archive/2005/03/15/320329.aspx<br /><a href="http://www.cnbruce.com/blog/showlog.asp?cat_id=5&amp;log_id=657">http://www.cnbruce.com/blog/showlog.asp?cat_id=5&amp;log_id=657</a></p>
		<p>首先，先放出一个地址给大家测试<br /><br /><a href="http://cnbruce.com/test/htmlpro/?name=cnbruce&amp;email=cnbruce@126.com" target="_blank">http://cnbruce.com/test/htmlpro/?name=cnbruce&amp;email=cnbruce@126.com</a><br /><br />1，时下流行的（可能是吧，因为最近问的人比较多）就是没有任何文件名的URL地址。比如htmlpro/?其实这和服务器设置的默认文件名有关，比如index.htm，index.html，index.asp等等，不信你试试我朋友的一个（asp的）。<br /><br /><a href="http://www.windsn.com/blog/?viewType=byCate&amp;cateID=3" target="_blank">http://www.windsn.com/blog/?viewType=byCate&amp;cateID=3</a><br /><br />2，本处的文件为index.html，同时后面带有参数，页面效果如同ASP一般提取信息内容。<br /><br />如下是转载的文章（作者刘筱）可以说明些东西<br /><br /><br />经常上网的朋友肯定对“ <a href="http://host/***.asp?arg1=*&amp;arg2=*" target="_blank">http://host/***.asp?arg1=*&amp;arg2=*</a>  ”之类的URL(即网址)不会陌生。这类网址的作用就是通过在URL后面附加信息内容来传递相关信息给远程Web服务器，并在Web服务器进行适当处理后将结果返回给客户端，从而达到网页交互的目的，并实现网页内容动态化。(注意: URL与信息内容之间通过“?”连接，各内容字段之间则通过字符“&amp;”来分隔，每个字段的名称/取值表示为“名称=取值”形式。)但通过这种方式实现的动态网页均需要服务器端编程技术的支持，最近笔者在制作个人网站时利用浏览器支持的DHTML和XML技术，经过不断尝试，在免费主页空间通过这种方式实现动态网页。<br /><br /><strong>一、原理分析</strong><br /><br />当浏览器通过<a href="http://remotehost/program?querystring" target="_blank">http://remotehost/program?querystring</a>  这种方式请求Web服务器时，Web服务器将对请求地址的URL进行解析，把“?”后面的querystring字符串存入服务器特定环境变量，然后调用服务器端编程执行环境，如ASP(Activex Server Page)等对请求program文件进行处理。<br /><br />具体调用何种编程执行环境依据服务器的设置而定，如果请求的文档是asp类型的文件，则调用ASP，如是aspx类型文件，则调用ASP.NET。在program文件中则可以通过一定方法来读取环境变量，如asp文件就可以通过Reques.Querystring数据集合来读取环境变量。编程执行环境处理完毕后将结果返回给Web服务器，Web服务器再将结果返回给浏览器，从而达到网页内容动态化的目的。<br /><br />通过上述分析我们可以知道，如果使用<a href="http://remotehost/*.htm?querystring" target="_blank">http://remotehost/*.htm?querystring</a>  方式向Web服务器发送请求时，Web服务器将向浏览器直接返回请求的HTML网页。这时我们就可以在网页中利用Location.href属性获得附加了信息内容的URL串，经过适当处理后就可以得到所附加的信息内容字段名称及其取值，再通过浏览器支持的DHTML特性进行处理，就可以实现网页内容动态化，从而在不支持服务器端编程技术的免费主页空间上达到网页交互的目的。<br /><br />我们也可以看出，通过这种方式达到网页动态交互的目的即使是在浏览器中实现也仍然摆脱不了Web服务器的支持，否则浏览器将把“?querystring”作为请求的URL的一部分，从而出现网页不能查看的错误提示。<br /><br /><strong>二、应用示例</strong><br /><br />---下面给出了一个带有详细注释的具体示例源代码。注意: querystring.js是一个实用程序，它可以在网页中直接引用，然后在网页中使用Request[“名称”]即可获取用户输入的有关信息内容。<br /><br />1.querystring.js源代码<br /><br /></p>
		<table cellspacing="1" width="100%" bgcolor="#cccccc" border="0">
				<tbody>
						<tr>
								<td bgcolor="#efefef">
										<br />function QueryString()<br />{//构造参数对象并初始化<br />var name,value,i;<br />var str=location.href;//获得浏览器地址栏URL串<br />var num=str.indexOf("?")<br />str=str.substr(num+1);//截取“?”后面的参数串<br />var arrtmp=str.split("&amp;");//将各参数分离形成参数数组<br />for(i=0;i &lt; arrtmp.length;i++){<br />num=arrtmp[i].indexOf("=");<br />if(num&gt;0){<br />name=arrtmp[i].substring(0,num);//取得参数名称<br />value=arrtmp[i].substr(num+1);//取得参数值<br />this[name]=value;//定义对象属性并初始化<br />}<br />}<br />}<br />var Request=new QueryString();//使用new运算符创建参数对象实例<br /><br /></td>
						</tr>
				</tbody>
		</table>
		<br />2.Sample.htm源代码<br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />&lt;Html&gt;<br />&lt;Head&gt;<br />&lt;Meta http-equiv="Content-Type"content="text/html; charset=gb2312" &gt;<br />&lt;Title&gt;示例&lt;/Title&gt;<br />&lt;script src="Querystring.js"&gt;&lt;/script&gt;<br />&lt;/Head &gt;<br />&lt;Body&gt;<br />&lt;script&gt;<br />var newElement=document.createElement("div");//创建div对象<br />var str="&lt;u&gt;"+Request["name"]+"&lt;/u&gt;,欢迎光临!&lt;br&gt;您的E-mail是:&lt;u&gt;"+Request["email"]+"&lt;/u&gt;";//利用实例["字段名称"]获取参数内容<br />newElement.innerHTML=str;<br />document.body.appendChild(newElement);//向文档添加div对象<br />&lt;/script&gt;<br />&lt;/Body&gt;<br />&lt;/Html&gt;<br /><br /></td></tr></tbody></table><br /><br />如果对该示例应用DHTML与XML技术进行扩充，将会取得不可思议的效果。该作者就是通过这种途径在只支持纯HTML的主页空间建立了一个相当不错的动态图片查看器<br /><br />所以，各位，实践下咯。<br /> <img src ="http://www.blogjava.net/zqli/aggbug/88630.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zqli/" target="_blank">放水老倌</a> 2006-12-18 20:32 <a href="http://www.blogjava.net/zqli/archive/2006/12/18/88630.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>写一个动态增删表格的实例。</title><link>http://www.blogjava.net/zqli/archive/2006/12/18/88556.html</link><dc:creator>放水老倌</dc:creator><author>放水老倌</author><pubDate>Mon, 18 Dec 2006 07:17:00 GMT</pubDate><guid>http://www.blogjava.net/zqli/archive/2006/12/18/88556.html</guid><wfw:comment>http://www.blogjava.net/zqli/comments/88556.html</wfw:comment><comments>http://www.blogjava.net/zqli/archive/2006/12/18/88556.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zqli/comments/commentRss/88556.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zqli/services/trackbacks/88556.html</trackback:ping><description><![CDATA[
		<p>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "<a href="http://www.w3.org/TR/html4/loose.dtd">http://www.w3.org/TR/html4/loose.dtd</a>"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;动态增删表格行&lt;/title&gt;<br />&lt;script language="JavaScript"&gt;<br />&lt;!--<br />//author: Robin<br />//email: <a href="mailto:binluo@expervision.com.cn">binluo@expervision.com.cn</a><br />var rowIndex=0;<br />function addLine(obj){<br />var objSourceRow=obj.parentNode.parentNode;<br />var objTable=obj.parentNode.parentNode.parentNode.parentNode;<br />if(obj.value=='增加详细伤亡人员信息'){<br />rowIndex++;<br />var objRow=objTable.insertRow(rowIndex);<br />var objCell;<br />for(i=0;i&lt;18;i++){<br />objCell=objRow.insertCell(i);<br />objCell.innerHTML=objSourceRow.cells[i].innerHTML; </p>
		<p>}</p>
		<p>objCell=objRow.insertCell(18);<br />objCell.innerHTML=objSourceRow.cells[18].innerHTML.replace(/增加详细伤亡人员信息/,'删除');<br />}<br />else{<br />objTable.lastChild.removeChild(objSourceRow);<br />rowIndex--;<br />} <br />}</p>
		<p>function removeLine(){</p>
		<p>}</p>
		<p>//--&gt;<br />&lt;/script&gt;<br />&lt;/head&gt;<br />&lt;body bgcolor="#ffffff"&gt;<br />&lt;form name="form1" method="post"&gt;<br />&lt;table width="100%" border="1" class="tableBorder" align=center &gt;<br />      &lt;tr align="center"&gt;<br />        &lt;td height="56" class=forumrow style="display:none"&gt;姓名&lt;/td&gt;<br />        &lt;td colspan="3" class=forumrow style="display:none" &gt;<br />          &lt;input  type="text" name="casualtyName" size="8"/&gt;<br />        &lt;/td&gt;<br />        &lt;td  class=forumrow style="display:none"&gt;性别&lt;/td&gt;<br />        &lt;td class=forumrow style="display:none"&gt;<br />          &lt;input  type="radio" value="male" name="sex"/ size="5"&gt;<br />          男<br />          &lt;input  type="radio" value="female" name="sex" size="5"/&gt;<br />          女<br />        &lt;/td&gt;<br />        &lt;td  class=forumrow style="display:none"&gt;用工形式&lt;/td&gt;<br />        &lt;td  class=forumrow style="display:none"&gt;<br />          &lt;select name="useForm"&gt;<br />            &lt;option value="FORMAL_WORKER" selected&gt;正式工&lt;/option&gt;<br />            &lt;option value="CONTRACT_WORKER"&gt;合同工&lt;/option&gt;<br />            &lt;option value="TEMP_WORKER"&gt;临时工&lt;/option&gt;<br />          &lt;/select&gt;<br />        &lt;/td&gt;<br />        &lt;td class=forumrow style="display:none"&gt;工种&lt;/td&gt;<br />        &lt;td  class=forumrow style="display:none"&gt;<br />          &lt;select name="useKind"&gt;<br />            &lt;option value="MANAGER" selected&gt;管理人员&lt;/option&gt;<br />            &lt;option value="MU_GONG"&gt;木工&lt;/option&gt;<br />            &lt;option value="WA_GONG"&gt;瓦工&lt;/option&gt;<br />            &lt;option value="JIA_ZI_GONG"&gt;架子工&lt;/option&gt;<br />            &lt;option value="GANG_JIN_GONG"&gt;钢筋工&lt;/option&gt;<br />            &lt;option value="HUN_NING_TU_GONG"&gt;混凝土工&lt;/option&gt;<br />            &lt;option value="MO_HUI_GONG"&gt;抹灰工&lt;/option&gt;<br />            &lt;option value="JI_XIE_GONG"&gt;机械工&lt;/option&gt;<br />            &lt;option value="DIAN_GONG"&gt;电工&lt;/option&gt;<br />            &lt;option value="DIAN_HAN_GONG"&gt;电焊工&lt;/option&gt;<br />            &lt;option value="GUAN_GONG"&gt;管工&lt;/option&gt;<br />            &lt;option value="QIAN_GONG"&gt;钳工&lt;/option&gt;<br />            &lt;option value="YOU_QI_GONG"&gt;油漆工&lt;/option&gt;<br />            &lt;option value="FAN_SHUI_GONG"&gt;防水工&lt;/option&gt;<br />            &lt;option value="TONG_FENG_GONG"&gt;通风工&lt;/option&gt;<br />            &lt;option value="DIAO_ZHUANG_GONG"&gt;吊装工&lt;/option&gt;<br />            &lt;option value="BAN_YUN_GONG"&gt;搬运工&lt;/option&gt;<br />            &lt;option value="LI_GONG"&gt;力工&lt;/option&gt;<br />            &lt;option value="QIN_ZHA_GONG"&gt;勤杂工&lt;/option&gt;<br />          &lt;/select&gt;<br />        &lt;/td&gt;<br />        &lt;td class=forumrow style="display:none"&gt;年龄&lt;/td&gt;<br />        &lt;td class=forumrow style="display:none"&gt;<br />          &lt;input type="text" name="age" size="4"/&gt;<br />        &lt;/td&gt;<br />        &lt;td  class=forumrow style="display:none"&gt;从业时间&lt;/td&gt;<br />        &lt;td colspan="3" class=forumrow style="display:none"&gt;<br />          &lt;input type="text" name="workTime"  size="4"/&gt;<br />        &lt;/td&gt;<br />        &lt;td  class=forumrow style="display:none"&gt;文化程度&lt;/td&gt;<br />        &lt;td  class=forumrow style="display:none"&gt;<br />          &lt;select name="education"&gt;<br />            &lt;option value="ELEMENTORY_SCHOOL" selected&gt;小学及以下&lt;/option&gt;<br />            &lt;option value="JUNIOR_HIGH_SCHOOL"&gt;初中&lt;/option&gt;<br />            &lt;option value="SENIOR_HIGH_SCHOOL"&gt;高中/中专&lt;/option&gt;<br />            &lt;option value="COLLEGE"&gt;大专&lt;/option&gt;<br />            &lt;option value="GRADUATE"&gt;大专以上&lt;/option&gt;<br />          &lt;/select&gt;<br />        &lt;/td&gt;<br />        &lt;td class=forumrow style="display:none"&gt;承包形式&lt;/td&gt;<br />        &lt;td colspan="3" class=forumrow style="display:none"&gt;<br />          &lt;select name="contractTypeDetail"&gt;<br />            &lt;option value="ZONG_CHENG_BAO"&gt;总承包&lt;/option&gt;<br />            &lt;option value="ZHUAN_YE_FEN_BAO"&gt;专业分包&lt;/option&gt;<br />            &lt;option value="LAO_WU_FEN_BAO"&gt;劳务分包&lt;/option&gt;<br />          &lt;/select&gt;<br />        &lt;/td&gt;<br />        &lt;td  class=forumrow style="display:none"&gt;伤亡情况&lt;/td&gt;<br />        &lt;td  class=forumrow style="display:none"&gt;<br />          &lt;select name="casualtyInfo"&gt;<br />            &lt;option value="LIGHT_HURT" selected&gt;轻伤&lt;/option&gt;<br />            &lt;option value="HEAVEY_HURT"&gt;重伤&lt;/option&gt;<br />            &lt;option value="DIE"&gt;死亡&lt;/option&gt;<br />          &lt;/select&gt;<br />        &lt;/td&gt;<br />    &lt;td&gt;&lt;input name="add" type="button" id="add" value="增加详细伤亡人员信息" onClick="addLine(this)"&gt;&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;/table&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
<img src ="http://www.blogjava.net/zqli/aggbug/88556.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zqli/" target="_blank">放水老倌</a> 2006-12-18 15:17 <a href="http://www.blogjava.net/zqli/archive/2006/12/18/88556.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>动态增删表格行</title><link>http://www.blogjava.net/zqli/archive/2006/12/18/88511.html</link><dc:creator>放水老倌</dc:creator><author>放水老倌</author><pubDate>Mon, 18 Dec 2006 05:36:00 GMT</pubDate><guid>http://www.blogjava.net/zqli/archive/2006/12/18/88511.html</guid><wfw:comment>http://www.blogjava.net/zqli/comments/88511.html</wfw:comment><comments>http://www.blogjava.net/zqli/archive/2006/12/18/88511.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zqli/comments/commentRss/88511.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zqli/services/trackbacks/88511.html</trackback:ping><description><![CDATA[
		<p>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "<a href="http://www.w3.org/TR/html4/loose.dtd">http://www.w3.org/TR/html4/loose.dtd</a>"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;动态增删表格行&lt;/title&gt;<br />&lt;script language="JavaScript"&gt;<br />&lt;!--<br />//author: Robin<br />//email: <a href="mailto:binluo@expervision.com.cn">binluo@expervision.com.cn</a><br />var rowIndex=0;<br />function addLine(obj){<br />var objSourceRow=obj.parentNode.parentNode;<br />var objTable=obj.parentNode.parentNode.parentNode.parentNode;<br />if(obj.value=='增加'){<br />rowIndex++;<br />var objRow=objTable.insertRow(rowIndex);<br />var objCell;</p>
		<p>objCell=objRow.insertCell(0);<br />objCell.innerHTML=objSourceRow.cells[0].innerHTML; <br />objCell=objRow.insertCell(1);<br />objCell.innerHTML=objSourceRow.cells[1].innerHTML;</p>
		<p>objCell=objRow.insertCell(2);<br />objCell.innerHTML=objSourceRow.cells[2].innerHTML.replace(/增加/,'删除');<br />}<br />else{<br />objTable.lastChild.removeChild(objSourceRow);<br />rowIndex--;<br />} <br />}</p>
		<p>function removeLine(){</p>
		<p>}</p>
		<p>//--&gt;<br />&lt;/script&gt;<br />&lt;/head&gt;<br />&lt;body bgcolor="#ffffff"&gt;<br />&lt;form name="form1" method="post"&gt;<br />&lt;table width="400" border="0"&gt;<br />&lt;tr&gt;<br />&lt;td&gt;基本信息&lt;/td&gt;<br />&lt;td&gt;&lt;select name="select"&gt;<br />&lt;option value="" selected&gt;选择&lt;/option&gt;<br />&lt;option value="1"&gt;第一&lt;/option&gt;<br />&lt;option value="2"&gt;第二&lt;/option&gt;<br />&lt;/select&gt;&lt;/td&gt;<br />&lt;td&gt;&lt;input name="basicinfo" type="text" id="basicinfo"&gt;<br />&lt;input name="add" type="button" id="add" value="增加" onClick="addLine(this)"&gt;&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;/table&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br /></p>
<img src ="http://www.blogjava.net/zqli/aggbug/88511.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zqli/" target="_blank">放水老倌</a> 2006-12-18 13:36 <a href="http://www.blogjava.net/zqli/archive/2006/12/18/88511.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>动态增删"内容"的Javascript代码。</title><link>http://www.blogjava.net/zqli/archive/2006/12/17/88324.html</link><dc:creator>放水老倌</dc:creator><author>放水老倌</author><pubDate>Sun, 17 Dec 2006 03:32:00 GMT</pubDate><guid>http://www.blogjava.net/zqli/archive/2006/12/17/88324.html</guid><wfw:comment>http://www.blogjava.net/zqli/comments/88324.html</wfw:comment><comments>http://www.blogjava.net/zqli/archive/2006/12/17/88324.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zqli/comments/commentRss/88324.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zqli/services/trackbacks/88324.html</trackback:ping><description><![CDATA[
		<p>收集：<br /><br />&lt;HTML&gt;<br />&lt;SCRIPT LANGUAGE="javascript"&gt;</p>
		<p>var count = 0; //count the number of rows</p>
		<p>function tb_addnew() //添加行<br />{<br />var ls_t=document.all("mytable")<br />maxcell=ls_t.rows(0).cells.length; //取得表宽<br />mynewrow = ls_t.insertRow(); //插入新行<br />    for(i=0;i&lt;maxcell;i++)<br />    {<br />    mynewcell=mynewrow.insertCell(); //在新行中顺序插入表格单元<br />    mynewcell.innerHTML = "&lt;input name='row"+count+"' value = 'row"+count+"'&gt;"//在表格单元中添加文本输入框<br /> //值存在一个隐藏表单域中，以便提交时使用，使用数组方法接收值<br />    }<br /> count++;<br />}</p>
		<p>function tb_delete() //删除行<br />{<br />var ls_t=document.all("mytable");</p>
		<p>if(count &gt;  0)<br /> {<br /> ls_t.deleteRow() ; //删除最末一行<br /> count--;<br /> }<br />}</p>
		<p>&lt;/SCRIPT&gt;<br />&lt;BODY&gt;<br />&lt;TABLE id=mytable border=1&gt;<br /> &lt;TR&gt;&lt;TH&gt;第一列&lt;/TH&gt;&lt;TH&gt;第二列&lt;/TH&gt;&lt;TH&gt;第三列&lt;/TH&gt;&lt;TH&gt;第四列&lt;/TH&gt;&lt;/TR&gt;<br />&lt;/TABLE&gt;<br /> &lt;input type=button value="新增" onclick="tb_addnew()"&gt;<br /> &lt;input type=button value="删除" onclick="tb_delete()" &gt;<br />&lt;/BODY&gt;<br />&lt;/HTML&gt;<br /> <br /><font size="2">1，动态删除Table 里面内容技巧，不需要写太多代码，一行：<br />tb.removeNode(true)<br /><br />2,动态增加行,除了CreateElement方法，还可以这样比较短小：<br /><br />&lt;table id=tb1&gt;&lt;/table&gt;<br />&lt;SCRIPT&gt;<br />function addTable(){<br />  var row1 = tb1.insertRow(); <br />  var cell1=row1.insertCell();<br />  var cell2=row1.insertCell();<br />  cell1.innerText="灰豆宝宝";<br />  cell2.innerText="超级大笨狼"<br />}<br />&lt;/SCRIPT&gt; <br />&lt;INPUT TYPE = "button" VALUE = "AddTable" onclick = "addTable()"&gt;<br /><br />3，在DIV中动态增加Table<br /><br />&lt;SCRIPT&gt;<br />function addTable(){<br />  var tb1 = document.createElement("table");<br />  tb1.border="1px";<br />  var row1 = tb1.insertRow(); <br />  var cell1=row1.insertCell();<br />  var cell2=row1.insertCell();<br />  mydiv.appendChild(tb1);<br />  cell1.innerText="wanghr100";<br />  cell2.innerText="panyuguang962"<br />}<br />&lt;/SCRIPT&gt;<br />&lt;BODY&gt;<br />&lt;div id=mydiv style="width:400;height:300;"&gt;&lt;/div&gt;<br />&lt;INPUT TYPE = "button" VALUE = "AddTable" onclick = "addTable()"&gt;<br /><br />4,在DIV中删除Table，简单只要Div.innerHTML=""就可以。<br /><br />以上是部分实用相对短小的代码，当然有其他各种办法实现，不过一般都比上面的长，比如组合使用DIV对象的insertAdjacentHTML 方法等，在不同需要下使用不同方法，前提是研究好浏览器模型 的各种对象的方法属性。尤其是熟悉CSS+HTML就会做的很酷。就JS语言本身来说要求不高。<br /><br />以下是以Document对象为例，相关方法有：<br /><br />Method Description <br />attachEvent <br />createAttribute   <br />createComment   <br />createDocumentFragment <br />createElement <br />createEventObject <br />createStyleSheet <br />createTextNode <br />detachEvent <br />getElementById   <br />getElementsByName <br />getElementsByTagName <br />mergeAttributes<br />recalc <br />write   <br />writeln <br />以DIV对象为例相关方法有：<br />addBehavior <br />appendChild <br />applyElement <br />attachEvent <br />clearAttributes<br />cloneNode <br />contains <br />detachEvent<br />getAdjacentText   <br />getAttribute   <br />getAttributeNode <br />getElementsByTagName <br />hasChildNodes <br />insertAdjacentElement <br />insertAdjacentHTML <br />insertAdjacentText <br />insertBefore<br />mergeAttributes <br />normalize<br />removeAttribute <br />removeAttributeNode   <br />removeBehavior <br />removeChild <br />removeExpression <br />removeNode <br />replaceAdjacentText <br />replaceChild <br />replaceNode <br />setActive <br />setAttribute <br />setAttributeNode <br />setExpression   <br /><br />其他，比如下拉列表对象，和拖拽操作等我有时间也整理比较一下，实现相同功能，相对比较短的精彩代码是值得收藏的。<br /><br /><br />1. removeNode(true) 非IE浏览器不支持的，应该用 obj.parentNode.removeChild(obj);<br />2. insertRow(x) insertCell(y) 这个参数是IE里是可以缺省，但是在非IE浏览器里不可缺省<br /><br /><br />&lt;SCRIPT&gt;<br />function addTable(){<br />  var tb1 = document.createElement("TABLE");<br />  tb1.border="1px";<br />  var row1 = tb1.insertRow(0); <br />  var cell1=row1.insertCell(0);<br />  var cell2=row1.insertCell(1);<br />  document.getElementById("mydiv").appendChild(tb1);<br />  cell1.innerHTML="wanghr100";<br />  cell2.innerHTML="panyuguang962";<br />  row1.insertCell(2).innerHTML="要注意：给的例子要考虑全面";<br />}<br />&lt;/SCRIPT&gt;<br />&lt;BODY&gt;<br />&lt;div id="mydiv" style="width:400;height:300;"&gt;&lt;/div&gt;<br />&lt;INPUT TYPE = "button" VALUE = "AddTable" onclick = "addTable()"&gt;</font><br /></p>
<img src ="http://www.blogjava.net/zqli/aggbug/88324.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zqli/" target="_blank">放水老倌</a> 2006-12-17 11:32 <a href="http://www.blogjava.net/zqli/archive/2006/12/17/88324.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]网页打印问题，打印设置，打印预览，打印分页，纵打，横打及页面的边距。</title><link>http://www.blogjava.net/zqli/archive/2006/12/14/87692.html</link><dc:creator>放水老倌</dc:creator><author>放水老倌</author><pubDate>Thu, 14 Dec 2006 05:54:00 GMT</pubDate><guid>http://www.blogjava.net/zqli/archive/2006/12/14/87692.html</guid><wfw:comment>http://www.blogjava.net/zqli/comments/87692.html</wfw:comment><comments>http://www.blogjava.net/zqli/archive/2006/12/14/87692.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zqli/comments/commentRss/87692.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zqli/services/trackbacks/87692.html</trackback:ping><description><![CDATA[
		<div class="postbody">
				<p>1、控制"纵打"、 横打”和“页面的边距 <br />（1) <br />&lt;object  id="factory"  style="display:none"  viewastext  classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"  <br />codebase="<a href="http://www.meadroid.com/scriptx/ScriptX.cab#Version=5,60,0,360&quot;&gt;&lt;/object">http://www.meadroid.com/scriptx/ScriptX.cab#Version=5,60,0,360"&gt;&lt;/object</a>&gt; <br />&lt;script defer&gt; <br />function SetPrintSettings() { <br />// -- advanced features <br />factory.printing.SetMarginMeasure(2) // measure margins in inches <br />factory.SetPageRange(false, 1, 3) // need pages from 1 to 3 <br />factory.printing.printer = "HP DeskJet 870C" <br />factory.printing.copies = 2 <br />factory.printing.collate = true <br />factory.printing.paperSize = "A4" <br />factory.printing.paperSource = "Manual feed" </p>
				<p>// -- basic features <br />factory.printing.header = "This is MeadCo" <br />factory.printing.footer = "Advanced Printing by ScriptX" <br />factory.printing.portrait = false <br />factory.printing.leftMargin = 1.0 <br />factory.printing.topMargin = 1.0 <br />factory.printing.rightMargin = 1.0 <br />factory.printing.bottomMargin = 1.0 <br />} <br />&lt;/script&gt; </p>
				<p>（2） <br />&lt;script language="javascript"&gt; <br />    function printsetup(){ <br />    // 打印页面设置 <br />    wb.execwb(8,1); <br />    } <br />    function printpreview(){ <br />    // 打印页面预览 </p>
				<p>    wb.execwb(7,1); </p>
				<p>
						<br />    } </p>
				<p>    function printit() <br />    { <br />    if (confirm('确定打印吗？')) { <br />    wb.execwb(6,6) <br />    } <br />    } <br />    &lt;/script&gt; <br />&lt;/head&gt; <br />&lt;body&gt; <br />&lt;OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" </p>
				<p>height=0 id=wb name=wb width=0&gt;&lt;/OBJECT&gt; <br />&lt;input type=button name=button_print value="打印" </p>
				<p>onclick="javascriptrintit()"&gt; <br />&lt;input type=button name=button_setup value="打印页面设置" </p>
				<p>onclick="javascriptrintsetup();"&gt; <br />&lt;input type=button name=button_show value="打印预览" </p>
				<p>onclick="javascriptrintpreview();"&gt; <br />&lt;input type=button name=button_fh value="关闭" </p>
				<p>onclick="javascript:window.close();"&gt; </p>
				<p>------------------------------------------------ <br />关于这个组件还有其他的用法，列举如下： <br />WebBrowser.ExecWB(1,1) 打开 <br />Web.ExecWB(2,1) 关闭现在所有的IE窗口，并打开一个新窗口 <br />Web.ExecWB(4,1) 保存网页 <br />Web.ExecWB(6,1) 打印 <br />Web.ExecWB(7,1) 打印预览 <br />Web.ExecWB(8,1) 打印页面设置 <br />Web.ExecWB(10,1) 查看页面属性 <br />Web.ExecWB(15,1) 好像是撤销，有待确认 <br />Web.ExecWB(17,1) 全选 <br />Web.ExecWB(22,1) 刷新 <br />Web.ExecWB(45,1) 关闭窗体无提示 </p>
				<p>2、分页打印 <br />&lt;HTML&gt; <br />&lt;HEAD&gt; <br />&lt;STYLE&gt;    <br />    P {page-break-after: always} <br />&lt;/STYLE&gt; <br />&lt;/HEAD&gt; <br />&lt;BODY&gt; <br />&lt;%while not rs.eof%&gt; <br />&lt;P&gt;&lt;%=rs(0)%&gt;&lt;/P&gt; <br />&lt;%rs.movenext%&gt; <br />&lt;%wend%&gt; <br />&lt;/BODY&gt; <br />&lt;/HTML&gt; </p>
				<p>3、ASP页面打印时如何去掉页面底部的路径和顶端的页码编号 <br />（1）ie的文件-〉页面设置-〉讲里面的页眉和页脚里面的东西都去掉，打印就不出来了。 <br />（2）&lt;HTML&gt; <br />&lt;HEAD&gt; <br />&lt;TITLE&gt; New Document &lt;/TITLE&gt; <br />&lt;META NAME="Generator" CONTENT="EditPlus"&gt; <br />&lt;META NAME="Author" CONTENT="YC"&gt; <br />&lt;script language="VBScript"&gt; <br />dim hkey_root,hkey_path,hkey_key <br />hkey_root="HKEY_CURRENT_USER" <br />hkey_path="\Software\Microsoft\Internet Explorer\PageSetup" <br />'//设置网页打印的页眉页脚为空 <br />function pagesetup_null() <br />on error resume next <br />Set RegWsh = CreateObject("WScript.Shell") <br />hkey_key="\header" <br />RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"" <br />hkey_key="\footer" <br />RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"" <br />end function <br />'//设置网页打印的页眉页脚为默认值 <br />function pagesetup_default() <br />on error resume next <br />Set RegWsh = CreateObject("WScript.Shell") <br />hkey_key="\header" <br />RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&amp;w&amp;b页码，&amp;p/&amp;P" <br />hkey_key="\footer" <br />RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&amp;u&amp;b&amp;d" <br />end function <br />&lt;/script&gt; <br />&lt;/HEAD&gt; </p>
				<p>&lt;BODY&gt; <br />&lt;br/&gt; <br />&lt;br/&gt; <br />&lt;br/&gt; <br />&lt;br/&gt; <br />&lt;br/&gt; <br />&lt;br/&gt;&lt;p align=center&gt; <br />&lt;input type="button" value="清空页码" onclick=pagesetup_null()&gt; &lt;input type="button" value="恢复页吗" onclick=pagesetup_default()&gt;&lt;br/&gt; </p>
				<p>&lt;/p&gt; <br />&lt;/BODY&gt; <br />&lt;/HTML&gt; <br />4、浮动帧打印 <br />&lt;SCRIPT LANGUAGE=javascript&gt; <br />function button1_onclick() { <br />    var odoc=window.iframe1.document; <br />    var r=odoc.body.createTextRange(); <br />    var stxt=r.htmlText; <br />    alert(stxt) <br />    var pwin=window.open("","print"); <br />    pwin.document.write(stxt);  <br />    pwin.document.close(); <br />    pwin.print(); <br />} <br />&lt;/SCRIPT&gt; <br />5、用FileSystem组件实现WEB应用中的本地特定打印 <br />&lt;script Language=VBScript&gt; <br />function print_onclick //打印函数 <br />dim label <br />label=document.printinfo.label.value //获得HTML页面的数据 <br />set objfs=CreateObject("Scripting.FileSystemObject") //创建FileSystem组件对象的实例 <br />set objprinter=objfs.CreateTextFile ("LPT1:",true) //建立与打印机的连接 <br />objprinter.Writeline("__________________________________") //输出打印的内容 <br />objprinter.Writeline("| |") <br />objprinter.Writeline("| 您打印的数据是："&amp;label&amp; " |”) <br />objprinter.Writeline("| |") <br />objprinter.Writeline("|_________________________________|") <br />objprinter.close //断开与打印机的连接 <br />set objprinter=nothing <br />set objfs=nothing // 关闭FileSystem组件对象 <br />end function <br />&lt;/script&gt; <br />服务器端脚本： <br />&lt;%……… <br />set conn=server.CreateObject ("adodb.connection") <br />conn.Open "DSN=name;UID=XXXX;PWD=XXXX;" <br />set rs=server.CreateObject("adodb.recordset") <br />rs.Open(“select ……”),conn,1,1 <br />……….%&gt; //与数据库进行交互 <br />HTML页面编码： <br />&lt;HTML&gt; <br />……… <br />&lt;FORM ID=printinfo NAME="printinfo" &gt; <br />&lt;INPUT type="button" value="打印&gt;&gt;" id=print name=print &gt; //调用打印函数 <br />&lt;INPUT type=hidden id=text1 name=label value=&lt;%=………%&gt;&gt; //保存服务器端传来的数据 <br />……… <br />&lt;/HTML&gt; </p>
				<p>
						<br />  <br />这个是调用WORD，进行打印 <br />在&lt;head&gt;&lt;/head&gt;之间加入如下代码； <br />&lt;OBJECT Classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WB width=0&gt;&lt;/OBJECT&gt; <br />&lt;script language=javascript&gt; <br />function doPrintSetup(){ <br />WB.ExecWB(8,1) <br />} <br />function doPrintPreview(){ <br />WB.ExecWB(7,1) <br />} <br />&lt;/script&gt; </p>
				<p>在&lt;body&gt;中调用: <br />&lt;input type=button name=button1 value="打印设置" onclick="return doPrintSetup()"&gt; <br />&lt;input type=button name=button2 value="打印预览" onclick="return doPrintPreview()"&gt; <br />&lt;input type=button name=button3 value="打印本页" onclick="javascriptrint()"&gt; <br /><br />6、设置不想打印的部分 <br />&lt;style&gt; <br />@media print{ <br />.xx {display:none} <br />} <br />&lt;/style&gt; <br />&lt;table width="600" class="xx" border="0" cellspacing="0" cellpadding="0"&gt; <br />              &lt;tr&gt; <br />                &lt;td height="60" align="center"&gt;不想打印的表格&lt;/td&gt; <br />              &lt;/tr&gt;  <br />&lt;/table&gt; <br />7、利用word在客户端打印web页面 <br /><br />以前在asp中也碰到过实现在浏览器中打印的问题，特别是用局域网中的一些应用，以前的实现定义一个打印开始的标记，和一个结束的标记，然后调用window.print()方法，还有涉及在使用frame时候的打印问题，在msdn的文档中有关于这些的比较详细的介绍，但是，控制起来都比较的麻烦，而且对与打印比较精确的控制都比较难以实现，有很多的朋友也碰到过这个问题，最近读了一片文章，关于在web中的打印的实现（csdn)，稍作修改，贴了出来，供大家参考一下，希望对大家有所帮助。 <br />可以调用客户端的word进行打印前提是客户端必须安装word. <br />方法如下： <br />＜% <br />Response.ContentType = "application/msword" <br />response.AddHeader "content-disposition", "inline; filename=report.doc" <br />%＞ <br />当把，一样的内容添加到，asp的上面时候，会在客户端自动调用word打开当前的文档，不过不要忘记把，response.buffer的属性设定为false。 <br /><br />8、在WEB环境下打印报表的crystal的解决方案的实例 <br /><br />&lt;%@ LANGUAGE="VBSCRIPT" %&gt; <br />&lt;% <br />' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = <br />' 从ADO Recordset直接生成报表 <br />' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = <br />' <br />' 概念: <br />' <br />' 这个应用被设计成演示怎样从ADO Recordset生成报表。我们首先建立ADO Connection和 <br />' Recordset对象，然后用SQL语句从数据库中生成一个记录集。然后我们建立一个Crystal <br />' Reports对象，并把这个这个对象指向ADO recordset。最后我们将Crystal Reports <br />' Smart Viewer送到客户端显示这个报表。 <br /><br />' 第一步：建立ADO Connection and Recordset <br /><br />' 一个ADO的数据库连接就是通过你已经存在的ODBC数据源（DSN）从象ASP这样的应用中来访问 <br />' 数据的连接。为了达到这个例子的目的，我们将使用到用一个叫做"Xtreme Sample Data"的 <br />' 连到Access数据库Xtreme.mdb系统DSN <br /><br />' 建立ADO数据库连接: <br /><br />Set oConn = Server.CreateObject("ADODB.Connection") <br /><br />'这里建立叫做"oConn"的ADO connection，我们将用这个ADO connection对象连接到上述的DSN <br /><br />'用 ADO connection 必须先要打开它: <br /><br />oConn.Open("Xtreme Sample Database") <br /><br />'这里打开我们的ODBC的数据源，这个数据源指向Access数据库Xtreme.mdb <br /><br />'现在我们必须建立一个RecordSet对象： <br /><br />set session("oRs") = Server.CreateObject("ADODB.Recordset") <br /><br />'在上面我们建立了一个session("oRs"). 这个session中存放一个RecordSet对象 <br />'将要包含用SQL语句返回的数据 <br /><br />'定义和生成 recordset: <br /><br />session("oRs").ActiveConnection = oConn <br />'定义这个recordset将要使用的Connection 对象 <br /><br />session("oRs").Open "SELECT [Product ID], [Product Name] FROM Product" <br /><br />'用SQL语句从Xtreme.mdb库的"Product"表中取出两个字段 <br /><br />'=================================================================================== <br />'建立Crystal Reports 对象 <br />'=================================================================================== <br />'你可能注意到，Crystal Reports对象被设为session，这是因为已经需求就会被一个叫做 <br />'"rptserver.asp"的ASP处理，为了让rptserver.asp能非常容易地访问Crystal Report对象， <br />'我们把这些对象都设为session。这样任何ASP页都运行在这个session中，都能够直接访问这些对象 <br /><br />reportname = "ADORecordset.rpt" <br /><br />'这里建立一个字符串变量，指向Crystal Report文件(.rpt file)，再用这段代码的时候 <br />'换成你的Crystal Report文件名。 <br /><br />'建立APPLICATION 对象 <br />If Not IsObject (session("oApp")) Then <br />Set session("oApp") = Server.CreateObject("CrystalRuntime.Application") <br />End If <br /><br />'这个"if/end if" 结构用来每个session只建立一次 Crystal Reports Application对象o <br />'建立application对象 - session("oApp")，将Crystal Report Design Component <br />'automation server (craxdrt.dll)载入内存。 <br />' <br />'我们建立session变量是为了再asp session过程中都使用它们.这样可以减少将craxdrt.dll <br />'载入和卸载的系统开销。在一个session中一旦建立了一个application对象我们就可以不必 <br />'重建对象运行更多的报表 。 <br /><br />' 建立REPORT 对象 <br />' <br />'这个REPORT 对象被Application的OpenReport方法建立 <br /><br />Path = Request.ServerVariables("PATH_TRANSLATED") <br />While (Right(Path, 1) &lt;&gt; "\" And Len(Path) &lt;&gt; 0) <br />iLen = Len(Path) - 1 <br />Path = Left(Path, iLen) <br />Wend <br />response.Write path <br />'这个"While/Wend" 循环被用来将当前文件从虚拟路径(eg: http://Domain/Dir)转换成Crystal <br />' Report file的物理路径(eg: C:\) <br /><br />'打开REPORT (先清除以前的任何对象) <br /><br />If IsObject(session("oRpt")) then <br />Set session("oRpt") = nothing <br />End if <br /><br />On error resume next <br /><br />Set session("oRpt") = session("oApp").OpenReport(path &amp; reportname, 1) <br />'这里用"PATH" 和 "reportname"变量计算出Crystal Report file的物理路径, 并打开它。 <br /><br />If Err.Number &lt;&gt; 0 Then <br />Response.Write "Error Occurred creating Report Object: " &amp; Err.Description <br />Set Session("oRpt") = nothing <br />Set Session("oApp") = nothing <br />Session.Abandon <br />Response.End <br />End If <br /><br />'这个 On erro resume next 块检查在建立report对象时出现的任何错误，我们正明确的捕获任何 <br />'错误如果视图超过许可协议规定的最大并发用户数。 <br /><br />'注意，我们并不只建立一次report对象。这是因为有了ASP session 你可以处理更多的超过一个报表 <br />' rptserver.asp将仅仅处理一个叫session("oRpt")的report对象。因此，你如果希望处理多个报表 <br />'的话，就要建立一个新的session("oRpt")对象。 <br /><br />session("oRpt").MorePrintEngineErrorMessages = False <br />session("oRpt").EnableParameterPrompting = False <br /><br />'这里不允许错误报告机制，包括Crystal Report Design Component automation server (craxdrt.dll) <br />'内建的错误报告，这是因为两个原因： <br />'1. 打印引擎是在Web Server上执行的, 所以任何错误信息都将被显示在服务端，如果在服务端报告出错了， <br />' 打印引擎将停止运作，你的应用将被“挂起” <br />'2. rptserver.asp 已经有一些错误处理逻辑在里面了，可以捕获任何非致命错误，并显示在客户端。 <br />' <br />'**重要** 即使我们禁止了服务端引擎的错误处理，但是致命错误还是会在Web Server服务端被捕获，并 <br />'显示出错误提示对话框。所以我们建议，你在"World Wide Web Publishing" service (IIS service)设置 <br />'"Allow Service to Interact with Desktop"选项。这样如果你的ASP应用死了，你将能看到错误提示。 <br /><br />'====================================================================================== <br />'====================================================================================== <br /><br />'现在我们必须告诉report在ADO recordset中的数据 <br /><br />'report建立在动态的ADO recordset的基础，我们必须基于我们建立的recordset来建立report <br />'然后在运行时我们告诉report数据在ADO Record set中。report通常依靠数据库结构文件 <br />'(ADORecordset.ttx)建立，这个.ttx文件包含recordset的结构，不包含实际数据。 <br /><br />'一个Crystal Report完全依赖将要使用的Report的数据结构，因此在运行时你的数据库结构文件(ttx file) <br />'或真实反应ADO recordset包含的数据的DSN是十分重要的 <br /><br />session("oRpt").DiscardSavedData <br />set Database = session("oRpt").Database <br />'实例化report用到的数据库 <br /><br />set Tables = Database.Tables <br />'实例化数据库对象中的表 <br /><br />set Table1 = Tables.Item(1) <br />'实例化第一张表，在这个实例中这个表对象指向ADORecordset.ttx文件 <br /><br />Table1.SetPrivateData 3, session("oRs") <br /><br />'"SetPrivateData"告诉report现在数据源是 recordset，现在report将要显示的数据包含在session("oRs")中 <br />'如果你的report中包含子报表将提供不同的recordset来指向子报表的数据 <br />' <br />'==================================================================================== <br />'重新得到记录和建立"Page on Demand" Engine Object <br />'==================================================================================== <br /><br />On Error Resume Next <br />session("oRpt").ReadRecords <br /><br />If Err.Number &lt;&gt; 0 Then <br />Response.Write "Error Occurred Reading Records: " &amp; Err.Description <br />Set Session("oRpt") = nothing <br />Set Session("oApp") = nothing <br />Session.Abandon <br />Response.End <br />Else <br />If IsObject(session("oPageEngine")) Then <br />set session("oPageEngine") = nothing <br />End If <br />set session("oPageEngine") = session("oRpt").PageEngine <br />End If <br /><br />' 实例化 CRYSTAL REPORTS SMART VIEWER <br />' <br />'在ASP环境中使用Crystal Reports automation server, 我们用相同的页来通过Crystal Web Report Server调用 <br />'"Smart Viewers" <br />'有四个 Crystal Reports Smart Viewers: <br />' <br />'1. ActiveX Smart Viewer <br />'2. Java Smart Viewer <br />'3. HTML Frame Smart Viewer <br />'4. HTML Page Smart Viewer <br />' <br />'你使用的Smart Viewer将与你数用的浏览器兼容的，例如你将不会使用Java viewer如果你的浏览器 <br />'不支持Java applets。为此，在这个DEMO中，我们已经选择定义一个viewer，你可以通过代码决定 <br />'提出要求的浏览器的支持兼容性，无论如何，这个功能继承自Crystal Reports automation server， <br />'超过了这个示例的范围。 <br /><br />'基于简单的理由，我们已经选择通过ASP服务端包含的功能来实现这个功能，你可以选择不同的 <br />'SmartViewer*.asp文件送到不同的浏览器，简单的用你想用的Smart Viewer asp文件来代替。 <br /><br />'这些选择是： SmartViewerActiveX.asp, SmartViewerJave.asp,SmartViewerHTMLFrame.asp, <br />'and SmartViewerHTMLPAge.asp.注意，使用这些包含文件时，你必须把相应的.ASP文件放在同主 <br />'ASP文件相同的虚拟路径中。 <br />' <br />'*注意* 对于 SmartViewerHTMLFrame and SmartViewerHTMLPage,你必须在虚拟路径中有framepage.asp <br />'文件和toolbar.asp 文件 <br /><br />viewer = Request.Form("Viewer") <br /><br />'上面读取被使用的viewer的值，并放入变量"viewer"中 <br /><br />If cstr(viewer) = "ActiveX" then <br />%&gt; <br />&lt;!-- #include file="SmartViewerActiveX.asp" --&gt; <br />&lt;% <br />ElseIf cstr(viewer) = "Netscape Plug-in" then <br />%&gt; <br />&lt;!-- #include file="ActiveXPluginViewer.asp" --&gt; <br />&lt;% <br />ElseIf cstr(viewer) = "Java using Browser JVM" then <br />%&gt; <br />&lt;!-- #include file="SmartViewerJava.asp" --&gt; <br />&lt;% <br />ElseIf cstr(viewer) = "Java using Java Plug-in" then <br />%&gt; <br />&lt;!-- #include file="JavaPluginViewer.asp" --&gt; <br />&lt;% <br />ElseIf cstr(viewer) = "HTML Frame" then <br />Response.Redirect("htmstart.asp") <br />Else <br />Response.Redirect("rptserver.asp") <br />End If <br />'上面 If/Then/Else 被设计测试"viewer" 变量的值，基于这个值，送适当的Crystal Smart Viewer <br />%&gt; </p>
		</div> <br /><br /><p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1441869</p><img src ="http://www.blogjava.net/zqli/aggbug/87692.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zqli/" target="_blank">放水老倌</a> 2006-12-14 13:54 <a href="http://www.blogjava.net/zqli/archive/2006/12/14/87692.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]Javascript 获得网页控件方法大全(附全码) </title><link>http://www.blogjava.net/zqli/archive/2006/10/25/77209.html</link><dc:creator>放水老倌</dc:creator><author>放水老倌</author><pubDate>Wed, 25 Oct 2006 07:43:00 GMT</pubDate><guid>http://www.blogjava.net/zqli/archive/2006/10/25/77209.html</guid><wfw:comment>http://www.blogjava.net/zqli/comments/77209.html</wfw:comment><comments>http://www.blogjava.net/zqli/archive/2006/10/25/77209.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zqli/comments/commentRss/77209.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zqli/services/trackbacks/77209.html</trackback:ping><description><![CDATA[
		<p>编写JS的时候,总会调用的网页上的控件,今天有心情,把获得网页上的控件方法写了下,有不足,请补充.<br />【总结】一般我喜欢使用:document.getElementById()和document.all().现在觉得document.all.*比较不错!<br /><span style="COLOR: red">关于其更深一步的原理暂不清楚,希望有明白的人给个深入讲解的链接!!<br /><br /><br /><span style="COLOR: #000000">本帖以获得页面的text文本为例,获得控件后为其赋值为"你好!"<br />【附一:方法大全】<br />&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>"&gt;<br />&lt;html xmlns="<a href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</a>"&gt;<br />&lt;head&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt;<br />&lt;title&gt;获得网页控件的方法大全&lt;/title&gt;<br />&lt;script language="javascript"&gt;<br /> function AXzhz()<br /> {  <br />  //【AX为文本框的id,通过下面的方法对文本框赋内容】<br />  <br />  //【根据控件ID】<br />  document.getElementById("AX").value="你好!" ;<br />  //document.all("AX").value="你好!";  <br />  //document.all.AX.value="你好!";<br />  //不成功 document.AX.value="你好!";<br />  <br />  //document.body.all("AX").value="你好!";<br />  //document.body.all.AX.value="你好!";<br />  //不成功 document.body.getElementById("AX").value="你好!";<br />  <br />  //formid.AX.value="你好!";  <br />  //不成功 formid.getElementById("AX").value="你好!";<br />  //不成功 formid.all.getElementById("AX").value="你好!";<br />  //formid.all.AX.value="你好!";<br />  //formid.all("AX").value="你好!";<br />  <br />  //【根据控件name,返回的是一个数组集合,再通过下标获得控件】<br />  //document.getElementsByName("textfield")[0].value="你好!";<br />  //不成功 formid.all.getElementsByName("textfield")[0].value="你好!";<br />  //不成功 formid.getElementsByName("textfield")[0].value="你好!";<br />  <br />  //【根据标签,返回的是一个数组集合,严格来说是获得标签中的内容,估计用到的机会不是很多】  <br />  //document.getElementsByTagName("td")[1].innerHTML="你好!";    <br /> }<br />&lt;/script&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;form id="formid"&gt;<br />&lt;table width="200" border="1"&gt;<br />&lt;!--title是鼠标在上面的时候出现的提示--&gt;<br />  &lt;tr title="快啊快啊!!" onclick="AXzhz()"&gt;<br />    &lt;td bgcolor="#FF9933"&gt;你点我啊!!&lt;br&gt; <br /> &lt;INPUT TYPE="text"value="根据标签测试时使用,请仔细观察结果!"&gt;<br /> &lt;/td&gt;   <br />  &lt;/tr&gt;<br />  &lt;tr&gt;<br />    &lt;td  bgcolor="#0099FF"&gt;&lt;p&gt;AXzhz制作&lt;br/&gt;<br />        &lt;input type="text" name="textfield" value="我要给这个文本框赋值!" id="AX"/&gt;  <br />    &lt;/td&gt;&lt;/p&gt;<br />  &lt;/tr&gt;<br />&lt;/table&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br /><br /><br />【附二:getElementsByName详细】<br />&lt;SCRIPT&gt;<br />function fnGetNames(){<br />// Returns a collection with 2 INPUT type=text elements.<br />var aInput=document.getElementsByName("firstName");<br />document.all.AX.value=aInput[0].value+aInput[1].value;</span></span></p>
		<p>
				<span style="COLOR: red">
						<span style="COLOR: #000000">}<br />&lt;/SCRIPT&gt;<br />&lt;INPUT TYPE="text"  id="AX"&gt;<br />&lt;INPUT TYPE="text" NAME="firstName"&gt;<br />&lt;INPUT TYPE="text" NAME="firstName"&gt;<br />&lt;INPUT TYPE="button" VALUE="Get Names" onclick="fnGetNames()"&gt;<br /><br />【附三:getElementsByTagName详细】<br />&lt;SCRIPT&gt;<br />function AXzhz()<br />{<br />var aSpans = oDiv.getElementsByTagName("SPAN");<br />document.all.AX.value=aSpans[1].innerHTML;<br />}<br />&lt;/SCRIPT&gt;<br />&lt;input name="text" type="text"  id="AX" width="400px"&gt;<br />&lt;DIV id="oDiv"&gt;&lt;label onClick="AXzhz()"&gt;你点我啊!&lt;/label&gt;&lt;br&gt;<br />&lt;SPAN&gt;Immediate Child<br />&lt;DIV&gt;<br />&lt;SPAN&gt;Child of Child DIV<br />&lt;INPUT TYPE="text" NAME="firstName" value="AX制作!"&gt;<br />&lt;/SPAN&gt;<br />&lt;/DIV&gt;<br />&lt;/SPAN&gt;<br />&lt;/DIV&gt;</span>
				</span>
		</p>
		<br />
		<br />
		<p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1346316</p>
<img src ="http://www.blogjava.net/zqli/aggbug/77209.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zqli/" target="_blank">放水老倌</a> 2006-10-25 15:43 <a href="http://www.blogjava.net/zqli/archive/2006/10/25/77209.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]网页内容无法复制怎么办？</title><link>http://www.blogjava.net/zqli/archive/2006/10/19/76235.html</link><dc:creator>放水老倌</dc:creator><author>放水老倌</author><pubDate>Thu, 19 Oct 2006 10:22:00 GMT</pubDate><guid>http://www.blogjava.net/zqli/archive/2006/10/19/76235.html</guid><wfw:comment>http://www.blogjava.net/zqli/comments/76235.html</wfw:comment><comments>http://www.blogjava.net/zqli/archive/2006/10/19/76235.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/zqli/comments/commentRss/76235.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zqli/services/trackbacks/76235.html</trackback:ping><description><![CDATA[网页内容无法复制怎么办？
<dd class="dateAbout">分类：<span>综合、杂记</span>时间：<span>2006-10-19 13:23:39</span>作者：<span>supNate</span></dd><dd class="content">大家一定遇到过网页内容无法复制的问题，虽然实现技术简单，但碰到时还真是挺烦人的，现在偶提供一个最迅速的解决方案，就是在浏览器地址栏输入以下代码：<br /><font color="#333399"><div class="codeArea"><font color="#333399">javascript:alert(document.onselectstart = document.oncontextmenu = document.onmousedown = document.onkeydown = function(){return true;});</font></div></font>嘿嘿，是不是可以选中内容可以复制了？神奇吧！<br /><br />说到灵感来源，还要从前几天在某blog看到一个搞笑的技术说起，它是通过在地址栏输入javascript代码而使得网页中的图片满天飞舞，效果还真不错。虽然很容易明白其原理，但还是很pf作者的创意，呵呵。。于是便想这个小trick是否能有其他实用的用处呢。。。<br /><br />说到这里，大家都明白了，就是用来解决网页能容无法复制的问题。<br /><br />首先了解下常见的实现无法复制内容的javascript技术，如下：<br />（1）屏蔽选中事件<br /><div class="codeArea js"><div style="COLOR: #000000"><font color="#000000">document</font><font color="#000000">.</font><font color="#000000">onselectstart</font><font color="#000000">=</font><font color="#0000ff">function</font><font color="#000000">(){</font><font color="#0000ff">return</font> <font color="#0000ff">false</font><font color="#000000">;}</font></div></div>（2）屏蔽右键菜单<br /><div class="codeArea js"><div style="COLOR: #000000"><font color="#000000">document</font><font color="#000000">.</font><font color="#000000">oncontextmenu</font><font color="#000000">=</font><font color="#0000ff">function</font><font color="#000000">(){</font><font color="#0000ff">return</font> <font color="#0000ff">false</font><font color="#000000">;}</font></div></div>（3）另一种屏蔽右键菜单<br /><div class="codeArea js"><div style="COLOR: #000000"><font color="#000000">document</font><font color="#000000">.</font><font color="#000000">onmousedown</font><font color="#000000">=</font><font color="#0000ff">function</font><font color="#000000">(){</font><br />  <font color="#0000ff">if</font><font color="#000000">(</font><font color="#000000">event</font><font color="#000000">.</font><font color="#000000">button</font><font color="#000000">==</font><font color="#000000">2</font><font color="#000000">)</font><font color="#0000ff">return</font> <font color="#0000ff">false</font><font color="#000000">;</font><br /><font color="#000000">}</font> </div></div>（4）屏蔽ctrl按键 
<div class="codeArea js"><div style="COLOR: #000000"><font color="#000000">document</font><font color="#000000">.</font><font color="#000000">onkeydown</font><font color="#000000">=</font><font color="#0000ff">function</font><font color="#000000">(){</font><br />  <font color="#0000ff">if</font><font color="#000000">(</font><font color="#000000">event</font><font color="#000000">.</font><font color="#000000">ctrlKey</font><font color="#000000">)</font><font color="#0000ff">return</font> <font color="#0000ff">false</font><font color="#000000">;</font><br /><font color="#000000">}</font></div></div><br />了解了上述原理，要屏蔽就易如反掌了，呵呵，在浏览器输入如下代码：<br /><font color="#333399"><div class="codeArea"><font color="#333399">javascript:alert(document.onselectstart = document.oncontextmenu = document.onmousedown = document.onkeydown = function(){return true;});</font></div></font>实际中发现如果不用alert语句套上，会导致浏览器重写当前窗口，于是就加上了。大家不妨试试，遇到不奏效的记得反馈下，我好研究是否有更完善的方案。<br /></dd><img src ="http://www.blogjava.net/zqli/aggbug/76235.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zqli/" target="_blank">放水老倌</a> 2006-10-19 18:22 <a href="http://www.blogjava.net/zqli/archive/2006/10/19/76235.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]javascript 弹出窗口技术总结 </title><link>http://www.blogjava.net/zqli/archive/2006/09/28/72672.html</link><dc:creator>放水老倌</dc:creator><author>放水老倌</author><pubDate>Thu, 28 Sep 2006 12:42:00 GMT</pubDate><guid>http://www.blogjava.net/zqli/archive/2006/09/28/72672.html</guid><wfw:comment>http://www.blogjava.net/zqli/comments/72672.html</wfw:comment><comments>http://www.blogjava.net/zqli/archive/2006/09/28/72672.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zqli/comments/commentRss/72672.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zqli/services/trackbacks/72672.html</trackback:ping><description><![CDATA[
		<div class="subject" style="TABLE-LAYOUT: fixed"> </div>
		<div align="center">作者: <a href="http://xibin.baidusx.com/blog.php?uid-119.html"><b>9.95</b></a>   发表日期: 2006-05-16 11:54   <a title="http://xibin.baidusx.com/blog.php?do=showone&amp;amp;tid=925" onclick="clipboardData.setData('Text','http://xibin.baidusx.com/blog.php?do=showone&amp;tid=925')" href="javascript:">复制链接</a></div>
		<br />
		<br />
		<div class="content" style="TABLE-LAYOUT: fixed">
				<br />
				<br />
				<span class="content">以下列出一些弹出窗口的参数,你可自行设定,参数之间用逗号分隔可选。字符串--列出对象表并用逗号分开。每一项都有自己的值，他们将被分开（如："fullscreen=yes, toolbar=yes"）。下面是被支持的各种特性。
<p></p><table style="WIDTH: 506px; HEIGHT: 566px" cellspacing="1" cellpadding="1" width="506" border="1"><tbody><tr><td>channelmode = { yes | no | 1 | 0 }</td><td>是否在窗口中显示阶梯模式</td><td>默认为no</td></tr><tr><td>directories = { yes | no | 1 | 0 }</td><td>是否在窗口中显示各种按钮</td><td>默认为yes</td></tr><tr><td>fullscreen = { yes | no | 1 | 0 }</td><td>是否用全屏方式显示浏览器</td><td>默认为no</td></tr><tr><td>height = number</td><td>指定窗口的高度，单位是像素</td><td>最小值是100</td></tr><tr><td>left = number</td><td>指定窗口距左边框的距离，单位是像素</td><td>值必须大于或者等于0</td></tr><tr><td>location = { yes | no | 1 | 0 }</td><td>指定是否在窗口中显示地址栏</td><td>默认为yes</td></tr><tr><td>menubar = { yes | no | 1 | 0 }</td><td>指定是否在窗口中显示菜单栏</td><td>默认为yes</td></tr><tr><td>resizable = { yes | no | 1 | 0 }</td><td>指定是否在窗口中显示可供用户调整大小的句柄</td><td>默认为yes</td></tr><tr><td>scrollbars = { yes | no | 1 | 0 }</td><td>指定是否在窗口中显示横向或者纵向滚动条</td><td>默认为yes</td></tr><tr><td>status = { yes | no | 1 | 0 }</td><td>指定是否在窗口中显示状态栏</td><td>默认为yes</td></tr><tr><td>titlebar = { yes | no | 1 | 0 }</td><td>指定是否在窗口中显示标题栏。在非调用HTML Application或者一个对话框的情况下，这一项将被忽略</td><td>默认为yes</td></tr><tr><td>toolbar = { yes | no | 1 | 0 }</td><td>指定是否在窗口中显示工具栏，包括如前进、后退、停止等按钮</td><td>默认为yes</td></tr><tr><td>width = number</td><td>指定窗口的宽度，单位是像素</td><td>最小值是100</td></tr><tr><td>top = number</td><td>指定窗口顶部的位置，单位是像素</td><td>值必须大于或者等于0</td></tr></tbody></table><p></p><p><strong>1、最基本的弹出窗口代码</strong>　　<br /></p><p class="code">　　&lt;SCRIPT LANGUAGE="javascript"&gt; <br /><br />　　&lt;!-- <br /><br />　　window.open ('page.html') <br /><br />　　--&gt; <br /><br />　　&lt;/SCRIPT&gt;</p><p>　　<br />　　因为这是一段javascripts代码，所以它们应该放在
<script language="javascript"></script>
 之间。<!-- 和 -->是对一些版本低的浏览器起作用，在这些老浏览器中不会将标签中的代码作为文本显示出来。要养成这个好习惯啊。window.open ('page.html') 用于控制弹出新的窗口page.html，如果page.html不与主窗口在同一路径下，前面应写明路径，绝对路径(http://)和相对路径(.. /)均可。用单引号和双引号都可以，只是不要混用。这一段代码可以加入HTML的任意位置，和之间可以，间也可以，越前越早执行，尤其是页面代码长，又想使页面早点弹出就尽量往前放。 <br />　 <br /><strong>2、经过设置后的弹出窗口</strong><br />　　<br />　　下面再说一说弹出窗口的设置。只要再往上面的代码中加一点东西就可以了。我们来定制这个弹出的窗口的外观，尺寸大小，弹出的位置以适应该页面的具体情况。 　　<br /></p><p class="code">　　&lt;SCRIPT LANGUAGE="javascript"&gt; <br /><br />　　&lt;!-- <br /><br />　　window.open ('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, <br />toolbar=no, menubar=no, scrollbars=no, resizable=no,location=n o, status=no') <br /><font color="#009900">//这句要写成一行</font><br /><br />　　--&gt; <br /><br />　　&lt;/SCRIPT&gt;</p><p>　　<br />　　<u>参数解释</u>： 　　<br />　　&lt;SCRIPT LANGUAGE="javascript"&gt; js脚本开始； <br />　　window.open 弹出新窗口的命令； <br />　　'page.html' 弹出窗口的文件名； <br />　　'newwindow' 弹出窗口的名字（不是文件名），非必须，可用空''代替； <br />　　height=100 窗口高度； <br />　　width=400 窗口宽度； <br />　　top=0 窗口距离屏幕上方的象素值； <br />　　left=0 窗口距离屏幕左侧的象素值； <br />　　toolbar=no 是否显示工具栏，yes为显示； <br />　　menubar，scrollbars 表示菜单栏和滚动栏。 <br />　　resizable=no 是否允许改变窗口大小，yes为允许； <br />　　location=no 是否显示地址栏，yes为允许； <br />　　status=no 是否显示状态栏内的信息（通常是文件已经打开），yes为允许； <br />　　&lt;/SCRIPT&gt; js脚本结束</p><p><strong>3、用函数控制弹出窗口<br /></strong>　　<br />　　下面是一个完整的代码。 <br /></p><p class="code">　　&lt;html&gt; <br /><br />　　&lt;head&gt; <br /><br />　　&lt;script LANGUAGE="JavaScript"&gt; <br /><br />　　&lt;!-- <br /><br />　　function openwin() { <br /><br />　　window.open ("page.html", "newwindow", "height=100, <br />width=400, toolbar =no, menubar=no, scrollbars=no, resizable=no, location=no, <br />status=no") <font color="#009900">//写成一行</font><br /><br />　　} <br /><br />　　//--&gt; <br /><br />　　&lt;/script&gt; <br /><br />　　&lt;/head&gt; <br /><br />　　&lt;body onload="openwin()"&gt; <br /><br />　　任意的页面内容... <br /><br />　　&lt;/body&gt; <br /><br />　　&lt;/html&gt;</p><p><br /><br />　　这里定义了一个函数openwin(),函数内容就是打开一个窗口。在调用它之前没有任何用途。怎么调用呢？ <br /><br />　　<u>方法一</u>：&lt;body onload="openwin()"&gt; 浏览器读页面时弹出窗口； <br />　　<u>方法二</u>：&lt;body onunload="openwin()"&gt; 浏览器离开页面时弹出窗口； <br />　　<u>方法三</u>：用一个连接调用： <br />　　&lt;a href="#" onclick="openwin()"&gt;打开一个窗口&lt;/a&gt; <br />　　注意：使用的“#”是虚连接。 <br />　　<u>方法四</u>：用一个按钮调用： <br />　　&lt;input type="button" onclick="openwin()" value="打开窗口"&gt;<br />　 <br /><strong>4、同时弹出2个窗口</strong><br />　　<br />　　 对源代码稍微改动一下： 　　<br /></p><p class="code">　　&lt;script LANGUAGE="JavaScript"&gt; <br /><br />　　&lt;!-- <br /><br />　　function openwin() { <br /><br />　　window.open ("page.html", "newwindow", "height=100, <br />width=100, top=0, left=0,toolbar=no, menubar=no, scrollbars=no, resizable=no, <br />location=n o, status=no")　<font color="#009900">//写成一行</font><br /><br />　　window.open ("page2.html", "newwindow2", "height=100, <br />width=100, top=1 00, left=100,toolbar=no, menubar=no, scrollbars=no, resizable=no, <br />loca tion=no, status=no")　<font color="#009900">//写成一行</font><br /><br />　　} <br /><br />　　//--&gt; <br /><br />　　&lt;/script&gt;</p><p><br />　　为避免弹出的2个窗口覆盖，用top和left控制一下弹出的位置不要相互覆盖即可 。最后用上面说过的四种方法调用即可。</p><p> 　　<u>注意</u>：2个窗口的name(newwindows和newwindow2)不要相同，或者干脆全部为空。 <br /><strong>5、主窗口打开文件1.htm，同时弹出小窗口page.html<br /><br /></strong>　　如下代码加入主窗口区： <br /></p><p></p><p class="code">　　&lt;script language="javascript"&gt; <br /><br />　　&lt;!-- <br /><br />　　function openwin() { <br /><br />　　window.open("page.html","","width=200,height=200") <br /><br /><br />　　} <br /><br />　　//--&gt; <br /><br />　　&lt;/script&gt;</p><p><br />　　加入&lt;body&gt;区： <br />　　&lt;a href="1.htm" onclick="openwin()"&gt;open&lt;/a&gt;即可。 <br /><br /><strong>6、弹出的窗口之定时关闭控制</strong><br />　　<br />　　下面我们再对弹出的窗口进行一些控制，效果就更好了。如果我们再将一小段 代码加入弹出的页面(注意是加入page.html的HTML中，不是主页面中)，让它10秒后自动关闭是不是更酷了？ <br />首先，将如下代码加入page.html文件的区： <br /></p><p class="code">　　&lt;script language="JavaScript"&gt; <br /><br />　　function closeit() <br /><br />　　{ <br /><br />　　setTimeout("self.close()",10000) 　<font color="#009900">//毫秒</font><br /><br />　　} <br /><br />　　&lt;/script&gt;</p><p><br />　　然后，再用&lt;body onload="closeit()"&gt; 这一句话代替page.html中原有的&lt;BODY&gt;这一句就可以了。(这一句话千万不要忘记写啊！这一句的作用是调用关闭窗口的代码，10秒钟后就自行关闭该窗口。) <br /><br /><strong>7、在弹出窗口中加上一个关闭按钮</strong><br /></p><p class="code">　　&lt;FORM&gt; <br /><br />　　&lt;INPUT TYPE='BUTTON' VALUE='关闭' onClick='window.close()'&gt; <br /><br />　　&lt;/FORM&gt;</p><p><br />　　呵呵，现在更加完美了！<br /><strong>8、内包含的弹出窗口-一个页面两个窗口<br /><br /></strong>　　上面的例子都包含两个窗口，一个是主窗口，另一个是弹出的小窗口。通过下面的例子，你可以在一个页面内完成上面的效果。 <br /></p><p class="code">　　&lt;html&gt; <br /><br />　　&lt;head&gt; <br /><br />　　&lt;SCRIPT LANGUAGE="JavaScript"&gt; <br /><br />　　function openwin() <br /><br />　　{ <br /><br />　　OpenWindow=window.open("", "newwin", "height=250, width=250,toolbar=no <br />,scrollbars="+scroll+",menubar=no"); <br /><br />　　<font color="#009900">//写成一行</font><br /><br />　　OpenWindow.document.write("&lt;TITLE&gt;例子&lt;/TITLE&gt;") <br /><br />　　OpenWindow.document.write("&lt;BODY BGCOLOR=#ffffff&gt;") <br /><br />　　OpenWindow.document.write("&lt;h1&gt;Hello!&lt;/h1&gt;") <br /><br />　　OpenWindow.document.write("New window opened!") <br /><br />　　OpenWindow.document.write("&lt;/BODY&gt;") <br /><br />　　OpenWindow.document.write("&lt;/HTML&gt;") <br /><br />　　OpenWindow.document.close() <br /><br />　　} <br /><br />　　&lt;/SCRIPT&gt; <br /><br />　　&lt;/head&gt; <br /><br />　　&lt;body&gt; <br /><br />　　&lt;a href="#" onclick="openwin()"&gt;打开一个窗口&lt;/a&gt; <br /><br />　　&lt;input type="button" onclick="openwin()" value="打开窗口"&gt; <br /><br /><br />　　&lt;/body&gt; <br /><br />　　&lt;/html&gt;</p><p><br />　　看看OpenWindow.document.write()里面的代码不就是标准的HTML吗？只要按照格式写更多的行即可。千万注意多一个标签或少一个标签就会出现错误。记得用 OpenWindow.document.close()结束啊。 <br /><br /><strong>9、终极应用--弹出的窗口之Cookie控制</strong><br /><br />　　回想一下，上面的弹出窗口虽然酷，但是有一点小毛病，比如你将上面的脚本放在一个需要频繁经过的页面里(例如首页)，那么每次刷新这个页面，窗口都会弹出一次，我们使用cookie来控制一下就可以了。 <br />　　首先，将如下代码加入主页面HTML的&lt;HEAD&gt;区： <br /></p><p class="code">　　&lt;script&gt; <br /><br />　　function openwin(){ <br /><br />　　window.open("page.html","","width=200,height=200") <br /><br /><br />　　} <br /><br />　　function get_cookie(Name) { <br /><br />　　var search = Name + "=" <br /><br />　　var returnvalue = ""; <br /><br />　　if (document.cookie.length &gt; 0) { <br /><br />　　offset = document.cookie.indexOf(search) <br /><br />　　if (offset != -1) { <br /><br />　　offset += search.length <br /><br />　　end = document.cookie.indexOf(";", offset); <br /><br />　　if (end == -1) <br /><br />　　end = document.cookie.length; <br /><br />　　returnvalue=unescape(document.cookie.substring(offset, end)) <br /><br />　　} <br /><br />　　} <br /><br />　　return returnvalue; <br /><br />　　} 　<br /><br />　　function loadpopup(){ <br /><br />　　if (get_cookie('popped')==''){ <br /><br />　　openwin() <br /><br />　　document.cookie="popped=yes" <br /><br />　　} <br /><br />　　} <br /><br />　　&lt;/script&gt;</p><p><br />　　然后，用&lt;body onload="loadpopup()"&gt;（注意不是openwin而是loadpop啊！）替换主页面中原有的&lt;BODY&gt;这一句即可。你可以试着刷新一下这个页面或重新进入该页面，窗口再也不会弹出了。</p></span>
		</div>
<img src ="http://www.blogjava.net/zqli/aggbug/72672.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zqli/" target="_blank">放水老倌</a> 2006-09-28 20:42 <a href="http://www.blogjava.net/zqli/archive/2006/09/28/72672.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript与浏览器的兼容性</title><link>http://www.blogjava.net/zqli/archive/2006/09/26/71910.html</link><dc:creator>放水老倌</dc:creator><author>放水老倌</author><pubDate>Tue, 26 Sep 2006 02:20:00 GMT</pubDate><guid>http://www.blogjava.net/zqli/archive/2006/09/26/71910.html</guid><wfw:comment>http://www.blogjava.net/zqli/comments/71910.html</wfw:comment><comments>http://www.blogjava.net/zqli/archive/2006/09/26/71910.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zqli/comments/commentRss/71910.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zqli/services/trackbacks/71910.html</trackback:ping><description><![CDATA[
		<font size="5">      </font>
		<font size="3"> 如果使用appendChild将&lt;tr&gt;元素直接增加到&lt;table&gt;中，则在IE中这一行并不出现，但在其他浏览器中却会显示出来。对此的解决之道是，将&lt;tr&gt;元素增加到表的&lt;tbody&gt;元素中，这种解决办法在所有浏览器中都能正确工作。<br />       关于setAttribute方法，IE也有麻烦。IE不能使用setAttribute正确地设置class属性。对此有一个跨流露那器的解决方法，即同时使用setAttribute("class","newClassName")和setAttribute("className","newClassName")。另外，在IE中不能使用setAttribute设置style属性。最能保证浏览器兼容的技术不是&lt;elemet&gt;.setAttribute("style',"font-weight:bold;")，而是&lt;element&gt;.style.cssText="font-weight:bold;"。<br />       如果数据处理不改变数据模型的状态，HTML使用规约理论上推荐采用GET方法，从这可以看出，获取数据时应当使用GET方法。如果因为存储、更新数据，或者发送了电子邮件，操作改变了数据模型的状态，这时建议使用POST方法。<br />       串连接创建XML，因为对于从头构建文档对象，目前还没有跨浏览器的技术。<br />      XMLHttpRequest对象只能访问发起文档（即调用脚本）所在域中的资源。如果试图访问其他域的资源，可能因为浏览器的安全限制而失败。浏览器实现安全沙箱的方式各有不同。IE会询问用户是否允许访问另一个域中的资源。FireFox则会报告错误，自动失败，虽然可以用专用于FireFox的JavaScript代码避免这种行为。另一种解决方法：“网关”。</font>
<img src ="http://www.blogjava.net/zqli/aggbug/71910.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zqli/" target="_blank">放水老倌</a> 2006-09-26 10:20 <a href="http://www.blogjava.net/zqli/archive/2006/09/26/71910.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>notice &lt;pre&gt;&lt;/pre&gt;  </title><link>http://www.blogjava.net/zqli/archive/2006/04/21/42274.html</link><dc:creator>放水老倌</dc:creator><author>放水老倌</author><pubDate>Fri, 21 Apr 2006 02:29:00 GMT</pubDate><guid>http://www.blogjava.net/zqli/archive/2006/04/21/42274.html</guid><wfw:comment>http://www.blogjava.net/zqli/comments/42274.html</wfw:comment><comments>http://www.blogjava.net/zqli/archive/2006/04/21/42274.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zqli/comments/commentRss/42274.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zqli/services/trackbacks/42274.html</trackback:ping><description><![CDATA[留神Document.write /Document.writln在不在&lt;pre&gt;&lt;/pre&gt;里的区别。<img src ="http://www.blogjava.net/zqli/aggbug/42274.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zqli/" target="_blank">放水老倌</a> 2006-04-21 10:29 <a href="http://www.blogjava.net/zqli/archive/2006/04/21/42274.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>