﻿<?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-先破后立，探索Java精髓-随笔分类-Web</title><link>http://www.blogjava.net/jhyan/category/3871.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 07 Apr 2008 07:27:23 GMT</lastBuildDate><pubDate>Mon, 07 Apr 2008 07:27:23 GMT</pubDate><ttl>60</ttl><item><title>感受dell 客户关怀部的“关怀”与技术支持的“支持”（原创）</title><link>http://www.blogjava.net/jhyan/archive/2008/04/06/191092.html</link><dc:creator>Joshua Yan</dc:creator><author>Joshua Yan</author><pubDate>Sun, 06 Apr 2008 11:40:00 GMT</pubDate><guid>http://www.blogjava.net/jhyan/archive/2008/04/06/191092.html</guid><wfw:comment>http://www.blogjava.net/jhyan/comments/191092.html</wfw:comment><comments>http://www.blogjava.net/jhyan/archive/2008/04/06/191092.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/jhyan/comments/commentRss/191092.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jhyan/services/trackbacks/191092.html</trackback:ping><description><![CDATA[本人购买了dell的 XPS m1530，2008年1月2号左右收到机器，本以为dell的质量和服务不错，可是事实实在是让人失望。<br />
<br />
我早就有愿望买一个比较不错的本本来用，终于找到一个机会下定决心来购买。首先选择的是dell的1420，然后有加上了三年的服务，总计要1W左右，下来订单以后就在等了。谁知道过了4，5天的样子，dell网上还是生产过程中，打电话过去问了才知道，原来缺少部件，如果不是打电话过去还不知道要等到多久呢。刚好当时看到xps m1530在优惠，免费升级cpu，当时就更改了订单，选择了1530，包括一年的CC服务，经过一系列的确认，终于下了订单，并在大约5天后收到了机器。<br />
<br />
刚拿到机器时整体感觉不错，我买的是黑色的，搭配还可以。用了一下，发现了一些问题，不过都是网上说的共性问题，比如 光驱声音大等等。当时还发现机器屏幕和下面连接的转轴缝隙挺大的，不过也没有在意。<br />
<br />
用了20多天的时候，发现屏幕下方的封条，带有dell logo的地方竟然松弛下来了，本来屏幕四周的封条是卡在外壳上的，可是竟然卡不上了，松松垮垮的，很难看。于是我打电话报修，共两个问题：1, 右边屏幕连接底座的轴缝隙过大，左边正常；2，封条卡不到外壳上了。dell的技术工程师让我拍照发过去，查看一下缝隙；我通过邮件把照片发送给工程师了，工程师说，缝隙的确有点大，他们会派工程师给我换外壳和封条。<br />
<br />
dell的工程师上门服务还不错，打开机器，很快的换了外壳，但缝隙还是那么大；换了封条后，我看了一下dell logo的地方，发现好多了，只是在封条的最右边还有有点松，当时感觉还算满意吧。关于缝隙的问题，上门服务的工程师认为没有办法解决，于是就回去了。<br />
<br />
第二天我又打电话联系了关怀部，告诉他们缝隙的问题没有解决。关怀部的小姐告诉我，缝隙过大是因为模板的问题，没有办法解决。我当时就问了，模板的问题难道就不是你们的问题了？他也说不出什么，只是说是模板的问题。到目前为止，感觉服务还是不错的，只是缝隙过大的问题无法解决。没有办法，谁让这个问题的天生的呢，根本不可能解决了，凑合用吧。<br />
<br />
自从工程师上门还不到一周的时间，我发现屏幕上方摄像头的地方竟然又突出来了，按也按不进去，还是封条无法卡到外壳上。第二天我又打电话联系关怀部，然后他们又派工程师上门。由于当时是上班时间，我没有在家看到工程师换的情况，只是在更换的过程中我打了电话询问情况。工程师在这次上门服务中共打开机器两次，第一次换好以后发现摄像头那儿好了，但下面dell logo的地方又出来了；当时我在电话里面说这样不行吧，这个是上次上门服务刚修好的，现在又回来的？！于是工程师又打开了机器，又重新修了下。我晚上回家以后检查机器，发现下面dell logo的地方还可以，虽然不如原来，但我也接受了。<br />
<br />
电脑修好了，开始正常使用了。我带到公司使用，刚用两天，发现触摸板附近比较热，手模上去明显感觉到温度有些高，让同事们感受了一下，同事说这个肯定有问题。由于触摸板下面是硬盘，于是我怀疑是硬盘的问题。我又打电话联系关怀部，支持部，他们的技术工程师让我用dell自带的软件做个检查，我按照工程师说的对硬盘作了检查，可是没有发现问题。于是我打电话要求换机（2008年3月14日，周五），当天下午关怀部（分机5099）让我确认换机协议等，也就是准备给我换机器了，在傍晚的时候告诉我已经下单准备生产。dell生产的速度还是很快的，第二天，3月15日，周六，关怀部打电话告诉我，机器已经出厂，我当时就愣了，这么快？大家都知道新机器生产一般都要3天左右吧，我心里有点质疑了，别是旧的吧。反正换了，等拿到机器再看看吧<br />
<br />
周一，机器送到。晚上我回家后，检查机器，发现机器外壳没有贴膜，包装也没有第一台机器好了；然后检查说电源线，耳机，耳机的包装明显不是新的；我靠，发现说明书破破烂烂的，本来是黑色的封皮，有的地方都是白的了，而且还折了，感觉非常失望。然后就是检查机器了，机器感觉还可以，偶尔在运行中硬盘会咔嗒响一下，我也没有在意。检查配置清单发现，原来的网卡由3945换成了4965，硬盘从东芝的换成了西部数据的。<br />
<br />
第二天打电话给关怀部，关怀部的人员说要转接到给我处理换机的客服人员（5099，范小姐），转接就转接吧，谁知道没有人接。后来我又直接打电话找5099，终于找到人了。说明情况后，我就问换的机器是不是新的，为什么说明书是旧的；这位范小姐向我保证说机器肯定是新的，是她从生产线上亲自拿来的，但说明书为什么是旧的，她无法解释，反正就一直向我保证机器是新的。我认为既然已经保证机器是新的了，说明书是旧的就无所谓了，所以也就没有追问。<br />
<br />
过了还不到一周，3月23号晚上，机器用了一个小时左右，硬盘竟然一直在咔嗒咔嗒的响，大约每2分钟左右响一下，而且声音很明显，当时电视还开着呢。这样严重影响我的使用阿。<br />
<br />
3月24号，周一，我又打电话联系关怀部，他们又给我转到了范小姐（5099）处，说是她处理的换机协议，别人不能处理这些事情。但是始终无法联系上范小姐。无奈之下，我直接联系了技术支持部，说明情况，然后技术支持部就让我作测试什么的，反正还是老一套测试。由于当时是在公司进行测试，没有完成。到了晚上，在技术支持部的支持下，我又继续作了测试，结果显示硬件没有问题。由于测试时间比较长了，测试过程中挂断了电话。测试完成以后，我又打了技术支持部的电话，联系到了一个工程师（是0278或者0728，有点忘记了），然后他又开始问我什么问题，我就开始告诉他情况，硬盘会咔嗒响。。。 我还没有说完情况，工程师就问我是不是2分钟左右响一下，然后他又说一些情况，竟然和我的机器出现的问题一样；然后他就告诉我这个问题无法解决，。。。。，然后让我接受这个问题；我靠，有问题，还要我接受。。。<br />
<br />
接下来的几天我就联系关怀部，每次都要求我找范小姐（5099），可是我连着打了两天电话也没有找到她；然后再找到别的客服人员的时候，他们说会发邮件，留言给范小姐让她打电话给我。终于，在第二天的晚上6点左右的样子，范小姐打电话过来了。我又向她说明了情况，她没有说怎么处理，而是说&#8220;每个人对声音的感觉不同，可能你的要求比较高。。。&#8221;，然后又举例说明&#8220;有人睡觉的时候不能听到脚步声，不然睡不着。。。&#8221;，我晕阿，我又不是神经质！！然后，她继续说&#8220;我们是按照国家标准做的，不会超过55分贝的。。。&#8221;，我就问她&#8220;如果你的机器的声音影响了客户的正常使用，难道不是问题么？&#8221;她来了一句&#8220;我们不管&#8221;。无语。然后她又给我谈国家标准。。。，最后她说&#8220;我派个工程师上面看一下，是不是有问题？&#8221;，我就问她&#8220;工程师是不是带着测声的仪器阿？不然我怎么知道你们是不是符合国家标准呢&#8221;，她说没有这样的仪器，只要工程师说有问题就有，说没有就没有。真是无语。然后她突然来了句&#8220;就你问题多，那么多电话记录&#8221;，我靠，当时我就火了，好像我的电话是免费的似的。可是，谁知道，我还没有说完（我可没有骂她哦，讲道理嘛），电话那边就没有人，怎么问也没有人回答。然后我挂了又重新打过去，但始终是无人接。<br />
<br />
接下来的第二天，上海dell说要派工程师上门，我立马回绝了，我要退机！ 然后我联系关怀部，他们又是转给范小姐，还是没有人接。于是我在dell网站上申请了退机。dell网站的回复挺快的，可是没有解决任何问题，回复如下：<br />
<fieldset><legend>回复内容</legend><br />
<pre style="font-family: 宋体;">尊敬的客户：<br />
您好! 感谢您致信到DELL客户关怀部，非常荣幸能有机会为您提供服务和帮助!<br />
关于您反映的机器问题，我们已经提交给相关处理人员，请您耐心等待他的答复！<br />
今后就此问题您可以直接跟我联系，我的个人邮箱是：Dancer_Li@dell.com .很高兴为您服务。<br />
若您对我的服务有任何意见和建议，您可以致信我的主管，联系方式： amy_qiu@dell.com<br />
再次感谢您选择戴尔。<br />
Dancer Li<br />
戴尔(中国)客户关怀部</pre>
</fieldset>收到邮件回复的第二天，我又发邮件给这个Dancer_Li@dell.com ，询问进展情况
，但没有收到任何他的回复，只有网站的自动回复。<br />
<br />
后来又打电话给关怀部，他们告诉我不是硬件问题不能退机，只能换硬盘。我也只好让他们换硬盘了，不然怎么样呢？我好想退机阿。。。<br />
<br />
<br />
如果让我重新选择，我绝对不会选择购买dell的笔记本，耽误时间，耽误事情。<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/jhyan/aggbug/191092.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jhyan/" target="_blank">Joshua Yan</a> 2008-04-06 19:40 <a href="http://www.blogjava.net/jhyan/archive/2008/04/06/191092.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常用的js脚本（转载）</title><link>http://www.blogjava.net/jhyan/archive/2005/11/02/17779.html</link><dc:creator>Joshua Yan</dc:creator><author>Joshua Yan</author><pubDate>Wed, 02 Nov 2005 03:37:00 GMT</pubDate><guid>http://www.blogjava.net/jhyan/archive/2005/11/02/17779.html</guid><wfw:comment>http://www.blogjava.net/jhyan/comments/17779.html</wfw:comment><comments>http://www.blogjava.net/jhyan/archive/2005/11/02/17779.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jhyan/comments/commentRss/17779.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jhyan/services/trackbacks/17779.html</trackback:ping><description><![CDATA[<P>常用的js脚本<BR><BR>BS开发中常用的Javascript技术&nbsp;<BR>一、验证类&nbsp;<BR>1、数字验证内&nbsp;<BR>&nbsp;&nbsp;1.1&nbsp;整数&nbsp;<BR>&nbsp;&nbsp;1.2&nbsp;大于0的整数&nbsp;（用于传来的ID的验证)&nbsp;<BR>&nbsp;&nbsp;1.3&nbsp;负整数的验证&nbsp;<BR>&nbsp;&nbsp;1.4&nbsp;整数不能大于iMax&nbsp;<BR>&nbsp;&nbsp;1.5&nbsp;整数不能小于iMin&nbsp;<BR>2、时间类&nbsp;<BR>&nbsp;&nbsp;2.1&nbsp;短时间，形如&nbsp;(13:04:06)&nbsp;<BR>&nbsp;&nbsp;2.2&nbsp;短日期，形如&nbsp;(2003-12-05)&nbsp;<BR>&nbsp;&nbsp;2.3&nbsp;长时间，形如&nbsp;(2003-12-05&nbsp;13:04:06)&nbsp;<BR>&nbsp;&nbsp;2.4&nbsp;只有年和月。形如(2003-05,或者2003-5)&nbsp;<BR>&nbsp;&nbsp;2.5&nbsp;只有小时和分钟,形如(12:03)&nbsp;<BR>3、表单类&nbsp;<BR>&nbsp;&nbsp;3.1&nbsp;所有的表单的值都不能为空&nbsp;<BR>&nbsp;&nbsp;3.2&nbsp;多行文本框的值不能为空。&nbsp;<BR>&nbsp;&nbsp;3.3&nbsp;多行文本框的值不能超过sMaxStrleng&nbsp;<BR>&nbsp;&nbsp;3.4&nbsp;多行文本框的值不能少于sMixStrleng&nbsp;<BR>&nbsp;&nbsp;3.5&nbsp;判断单选框是否选择。&nbsp;<BR>&nbsp;&nbsp;3.6&nbsp;判断复选框是否选择.&nbsp;<BR>&nbsp;&nbsp;3.7&nbsp;复选框的全选，多选，全不选，反选&nbsp;<BR>&nbsp;&nbsp;3.8&nbsp;文件上传过程中判断文件类型&nbsp;<BR>4、字符类&nbsp;<BR>&nbsp;&nbsp;4.1&nbsp;判断字符全部由a-Z或者是A-Z的字字母组成&nbsp;<BR>&nbsp;&nbsp;4.2&nbsp;判断字符由字母和数字组成。&nbsp;<BR>&nbsp;&nbsp;4.3&nbsp;判断字符由字母和数字，下划线,点号组成.且开头的只能是下划线和字母&nbsp;<BR>&nbsp;&nbsp;4.4&nbsp;字符串替换函数.Replace();&nbsp;<BR>5、浏览器类&nbsp;<BR>&nbsp;&nbsp;5.1&nbsp;判断浏览器的类型&nbsp;<BR>&nbsp;&nbsp;5.2&nbsp;判断ie的版本&nbsp;<BR>&nbsp;&nbsp;5.3&nbsp;判断客户端的分辨率&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>6、结合类&nbsp;<BR>&nbsp;&nbsp;6.1&nbsp;email的判断。&nbsp;<BR>&nbsp;&nbsp;6.2&nbsp;手机号码的验证&nbsp;<BR>&nbsp;&nbsp;6.3&nbsp;身份证的验证&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR><BR>二、功能类&nbsp;<BR><BR>1、时间与相关控件类&nbsp;<BR>&nbsp;&nbsp;1.1&nbsp;日历&nbsp;<BR>&nbsp;&nbsp;1.2&nbsp;时间控件&nbsp;<BR>&nbsp;&nbsp;1.3&nbsp;万年历&nbsp;<BR>&nbsp;&nbsp;1.4&nbsp;显示动态显示时钟效果（文本，如OA中时间）&nbsp;<BR>&nbsp;&nbsp;1.5&nbsp;显示动态显示时钟效果&nbsp;(图像，像手表)&nbsp;&nbsp;<BR>2、表单类&nbsp;<BR>&nbsp;&nbsp;2.1&nbsp;自动生成表单&nbsp;<BR>&nbsp;&nbsp;2.2&nbsp;动态添加，修改，删除下拉框中的元素&nbsp;<BR>&nbsp;&nbsp;2.3&nbsp;可以输入内容的下拉框&nbsp;<BR>&nbsp;&nbsp;2.4&nbsp;多行文本框中只能输入iMax文字。如果多输入了，自动减少到iMax个文字（多用于短信发送)&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>3、打印类&nbsp;<BR>&nbsp;&nbsp;3.1&nbsp;打印控件&nbsp;<BR>4、事件类&nbsp;<BR>&nbsp;&nbsp;4.1&nbsp;屏蔽右键&nbsp;<BR>&nbsp;&nbsp;4.2&nbsp;屏蔽所有功能键&nbsp;<BR>&nbsp;&nbsp;4.3&nbsp;--&gt;&nbsp;和&lt;--&nbsp;F5&nbsp;F11,F9,F1&nbsp;<BR>&nbsp;&nbsp;4.4&nbsp;屏蔽组合键ctrl+N&nbsp;<BR>5、网页设计类&nbsp;<BR>&nbsp;&nbsp;5.1&nbsp;连续滚动的文字，图片（注意是连续的，两段文字和图片中没有空白出现）&nbsp;<BR>&nbsp;&nbsp;5.2&nbsp;html编辑控件类&nbsp;<BR>&nbsp;&nbsp;5.3&nbsp;颜色选取框控件&nbsp;<BR>&nbsp;&nbsp;5.4&nbsp;下拉菜单&nbsp;<BR>&nbsp;&nbsp;5.5&nbsp;两层或多层次的下拉菜单&nbsp;<BR>&nbsp;&nbsp;5.6&nbsp;仿IE菜单的按钮。（效果如rongshuxa.com的导航栏目)&nbsp;<BR>&nbsp;&nbsp;5.7&nbsp;状态栏，title栏的动态效果（例子很多，可以研究一下）&nbsp;<BR>&nbsp;&nbsp;5.8&nbsp;双击后，网页自动滚屏&nbsp;<BR>6、树型结构。&nbsp;<BR>&nbsp;&nbsp;6.1&nbsp;asp+SQL版&nbsp;<BR>&nbsp;&nbsp;6.2&nbsp;asp+xml+sql版&nbsp;<BR>&nbsp;&nbsp;6.3&nbsp;java+sql或者java+sql+xml&nbsp;<BR>7、无边框效果的制作&nbsp;<BR>8、连动下拉框技术&nbsp;<BR>9、文本排序&nbsp;<BR>10，画图类，含饼、柱、矢量贝滋曲线&nbsp;<BR>11，操纵客户端注册表类&nbsp;<BR>12，DIV层相关（拖拽、显示、隐藏、移动、增加）&nbsp;<BR>13，TABLAE相关(客户端动态增加行列，模拟进度条，滚动列表等)&nbsp;<BR>14，各种&lt;object&nbsp;classid=&gt;相关类，如播放器，flash与脚本互动等&nbsp;<BR>16,&nbsp;刷新/模拟无刷新&nbsp;异步调用类（XMLHttp或iframe,frame）&nbsp;<BR><BR>&nbsp;<BR><BR>&nbsp;<BR><BR>&lt;script&nbsp;language="JavaScript"&gt;&nbsp;<BR>&lt;!--&nbsp;<BR>function&nbsp;check(text){&nbsp;<BR>var&nbsp;checkstr,iMax=5,iMin=3&nbsp;<BR>checkstr="isInt:"+(parseInt(text)==text)+"\n"&nbsp;<BR>checkstr+="isID:"+((parseInt(text)==text)&amp;&amp;(text&gt;=0))+"\n"&nbsp;<BR>checkstr+="小于"+iMax+":"+((parseInt(text)==text)&amp;&amp;(text&lt;iMax))+"\n"&nbsp;<BR>checkstr+="大于"+iMin+":"+((parseInt(text)==text)&amp;&amp;(text&gt;iMin))+"\n"&nbsp;<BR>alert(checkstr)&nbsp;<BR>}&nbsp;<BR>//--&gt;&nbsp;<BR>&nbsp;<BR>&lt;form&nbsp;method=post&nbsp;action=""&gt;&nbsp;<BR>&lt;input&nbsp;type="text"&nbsp;id="text1"&nbsp;onchange="check(this.value)"&gt;&nbsp;<BR>&lt;/form&gt;&nbsp;<BR><BR>&nbsp;<BR><BR>4、事件类&nbsp;<BR>&nbsp;&nbsp;4.1&nbsp;屏蔽右键&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在body标签里加上oncontextmenu=self.event.returnValue=false&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;4.2&nbsp;屏蔽所有功能键&nbsp;<BR><BR>&nbsp;&nbsp;4.3&nbsp;--&gt;&nbsp;和&lt;--&nbsp;F5&nbsp;F11,F9,F1&nbsp;<BR><BR>&nbsp;&nbsp;4.4&nbsp;屏蔽组合键ctrl+N&nbsp;<BR><BR>&lt;script&nbsp;language=javascript&gt;&nbsp;<BR>function&nbsp;KeyDown(){&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;if&nbsp;((window.event.altKey)&amp;&amp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((window.event.keyCode==37)||&nbsp;&nbsp;&nbsp;//屏蔽&nbsp;Alt+&nbsp;方向键&nbsp;←&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(window.event.keyCode==39))){&nbsp;&nbsp;//屏蔽&nbsp;Alt+&nbsp;方向键&nbsp;→&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("不准你使用ALT+方向键前进或后退网页！"<IMG onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnValue=false;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;if&nbsp;((event.keyCode==8)||&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//屏蔽退格删除键&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(event.keyCode==116)){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//屏蔽&nbsp;F5&nbsp;刷新键&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.keyCode=0;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnValue=false;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;if&nbsp;((event.ctrlKey)&amp;&amp;(event.keyCode==78)){&nbsp;&nbsp;&nbsp;//屏蔽&nbsp;Ctrl+n&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnValue=false;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;if&nbsp;((event.shiftKey)&amp;&amp;(event.keyCode==121)){&nbsp;//屏蔽&nbsp;shift+F10&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnValue=false;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;if&nbsp;(event.keyCode==122){&nbsp;//屏蔽&nbsp;F11&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnValue=false;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;}&nbsp;<BR>只要知道keyCode即可屏蔽所有功能键&nbsp;<BR><BR><BR>一、验证类&nbsp;<BR>1、数字验证内&nbsp;<BR>&nbsp;&nbsp;1.1&nbsp;整数&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/^(-|\+)?\d+＄/.test(str)&nbsp;<BR>&nbsp;&nbsp;1.2&nbsp;大于0的整数&nbsp;（用于传来的ID的验证)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/^\d+＄/.test(str)&nbsp;<BR>&nbsp;&nbsp;1.3&nbsp;负整数的验证&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/^-\d+＄/.test(str)&nbsp;<BR>2、时间类&nbsp;<BR>&nbsp;&nbsp;2.1&nbsp;短时间，形如&nbsp;(13:04:06)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;isTime(str)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;a&nbsp;=&nbsp;str.match(/^(\d{1,2})(<IMG onclick="window.open('/images/smile.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/smile.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>?(\d{1,2})\2(\d{1,2})＄/);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(a&nbsp;==&nbsp;null)&nbsp;{alert('输入的参数不是时间格式');&nbsp;return&nbsp;false;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(a[1]&gt;24&nbsp;||&nbsp;a[3]&gt;60&nbsp;||&nbsp;a[4]&gt;60)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("时间格式不对"<IMG onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;2.2&nbsp;短日期，形如&nbsp;(2003-12-05)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;strDateTime(str)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;r&nbsp;=&nbsp;str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})＄/);&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(r==null)return&nbsp;false;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;d=&nbsp;new&nbsp;Date(r[1],&nbsp;r[3]-1,&nbsp;r[4]);&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(d.getFullYear()==r[1]&amp;&amp;(d.getMonth()+1)==r[3]&amp;&amp;d.getDate()==r[4]);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;2.3&nbsp;长时间，形如&nbsp;(2003-12-05&nbsp;13:04:06)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;strDateTime(str)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;reg&nbsp;=&nbsp;/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})&nbsp;(\d{1,2})<IMG onclick="window.open('/images/frown.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/frown.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>\d{1,2})<IMG onclick="window.open('/images/frown.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/frown.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>\d{1,2})＄/;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;r&nbsp;=&nbsp;str.match(reg);&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(r==null)return&nbsp;false;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;d=&nbsp;new&nbsp;Date(r[1],&nbsp;r[3]-1,r[4],r[5],r[6],r[7]);&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&nbsp;<BR><BR>(d.getFullYear()==r[1]&amp;&amp;(d.getMonth()+1)==r[3]&amp;&amp;d.getDate()==r[4]&amp;&amp;<BR>d.getHours()==r[5]&amp;&amp;d.getMinutes()==r[6]&amp;&amp;d.getSeconds()==&nbsp;<BR><BR>r[7]);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;2.4&nbsp;只有年和月。形如(2003-05,或者2003-5)&nbsp;<BR>&nbsp;&nbsp;2.5&nbsp;只有小时和分钟,形如(12:03)&nbsp;<BR>3、表单类&nbsp;<BR>&nbsp;&nbsp;3.1&nbsp;所有的表单的值都不能为空&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;onblur="if(this.value.replace(/^\s+|\s+＄/g,')==')alert('不能为空!')"&gt;&nbsp;<BR>&nbsp;&nbsp;3.2&nbsp;多行文本框的值不能为空。&nbsp;<BR>&nbsp;&nbsp;3.3&nbsp;多行文本框的值不能超过sMaxStrleng&nbsp;<BR>&nbsp;&nbsp;3.4&nbsp;多行文本框的值不能少于sMixStrleng&nbsp;<BR>&nbsp;&nbsp;3.5&nbsp;判断单选框是否选择。&nbsp;<BR>&nbsp;&nbsp;3.6&nbsp;判断复选框是否选择.&nbsp;<BR>&nbsp;&nbsp;3.7&nbsp;复选框的全选，多选，全不选，反选&nbsp;<BR>&nbsp;&nbsp;3.8&nbsp;文件上传过程中判断文件类型&nbsp;<BR>4、字符类&nbsp;<BR>&nbsp;&nbsp;4.1&nbsp;判断字符全部由a-Z或者是A-Z的字字母组成&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;onblur="if(/[^a-zA-Z]/g.test(this.value))alert('有错')"&gt;&nbsp;<BR>&nbsp;&nbsp;4.2&nbsp;判断字符由字母和数字组成。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;onblur="if(/[^0-9a-zA-Z]/g.test(this.value))alert('有错')"&gt;&nbsp;<BR>&nbsp;&nbsp;4.3&nbsp;判断字符由字母和数字，下划线,点号组成.且开头的只能是下划线和字母&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/^([a-zA-z_]{1})([\w]*)＄/g.test(str)&nbsp;<BR>&nbsp;&nbsp;4.4&nbsp;字符串替换函数.Replace();&nbsp;<BR>5、浏览器类&nbsp;<BR>&nbsp;&nbsp;5.1&nbsp;判断浏览器的类型&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.navigator.appName&nbsp;<BR>&nbsp;&nbsp;5.2&nbsp;判断ie的版本&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.navigator.appVersion&nbsp;<BR>&nbsp;&nbsp;5.3&nbsp;判断客户端的分辨率&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.screen.height;&nbsp;&nbsp;window.screen.width;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>6、结合类&nbsp;<BR>&nbsp;&nbsp;6.1&nbsp;email的判断。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;ismail(mail)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(new&nbsp;RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)<BR>[A-Za-z0-9]+)*\.[A-Za-z0-9]+＄/).test(mail));&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;6.2&nbsp;手机号码的验证&nbsp;<BR>&nbsp;&nbsp;6.3&nbsp;身份证的验证&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;isIdCardNo(num)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(isNaN(num))&nbsp;{alert("输入的不是数字！"<IMG onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;&nbsp;return&nbsp;false;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;len&nbsp;=&nbsp;num.length,&nbsp;re;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(len&nbsp;==&nbsp;15)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;re&nbsp;=&nbsp;new&nbsp;RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})＄/);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(len&nbsp;==&nbsp;18)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;re&nbsp;=&nbsp;new&nbsp;RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)＄/);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{alert("输入的数字位数不对！"<IMG onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;&nbsp;return&nbsp;false;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;a&nbsp;=&nbsp;num.match(re);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(a&nbsp;!=&nbsp;null)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(len==15)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;D&nbsp;=&nbsp;new&nbsp;Date("19"+a[3]+"/"+a[4]+"/"+a[5]);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;B&nbsp;=&nbsp;D.getYear()==a[3]&amp;&amp;(D.getMonth()+1)==a[4]&amp;&amp;<BR>D.getDate()==a[5];&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;D&nbsp;=&nbsp;new&nbsp;Date(a[3]+"/"+a[4]+"/"+a[5]);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;B&nbsp;=&nbsp;D.getFullYear()==a[3]&amp;&amp;(D.getMonth()+1)==a[4]&amp;&amp;<BR>D.getDate()==a[5];&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!B)&nbsp;{alert("输入的身份证号&nbsp;"+&nbsp;a[0]&nbsp;+"&nbsp;里出生日期不对！"<IMG onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;&nbsp;return&nbsp;false;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR><BR><BR>3.7&nbsp;复选框的全选，多选，全不选，反选&nbsp;<BR>&lt;form&nbsp;name=hrong&gt;&nbsp;<BR>&lt;input&nbsp;type=checkbox&nbsp;name=All&nbsp;onclick="checkAll('mm')"&gt;全选&lt;br/&gt;&nbsp;<BR>&lt;input&nbsp;type=checkbox&nbsp;name=mm&nbsp;onclick="checkItem('All')"&gt;&lt;br/&gt;&nbsp;<BR>&lt;input&nbsp;type=checkbox&nbsp;name=mm&nbsp;onclick="checkItem('All')"&gt;&lt;br/&gt;&nbsp;<BR>&lt;input&nbsp;type=checkbox&nbsp;name=mm&nbsp;onclick="checkItem('All')"&gt;&lt;br/&gt;&nbsp;<BR>&lt;input&nbsp;type=checkbox&nbsp;name=mm&nbsp;onclick="checkItem('All')"&gt;&lt;br/&gt;&nbsp;<BR>&lt;input&nbsp;type=checkbox&nbsp;name=mm&nbsp;onclick="checkItem('All')"&gt;&lt;br/&gt;&lt;br/&gt;&nbsp;<BR><BR><BR>&lt;input&nbsp;type=checkbox&nbsp;name=All2&nbsp;onclick="checkAll('mm2')"&gt;全选&lt;br/&gt;&nbsp;<BR>&lt;input&nbsp;type=checkbox&nbsp;name=mm2&nbsp;onclick="checkItem('All2')"&gt;&lt;br/&gt;&nbsp;<BR>&lt;input&nbsp;type=checkbox&nbsp;name=mm2&nbsp;onclick="checkItem('All2')"&gt;&lt;br/&gt;&nbsp;<BR>&lt;input&nbsp;type=checkbox&nbsp;name=mm2&nbsp;onclick="checkItem('All2')"&gt;&lt;br/&gt;&nbsp;<BR>&lt;input&nbsp;type=checkbox&nbsp;name=mm2&nbsp;onclick="checkItem('All2')"&gt;&lt;br/&gt;&nbsp;<BR>&lt;input&nbsp;type=checkbox&nbsp;name=mm2&nbsp;onclick="checkItem('All2')"&gt;&lt;br/&gt;&nbsp;<BR><BR>&lt;/form&gt;&nbsp;<BR><BR>&lt;SCRIPT&nbsp;LANGUAGE="JavaScript"&gt;&nbsp;<BR>function&nbsp;checkAll(str)&nbsp;<BR>{&nbsp;<BR>&nbsp;&nbsp;var&nbsp;a&nbsp;=&nbsp;document.getElementsByName(str);&nbsp;<BR>&nbsp;&nbsp;var&nbsp;n&nbsp;=&nbsp;a.length;&nbsp;<BR>&nbsp;&nbsp;for&nbsp;(var&nbsp;i=0;&nbsp;i&lt;n;&nbsp;i++)&nbsp;<BR>&nbsp;&nbsp;a[i].checked&nbsp;=&nbsp;window.event.srcElement.checked;&nbsp;<BR>}&nbsp;<BR>function&nbsp;checkItem(str)&nbsp;<BR>{&nbsp;<BR>&nbsp;&nbsp;var&nbsp;e&nbsp;=&nbsp;window.event.srcElement;&nbsp;<BR>&nbsp;&nbsp;var&nbsp;all&nbsp;=&nbsp;eval("document.hrong."+&nbsp;str);&nbsp;<BR>&nbsp;&nbsp;if&nbsp;(e.checked)&nbsp;<BR>&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;a&nbsp;=&nbsp;document.getElementsByName(e.name);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;all.checked&nbsp;=&nbsp;true;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(var&nbsp;i=0;&nbsp;i&lt;a.length;&nbsp;i++)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!a[i].checked){&nbsp;all.checked&nbsp;=&nbsp;false;&nbsp;break;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;else&nbsp;all.checked&nbsp;=&nbsp;false;&nbsp;<BR>}&nbsp;<BR>&lt;/SCRIPT&gt;&nbsp;<BR><BR>3.8&nbsp;文件上传过程中判断文件类型&nbsp;<BR>&lt;input&nbsp;type=file&nbsp;onchange="alert(this.value.match(/^(.*)(\.)(.{1,8})＄/)[3])"&gt;&nbsp;<BR><BR>&nbsp;<BR><BR>不断地清空剪贴板:&nbsp;<BR>&lt;body&nbsp;onload="setInterval('clipboardData.setData(\'Text\',\'\')',100)"&gt;&nbsp;<BR><BR><BR>&lt;script&nbsp;language="JavaScript"&nbsp;type="text/JavaScript"&gt;&nbsp;<BR>//先复制一样东西，或者文本或者图片&nbsp;<BR>if(clipboardData.getData("Text"<IMG onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>||clipboardData.getData("HTML"<IMG onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>||<BR>clipboardData.getData("URL"<IMG onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>)&nbsp;<BR>{&nbsp;<BR>alert("有效行为"<IMG onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;&nbsp;<BR>}&nbsp;<BR>&nbsp;<BR><BR><BR>全屏技术：&nbsp;<BR>真正的全屏页面解决之道！（全代码）&nbsp;&nbsp;<BR>真正全屏解决之道：&nbsp;&nbsp;<BR>1.htm&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>&lt;title&gt;无标题文档&lt;/title&gt;&nbsp;&nbsp;<BR>&lt;meta&nbsp;http-equiv="Content-Type"&nbsp;content="text/html;&nbsp;charset=gb2312"&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR><BR>&lt;body&nbsp;onload="window.open('fullscreen.htm',','fullscreen=1,scroll=no');"&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR><BR><BR>fullscreen.htm&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>&lt;title&gt;无标题文档&lt;/title&gt;&nbsp;&nbsp;<BR>&lt;meta&nbsp;http-equiv="Content-Type"&nbsp;content="text/html;&nbsp;charset=gb2312"&gt;&nbsp;&nbsp;<BR>&lt;script&nbsp;language="JavaScript1.2"&gt;&nbsp;&nbsp;&nbsp;<BR>&lt;!--&nbsp;&nbsp;&nbsp;<BR>function&nbsp;opensmallwin(myurl){&nbsp;&nbsp;&nbsp;<BR>var&nbsp;w2=300;//想弹出窗口的宽度&nbsp;&nbsp;&nbsp;<BR>var&nbsp;h2=100;//想弹出窗口的高度&nbsp;&nbsp;&nbsp;<BR>var&nbsp;w3=window.screen.width/2-w2/2;&nbsp;&nbsp;&nbsp;<BR>var&nbsp;h3=window.screen.height/2-h2/2;&nbsp;&nbsp;&nbsp;<BR>window.open(myurl,'small','toolbar=no,location=no,directories=no,status=no,menubar=no,<BR>scrollbars=no,resizable=0,width='+&nbsp;w2&nbsp;+',height='+&nbsp;h2&nbsp;+',left='+&nbsp;w3&nbsp;+',top='+&nbsp;h3&nbsp;+');&nbsp;&nbsp;&nbsp;<BR>}&nbsp;&nbsp;&nbsp;<BR>//--&gt;&nbsp;&nbsp;&nbsp;<BR><BR>&lt;!--&nbsp;&nbsp;<BR>function&nbsp;modelesswin(url,mwidth,mheight){&nbsp;&nbsp;<BR>&nbsp;&nbsp;if&nbsp;(document.all&amp;&amp;window.print)&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;eval('window.external.m2_blocked(url,"","help:0;resizable:0;status:0;center:1;<BR>scroll:0;dialogWidth:'+mwidth+'px;dialogHeight:'+mheight+'px"<IMG onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>')&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;else&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;eval('window.open(url,"","width='+mwidth+'px,height='+mheight+'px,resizable=1,<BR>scrollbars=1"<IMG onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>')&nbsp;&nbsp;<BR>&nbsp;&nbsp;}&nbsp;&nbsp;<BR>//--&gt;&nbsp;&nbsp;<BR><BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR><BR>&lt;body&nbsp;&nbsp;scroll="no"&gt;&nbsp;&nbsp;<BR>&lt;div&nbsp;align="right"&gt;&lt;a&nbsp;href="javascript:"&nbsp;onclick="window.close()"&gt;关闭<BR>&lt;/a&gt;&nbsp;&lt;/div&gt;&nbsp;&nbsp;<BR>&lt;p&gt;&lt;/P&gt;&nbsp;&nbsp;<BR>&lt;div&nbsp;align="right"&gt;&lt;a&nbsp;href="javascript:"&nbsp;onclick="opensmallwin('login.htm')"&gt;登录<BR>&lt;/a&gt;&nbsp;&lt;/div&gt;&nbsp;&nbsp;<BR><BR>&lt;p&gt;&lt;/P&gt;&nbsp;&nbsp;<BR>&lt;div&nbsp;align="center"&gt;&lt;a&nbsp;href="javascript:"&nbsp;<BR>onclick="modelesswin('login.htm',300,160)"&gt;用模态登录窗口&lt;/a&gt;&nbsp;&lt;/div&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR><BR><BR>login.htm&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>&lt;title&gt;用户登录&lt;/title&gt;&nbsp;&nbsp;<BR>&lt;meta&nbsp;http-equiv="Content-Type"&nbsp;content="text/html;&nbsp;charset=gb2312"&gt;&nbsp;&nbsp;<BR><BR>&lt;style&nbsp;type="text/css"&gt;&nbsp;&nbsp;<BR>&lt;!--&nbsp;&nbsp;<BR>body&nbsp;{&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;background-color:&nbsp;#EAEAEA;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;font-family:&nbsp;Arial,&nbsp;Helvetica,&nbsp;sans-serif;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;font-size:&nbsp;12px;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;line-height:&nbsp;24px;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;color:&nbsp;#336699;&nbsp;&nbsp;<BR>}&nbsp;&nbsp;<BR>input.boxline&nbsp;{&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;width:&nbsp;100px;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;font-family:&nbsp;"Times&nbsp;New&nbsp;Roman",&nbsp;"Times",&nbsp;"serif";&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;font-size:&nbsp;9pt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;border:&nbsp;1px&nbsp;solid&nbsp;#669999;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;height:&nbsp;18px;&nbsp;&nbsp;<BR><BR>}&nbsp;&nbsp;<BR><BR>input.whiteline&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;font-size:&nbsp;12px;&nbsp;border:&nbsp;1px&nbsp;#999999&nbsp;solid&nbsp;&nbsp;<BR>}&nbsp;&nbsp;<BR>--&gt;&nbsp;&nbsp;<BR>&lt;/style&gt;&nbsp;&nbsp;<BR>&lt;body&nbsp;leftmargin="0"&nbsp;topmargin="0"&nbsp;marginwidth="0"&nbsp;marginheight="0"&gt;&nbsp;&nbsp;<BR>&lt;table&nbsp;width="100%"&nbsp;height="100%"&nbsp;border="0"&nbsp;cellpadding="0"<BR>&nbsp;cellspacing="14"&nbsp;bgcolor="#CCCCCC"&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&lt;tr&nbsp;valign="top"&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&nbsp;width="10%"&nbsp;nowrap&nbsp;&nbsp;align="right"&gt;&lt;b&gt;用户名：&lt;/b&gt;&lt;/td&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&nbsp;width="90%"&gt;&lt;input&nbsp;name="textfield1"&nbsp;type="text"&nbsp;size="25"<BR>&nbsp;class="whiteline"&gt;&lt;/td&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&lt;/tr&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&lt;tr&nbsp;valign="top"&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&nbsp;nowrap&nbsp;align="right"&gt;&lt;b&gt;密　码：&lt;/b&gt;&lt;/td&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;input&nbsp;name="textfield12"&nbsp;type="password"&nbsp;size="25"&nbsp;<BR>class="whiteline"&gt;&lt;/td&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&lt;/tr&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&lt;tr&nbsp;valign="top"&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&nbsp;&lt;/td&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;input&nbsp;type="submit"&nbsp;name="Submit"&nbsp;value="登　　录"&nbsp;<BR>class="boxline"&gt;&lt;/td&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&lt;/tr&gt;&nbsp;&nbsp;<BR>&lt;/table&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR><BR><BR>自动关掉原窗口：&nbsp;&nbsp;<BR><BR><BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>&lt;title&gt;无标题文档&lt;/title&gt;&nbsp;&nbsp;<BR>&lt;meta&nbsp;http-equiv="Content-Type"&nbsp;content="text/html;&nbsp;charset=gb2312"&gt;&nbsp;&nbsp;<BR>&lt;style&nbsp;type="text/css"&gt;&nbsp;&nbsp;<BR>&lt;!--&nbsp;&nbsp;<BR>body&nbsp;{&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;margin-left:&nbsp;0px;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;margin-top:&nbsp;0px;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;margin-right:&nbsp;0px;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;margin-bottom:&nbsp;0px;&nbsp;&nbsp;<BR>}&nbsp;&nbsp;<BR>--&gt;&nbsp;&nbsp;<BR>&lt;/style&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR><BR>&lt;body&nbsp;onload="window.open('fullscreen.htm',','fullscreen=1,scroll=no');<BR>window.opener=null;window.close()"&gt;&nbsp;&nbsp;<BR>&lt;input&nbsp;type=button&nbsp;value=关闭&nbsp;onclick="window.opener=null;window.close()"&gt;&nbsp;&nbsp;&nbsp;<BR>&lt;!--&nbsp;IE5.5+&nbsp;不会有弹出提示&nbsp;--&gt;&nbsp;&nbsp;&nbsp;<BR><BR>&lt;OBJECT&nbsp;id=WebBrowser&nbsp;classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2&nbsp;<BR>height=0&nbsp;width=0&gt;&lt;/OBJECT&gt;&nbsp;&nbsp;&nbsp;<BR>&lt;input&nbsp;type=button&nbsp;value=关闭窗口&nbsp;onclick=document.all.WebBrowser.ExecWB(45,1)&gt;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR><BR>关键是在onload事件中加入：&nbsp;&nbsp;<BR>window.opener=null;window.close()&nbsp;&nbsp;<BR><BR><BR>预读图片：&nbsp;<BR>&lt;SCRIPT&nbsp;LANGUAGE="JavaScript"&gt;&nbsp;<BR><BR>&lt;!--&nbsp;This&nbsp;script&nbsp;and&nbsp;many&nbsp;more&nbsp;are&nbsp;available&nbsp;free&nbsp;online&nbsp;at&nbsp;--&gt;&nbsp;<BR>&lt;!--&nbsp;The&nbsp;JavaScript&nbsp;Source!!&nbsp;&lt;a&nbsp;href=<IMG alt=::URL:: hspace=2 src="http://www.blogcn.com/images/aurl.gif" align=absBottom border=0><A href="http://javascript.internet.com/" target=_blank>http://javascript.internet.com</A> &nbsp;<BR>target=_blank&gt;<IMG alt=::URL:: hspace=2 src="http://www.blogcn.com/images/aurl.gif" align=absBottom border=0><A href="http://javascript.internet.com/" target=_blank>http://javascript.internet.com</A> &nbsp;--&gt;&nbsp;<BR><BR>&lt;!--&nbsp;Begin&nbsp;<BR><BR>image1&nbsp;=&nbsp;new&nbsp;Image();&nbsp;<BR>image1.src&nbsp;=&nbsp;"image1.gif";&nbsp;<BR><BR>image2&nbsp;=&nbsp;new&nbsp;Image();&nbsp;<BR>image2.src&nbsp;=&nbsp;"image2.gif";&nbsp;<BR><BR>//&nbsp;End&nbsp;--&gt;&nbsp;<BR>&nbsp;<BR><BR>&nbsp;<BR><BR>关于两个网页刷新交互的问题&nbsp;&nbsp;<BR>JS处理方法：&nbsp;&nbsp;<BR><BR>a.htm&nbsp;&nbsp;<BR><BR>&lt;a&nbsp;href="b.htm"&nbsp;target=blank&gt;发表留言&lt;/a&gt;&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>alert("wwwwwwwwwwwwwwwwwwwwwwwwww"<IMG onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR><BR>b.htm&nbsp;&nbsp;<BR><BR>&lt;script&nbsp;language="javascript"&gt;&nbsp;&nbsp;<BR>//window.opener.location.reload();刷新父窗口&nbsp;&nbsp;<BR>//window.opener.location="2.htm"//重定向父窗口到2.htm页&nbsp;&nbsp;<BR>function&nbsp;closewindow()&nbsp;&nbsp;<BR>{&nbsp;&nbsp;<BR>window.opener.location.reload();&nbsp;&nbsp;<BR>self.close();&nbsp;&nbsp;<BR>window.opener.document.write("sssssssssssssssssss"<IMG onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;&nbsp;&nbsp;<BR>}&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>&lt;a&nbsp;href="b.htm"&nbsp;target=blank&nbsp;onclick="closewindow();"&gt;关闭&lt;/a&gt;&nbsp;&nbsp;<BR><BR>&nbsp;<BR><BR>后台处理方法：&nbsp;&nbsp;<BR><BR>private&nbsp;btnForSubmit(Object&nbsp;sender,EventArgs&nbsp;e)&nbsp;&nbsp;<BR>{&nbsp;&nbsp;<BR>&nbsp;.............&nbsp;&nbsp;<BR>&nbsp;Response.Write("window.opener.document.execCommand('refresh');<BR>window.opener=';window.close();"<IMG onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;&nbsp;&nbsp;<BR>//string&nbsp;str="window.opener.document.execCommand('refresh');<BR>window.opener=';window.close();";&nbsp;&nbsp;<BR>//this.RegisterStartupScript("mycode",str);&nbsp;&nbsp;<BR>external.m2_blocked()、external.m2_blocked()方法使用详解&nbsp;<BR><BR>&nbsp;Javascript有许多内建的方法来产生对话框，如：window.alert(),&nbsp;<BR>window.confirm(),window.prompt().等。&nbsp;然而IE提供更多的方法支持对话框。如：&nbsp;<BR><BR>　　external.m2_blocked()&nbsp;(IE&nbsp;4+&nbsp;支持)&nbsp;<BR>　　external.m2_blocked()&nbsp;(IE&nbsp;5+&nbsp;支持)&nbsp;<BR><BR><BR>&nbsp;window.external.m2_blocked()方法用来创建一个显示HTML内容的模态对话框，<BR>由于是对话框，因此它并没有一般用window.open()打开的窗口的所有属性。&nbsp;<BR>&nbsp;window.external.m2_blocked()方法用来创建一个显示HTML内容的非模态对话框。&nbsp;<BR><BR>&nbsp;当我们用external.m2_blocked()打开窗口时，不必用window.close()去关闭它，<BR>当以非模态方式[IE5]打开时，&nbsp;打开对话框的窗口仍可以进行其他的操作，即对话框<BR>不总是最上面的焦点，当打开它的窗口ＵＲＬ改变时，它自动关闭。而模态[ＩＥ４]<BR>方式的对话框始终有焦点（焦点不可移走，直到它关闭）。模态对话框和打开它的窗<BR>口相联系，因此我们打开另外的窗口时，他们的链接关系依然保存，并且隐藏在活动<BR>窗口的下面。&nbsp;<BR><BR>使用方法如下：&nbsp;<BR>&nbsp;vReturnValue=window.external.m2_blocked(sURL&nbsp;[,vArguments]&nbsp;[,sFeatures])&nbsp;<BR>&nbsp;vReturnValue=window.external.m2_blocked(sURL&nbsp;[,vArguments]&nbsp;[,sFeatures])&nbsp;<BR>参数说明：&nbsp;<BR>&nbsp;sURL&nbsp;<BR>&nbsp;必选参数，类型：字符串。用来指定对话框要显示的文档的URL。&nbsp;<BR>&nbsp;vArguments&nbsp;<BR>&nbsp;可选参数，类型：变体。用来向对话框传递参数。传递的参数类型不限，包括数组等。<BR>对话框通过window.dialogArguments来取得传递进来的参数。&nbsp;<BR>&nbsp;sFeatures&nbsp;<BR>&nbsp;可选参数，类型：字符串。用来描述对话框的外观等信息，可以使用以下的一个或几个，<BR>用分号“;”隔开。&nbsp;<BR>&nbsp;&nbsp;dialogHeight&nbsp;对话框高度，不小于１００px，ＩＥ４中dialogHeight&nbsp;和&nbsp;dialogWidth<BR>&nbsp;默认的单位是em，而ＩＥ５中是px，为方便其见，在定义modal方式的对话框时，用px<BR>做单位。&nbsp;<BR>&nbsp;　　dialogWidth:&nbsp;对话框宽度。&nbsp;<BR>&nbsp;　　dialogLeft:&nbsp;距离桌面左的距离。&nbsp;<BR>&nbsp;　　dialogTop:&nbsp;离桌面上的距离。&nbsp;<BR>&nbsp;　　center:&nbsp;{yes&nbsp;|&nbsp;no&nbsp;|&nbsp;1&nbsp;|&nbsp;0&nbsp;}：窗口是否居中，默认yes，但仍可以指定高度和宽度。&nbsp;<BR>&nbsp;　　help:&nbsp;{yes&nbsp;|&nbsp;no&nbsp;|&nbsp;1&nbsp;|&nbsp;0&nbsp;}：是否显示帮助按钮，默认yes。&nbsp;<BR>&nbsp;　　resizable:&nbsp;{yes&nbsp;|&nbsp;no&nbsp;|&nbsp;1&nbsp;|&nbsp;0&nbsp;}&nbsp;[ＩＥ５＋]：是否可被改变大小。默认no。&nbsp;<BR>&nbsp;　　status:&nbsp;{yes&nbsp;|&nbsp;no&nbsp;|&nbsp;1&nbsp;|&nbsp;0&nbsp;}&nbsp;[IE5+]：是否显示状态栏。默认为yes[&nbsp;Modeless]<BR>或no[Modal]。&nbsp;<BR>&nbsp;&nbsp;scroll:{&nbsp;yes&nbsp;|&nbsp;no&nbsp;|&nbsp;1&nbsp;|&nbsp;0&nbsp;|&nbsp;on&nbsp;|&nbsp;off&nbsp;}：指明对话框是否显示滚动条。默认为yes。&nbsp;<BR><BR>&nbsp;&nbsp;还有几个属性是用在HTA中的，在一般的网页中一般不使用。&nbsp;<BR>&nbsp;&nbsp;dialogHide:{&nbsp;yes&nbsp;|&nbsp;no&nbsp;|&nbsp;1&nbsp;|&nbsp;0&nbsp;|&nbsp;on&nbsp;|&nbsp;off&nbsp;}：在打印或者打印预览时对话框是否隐藏。<BR>默认为no。&nbsp;<BR>&nbsp;&nbsp;edge:{&nbsp;sunken&nbsp;|&nbsp;raised&nbsp;}：指明对话框的边框样式。默认为raised。&nbsp;<BR>&nbsp;&nbsp;unadorned:{&nbsp;yes&nbsp;|&nbsp;no&nbsp;|&nbsp;1&nbsp;|&nbsp;0&nbsp;|&nbsp;on&nbsp;|&nbsp;off&nbsp;}：默认为no。&nbsp;<BR><BR>&nbsp;传入参数：&nbsp;<BR>&nbsp;要想对话框传递参数，是通过vArguments来进行传递的。类型不限制，对于字符串类型，<BR>最大为4096个字符。也可以传递对象，例如：&nbsp;<BR><BR>&nbsp;test1.htm&nbsp;<BR>&nbsp;====================&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;var&nbsp;mxh1&nbsp;=&nbsp;new&nbsp;Array("mxh","net_lover","孟子E章"<IMG onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>&nbsp;<BR>&nbsp;&nbsp;var&nbsp;mxh2&nbsp;=&nbsp;window.open("about:blank","window_mxh"<IMG onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>&nbsp;<BR>&nbsp;&nbsp;//&nbsp;向对话框传递数组&nbsp;<BR>&nbsp;&nbsp;window.external.m2_blocked("test2.htm",mxh1)&nbsp;<BR>&nbsp;&nbsp;//&nbsp;向对话框传递window对象&nbsp;<BR>&nbsp;&nbsp;window.external.m2_blocked("test3.htm",mxh2)&nbsp;<BR>&nbsp;&nbsp;<BR><BR>&nbsp;test2.htm&nbsp;<BR>&nbsp;====================&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;var&nbsp;a&nbsp;=&nbsp;window.dialogArguments&nbsp;<BR>&nbsp;&nbsp;alert("您传递的参数为："&nbsp;+&nbsp;a)&nbsp;<BR>&nbsp;&nbsp;<BR><BR>&nbsp;test3.htm&nbsp;<BR>&nbsp;====================&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;var&nbsp;a&nbsp;=&nbsp;window.dialogArguments&nbsp;<BR>&nbsp;&nbsp;alert("您传递的参数为window对象，名称："&nbsp;+&nbsp;a.name)&nbsp;<BR>&nbsp;&nbsp;<BR><BR>&nbsp;可以通过window.returnValue向打开对话框的窗口返回信息，当然也可以是对象。<BR>例如：&nbsp;<BR><BR>&nbsp;test4.htm&nbsp;<BR>&nbsp;===================&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;var&nbsp;a&nbsp;=&nbsp;window.external.m2_blocked("test5.htm"<IMG onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>&nbsp;<BR>&nbsp;&nbsp;for(i=0;i&lt;a.length;i++)&nbsp;alert(a[i])&nbsp;<BR>&nbsp;&nbsp;<BR><BR>&nbsp;test5.htm&nbsp;<BR>&nbsp;===================&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;function&nbsp;sendTo()&nbsp;<BR>&nbsp;{&nbsp;<BR>&nbsp;&nbsp;var&nbsp;a=new&nbsp;Array("a","b"<IMG onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>&nbsp;<BR>&nbsp;&nbsp;window.returnValue&nbsp;=&nbsp;a&nbsp;<BR>&nbsp;&nbsp;window.close()&nbsp;<BR>&nbsp;}&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&lt;form&gt;&nbsp;<BR>&nbsp;&nbsp;&lt;input&nbsp;value="返回"&nbsp;type=button&nbsp;onclick="sendTo()"&gt;&nbsp;<BR>&nbsp;&lt;/form&gt;&nbsp;<BR><BR>&nbsp;常见问题：&nbsp;<BR>&nbsp;1，如何在模态对话框中进行提交而不新开窗口？&nbsp;<BR>&nbsp;如果你&nbsp;的&nbsp;浏览器是IE5.5+,可以在对话框中使用带name属性的iframe，提交时可以<BR>制定target为该iframe的name。对于IE4+，你可以用高度为0的frame来作：例子，&nbsp;<BR><BR>&nbsp;test6.htm&nbsp;<BR>&nbsp;===================&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;window.external.m2_blocked("test7.htm"<IMG onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>&nbsp;<BR>&nbsp;&nbsp;<BR><BR>&nbsp;test7.htm&nbsp;<BR>&nbsp;===================&nbsp;<BR>&nbsp;if(window.location.search)&nbsp;alert(window.location.search)&nbsp;<BR>&nbsp;&lt;frameset&nbsp;rows="0,*"&gt;&nbsp;<BR>&nbsp;&nbsp;&lt;frame&nbsp;src="about:blank"&gt;&nbsp;<BR>&nbsp;&nbsp;&lt;frame&nbsp;src="test8.htm"&gt;&nbsp;<BR>&nbsp;&lt;/frameset&gt;&nbsp;<BR><BR>&nbsp;test8.htm&nbsp;<BR>&nbsp;===================&nbsp;<BR>&nbsp;&lt;form&nbsp;target="_self"&nbsp;method="get"&gt;&nbsp;<BR>&nbsp;&lt;input&nbsp;name=txt&nbsp;value="test"&gt;&nbsp;<BR>&nbsp;&lt;input&nbsp;type=submit&gt;&nbsp;<BR>&nbsp;&lt;/form&gt;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;if(window.location.search)&nbsp;alert(window.location.search)&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;2,可以通过<IMG alt=::URL:: hspace=2 src="http://www.blogcn.com/images/aurl.gif" align=absBottom border=0><A href="http://servername/virtualdirname/test.htm?name=mxh方式直接向" target=_blank>http://servername/virtualdirname/test.htm?name=mxh方式直接向</A> <BR>对话框传递参数吗？&nbsp;<BR>&nbsp;答案是不能。但在frame里是可以的。&nbsp;<BR>//屏蔽&nbsp;F5&nbsp;刷新键&nbsp;<BR><BR><BR>function&nbsp;document.onkeydown()&nbsp;<BR>{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;k&nbsp;=&nbsp;window.event.keyCode;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(k&nbsp;==&nbsp;116)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//屏蔽&nbsp;F5&nbsp;刷新键&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.event.keyCode&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.event.returnValue=&nbsp;false;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>}&nbsp;<BR><BR><BR>&lt;script&nbsp;language="Javascript"&gt;&nbsp;<BR>&nbsp;//屏蔽鼠标右键、Ctrl+N、Shift+F10、F5刷新、退格键&nbsp;<BR>&nbsp;//屏蔽F1帮助&nbsp;<BR>function&nbsp;window.onhelp()&nbsp;<BR>{&nbsp;<BR>&nbsp;&nbsp;&nbsp;return&nbsp;false&nbsp;<BR>}&nbsp;<BR>function&nbsp;KeyDown()&nbsp;<BR>{&nbsp;<BR>&nbsp;&nbsp;//alert(event.keyCode);&nbsp;<BR>&nbsp;&nbsp;&nbsp;//屏蔽&nbsp;Alt+&nbsp;方向键&nbsp;←&nbsp;屏蔽&nbsp;Alt+&nbsp;方向键&nbsp;→&nbsp;<BR>&nbsp;&nbsp;if&nbsp;((window.event.altKey)&amp;&amp;((window.event.keyCode==37)||<BR>(window.event.keyCode==39)))&nbsp;<BR>&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//alert("不准你使用ALT+方向键前进或后退网页！"<IMG onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnValue=false;&nbsp;<BR>&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;//屏蔽退格删除键,屏蔽&nbsp;F5&nbsp;刷新键,Ctrl&nbsp;+&nbsp;R&nbsp;<BR>&nbsp;&nbsp;if&nbsp;((event.keyCode==116)||(event.ctrlKey&nbsp;&amp;&amp;&nbsp;event.keyCode==82))&nbsp;<BR>&nbsp;&nbsp;{&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.keyCode=0;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnValue=false;&nbsp;<BR>&nbsp;&nbsp;}&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;//屏蔽&nbsp;Ctrl+n&nbsp;<BR>&nbsp;&nbsp;if&nbsp;((event.ctrlKey)&amp;&amp;(event.keyCode==78))&nbsp;<BR>&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnValue=false;&nbsp;<BR>&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;//屏蔽&nbsp;shift+F10&nbsp;<BR>&nbsp;&nbsp;if&nbsp;((event.shiftKey)&amp;&amp;(event.keyCode==121))&nbsp;<BR>&nbsp;&nbsp;{&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnValue=false;&nbsp;<BR>&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;//屏蔽&nbsp;shift&nbsp;加鼠标左键新开一网页&nbsp;<BR>&nbsp;&nbsp;if&nbsp;(window.event.srcElement.tagName&nbsp;==&nbsp;"A"&nbsp;&amp;&amp;&nbsp;window.event.shiftKey)&nbsp;&nbsp;<BR>&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;window.event.returnValue&nbsp;=&nbsp;false;&nbsp;<BR>&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;//屏蔽Alt+F4&nbsp;<BR>&nbsp;&nbsp;if&nbsp;((window.event.altKey)&amp;&amp;(window.event.keyCode==115))&nbsp;<BR>&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.external.m2_blocked("about:blank","","dialogWidth:1px;dialogheight:1px"<IMG onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;&nbsp;<BR>&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;//屏蔽Ctrl+A&nbsp;<BR>&nbsp;&nbsp;if((event.ctrlKey)&amp;&amp;(event.keyCode==65))&nbsp;<BR>&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;return&nbsp;false;&nbsp;<BR>&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>}&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&lt;/HTML&gt;&nbsp;&nbsp;<BR><BR><FONT class=diary_poster><!--子菜单开始--></P>
<DIV id=blog_sub_st><BR></DIV></FONT><img src ="http://www.blogjava.net/jhyan/aggbug/17779.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jhyan/" target="_blank">Joshua Yan</a> 2005-11-02 11:37 <a href="http://www.blogjava.net/jhyan/archive/2005/11/02/17779.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>编写简单SOAP客户机(转载)</title><link>http://www.blogjava.net/jhyan/archive/2005/10/28/17162.html</link><dc:creator>Joshua Yan</dc:creator><author>Joshua Yan</author><pubDate>Fri, 28 Oct 2005 05:26:00 GMT</pubDate><guid>http://www.blogjava.net/jhyan/archive/2005/10/28/17162.html</guid><wfw:comment>http://www.blogjava.net/jhyan/comments/17162.html</wfw:comment><comments>http://www.blogjava.net/jhyan/archive/2005/10/28/17162.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jhyan/comments/commentRss/17162.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jhyan/services/trackbacks/17162.html</trackback:ping><description><![CDATA[<TABLE class=tablenormal>
<TBODY>
<TR>
<TD>
<TABLE class=tablenormal>
<TBODY>
<TR>
<TD vAlign=top height=150>本文描述了一个用Java编写的不使用专门SOAP库的简单通用SOAP客户机。该客户机可以让您用任何 XML 编辑器（或文本编辑器）创建自己的请求， 而不是在暗中为您创建 SOAP 请求 XML 文档。 该客户机向您显示实际的 SOAP 响应 XML 文档，而不是仅仅提供远程方法的返回值。 这个简短的 Java 程序精确显示了什么是 SOAP：打开 HTTP 连接、发送适当 XML 以调用远程方法、接着读取服务器返回的 XML 响应。 <BR><BR><BR>通用 Java SOAP 客户机<BR><BR><BR>SOAP（简单对象访问协议）是 IBM、Microsoft、DevelopMentor 和 UserLand Software 为在网络上交换信息而开发的一种已在发展的 W3C 标准。 随着Web上可以公开使用的SOAP服务器的不断增加，SOAP几乎对用任何语言编写的程序——即使是用流行的简单语言（如 Visual Basic、JavaScript 和 perl）编写的非常短小的程序——执行着HTML对Web浏览器所做的事：它为这些程序提供一个简单的方法来利用万维网上不断增加的可用信息源。 <BR><BR>与 HTML 类似，SOAP 提供一套标记来表示在Web上使用HTTP传输协议（从 SOAP 1.1 以来，SMTP 也可以）发送的不同信息块的作用。但是，SOAP向您提供的能力远远强于HTML。使用SOAP，您的程序向 SOAP服务器发送“SOAP请求”（一个简短的XML文档，描述在远程机器上要调用的方法和所有要传递给它的参数）。SOAP服务器将尝试用那些参数执行该方法，并将SOAP响应发回程序。响应可以是执行的结果，也可以是相应的错误消息。可以使用公共SOAP服务器为提出请求的客户机提供股票价格、最新的货币兑换率、FedEx 包裹跟踪信息、代数表达式的解决方案以及其它各类信息。 <BR><BR>在SOAP存在之前，尝试使用这种信息的程序必须先捕获Web页面，然后“刮下”HTML，以查找适当的文本。 对这些Web页面进行可视的重新设计（例如，将当前股票价格放到表中第三列而不是第二列中）就可以使这些程序无用。SOAP规范以及它所携带的简要的SOAP请求和响应模式为客户机和服务器之间的联络提供了一个框架，该框架是那些强健得多的信息收集工具的基础。 <BR><BR>有许多SOAP客户机可用于大多数的流行编程语言；有关详尽列表，请参阅 SOAP::Lite for Perl 主页上的 SOAP Toolkits 部分（请参阅参考资料）。大多数 SOAP 客户机都提供类库、COM 对象或从您自己程序调用的等同对象。通常，使用这些客户机库遵循以下模式： <BR><BR>· 程序传递要调用的远程方法的名称和所有必需参数。 <BR><BR>· 库组装 SOAP 请求的适当 XML 文档以将这一信息打包。 <BR><BR>· 库将这一 XML 文档传递给 SOAP 端点 URL 标识的 SOAP 服务器，这与通过指定服务器的 URL 将浏览器指向 Web 服务器地址很类似。 <BR><BR>· SOAP 服务器尝试执行方法后，它组装包含执行结果的 SOAP 响应 XML 文档，并将它发回 SOAP 客户机。 <BR><BR>· 接收SOAP响应时，客户机库对XML进行语法分析以获得方法调用的结果，并将结果传递给使用库的程序。 <BR><BR><BR>SOAPClient4XG<BR><BR><BR>SOAP 的介绍（请参阅 developerWorks 上 Graham Glass 编写得极佳的“ Web 服务革命”专栏）总是讨论用于 SOAP 请求和响应的 XML 的结构，但是我接触到的 SOAP 客户机总是会暗中进行 XML 组装和语法分析，所以我从来不用知道。 作为使用 XML 的人员，我曾想自己执行 XML 部分；我认为如果 SOAP 这样简单，那么我应该能够编写一个简单的 SOAP 客户机来读取 SOAP 请求的 XML 文档、将它发送到命令行上指定的 SOAP 端点 URL、读回响应文档并输出该响应。这将使它成为一个真正的通用 SOAP 客户机，因为它调用任何 SOAP 服务器上的任何方法。 <BR><BR>清单1中显示的 SoapClient4XG（“SOAP Client for XML Geeks”）Java类执行该任务，而不使用早先提到的 SOAP Toolkits 页面上列出的任何专用 Java SOAP 类（请参阅参考资料）。 检查了必需的 SOAP 端点 URL 和 SOAP XML 文档文件名参数及可选的 SOAP 操作参数后，读入文件，将它发送到 SOAP 服务器，读回响应，然后将其输出到标准出口。 <BR><BR>清单1 <BR><BR>Listing 1. The complete SOAP client <BR>/** <BR>* SOAPClient4XG. Read the SOAP envelope file passed as the second<BR>* parameter, pass it to the SOAP endpoint passed as the first parameter, and<BR>* print out the SOAP envelope passed as a response.&nbsp;&nbsp;with help from Michael<BR>* Brennan 03/09/01<BR>* <BR>*<BR>* @author&nbsp;&nbsp;Bob DuCharme<BR>* @version 1.1<BR>* @param&nbsp;&nbsp; SOAPUrl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URL of SOAP Endpoint to send request.<BR>* @param&nbsp;&nbsp; xmlFile2Send A file with an XML document of the request.&nbsp;&nbsp;<BR>*<BR>* 5/23/01 revision: SOAPAction added<BR>*/<BR>import java.io.*;<BR>import java.net.*;<BR>public class SOAPClient4XG {<BR>&nbsp;&nbsp;&nbsp;&nbsp;public static void main(String[] args) throws Exception {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (args.length&nbsp;&nbsp;&lt; 2) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println("Usage:&nbsp;&nbsp;java SOAPClient4XG " +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "http://soapURL soapEnvelopefile.xml" +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " [SOAPAction]");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println("SOAPAction is optional.");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.exit(1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String SOAPUrl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= args[0];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String xmlFile2Send = args[1];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String SOAPAction = "";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (args.length&nbsp;&nbsp;&gt; 2) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SOAPAction = args[2];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Create the connection where we&amp;#39;re going to send the file.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URL url = new URL(SOAPUrl);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URLConnection connection = url.openConnection();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpURLConnection httpConn = (HttpURLConnection) connection;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Open the input file. After we copy it to a byte array, we can see<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// how big it is so that we can set the HTTP Cotent-Length<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// property. (See complete e-mail below for more on this.)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileInputStream fin = new FileInputStream(xmlFile2Send);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ByteArrayOutputStream bout = new ByteArrayOutputStream();&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Copy the SOAP file to the open connection.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;copy(fin,bout);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fin.close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte[] b = bout.toByteArray();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Set the appropriate HTTP parameters.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;httpConn.setRequestProperty( "Content-Length",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String.valueOf( b.length ) );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;httpConn.setRequestProperty("Content-Type","text/xml; charset=utf-8");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;httpConn.setRequestProperty("SOAPAction",SOAPAction);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;httpConn.setRequestMethod( "POST" );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;httpConn.setDoOutput(true);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;httpConn.setDoInput(true);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Everything&amp;#39;s set up; send the XML that was read in to b.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputStream out = httpConn.getOutputStream();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write( b );&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Read the response and write it to standard out.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStreamReader isr =<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new InputStreamReader(httpConn.getInputStream());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedReader in = new BufferedReader(isr);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String inputLine;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while ((inputLine = in.readLine()) != null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(inputLine);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in.close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;// copy method from From E.R. Harold&amp;#39;s book "Java I/O"<BR>&nbsp;&nbsp;public static void copy(InputStream in, OutputStream out) <BR>&nbsp;&nbsp; throws IOException {<BR>&nbsp;&nbsp;&nbsp;&nbsp;// do not allow other threads to read from the<BR>&nbsp;&nbsp;&nbsp;&nbsp;// input or write to the output while copying is<BR>&nbsp;&nbsp;&nbsp;&nbsp;// taking place<BR>&nbsp;&nbsp;&nbsp;&nbsp;synchronized (in) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;synchronized (out) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte[] buffer = new byte[256];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (true) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int bytesRead = in.read(buffer);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (bytesRead == -1) break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(buffer, 0, bytesRead);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;} <BR>}<BR><BR><!-- the post be hidden --></TD></TR></TBODY></TABLE></TD></TR><!-- user pen -->
<TR>
<TD><BR></TD></TR></TBODY></TABLE><img src ="http://www.blogjava.net/jhyan/aggbug/17162.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jhyan/" target="_blank">Joshua Yan</a> 2005-10-28 13:26 <a href="http://www.blogjava.net/jhyan/archive/2005/10/28/17162.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>