??xml version="1.0" encoding="utf-8" standalone="yes"?> 400 h出错 ׃语法格式有误Q服务器无法理解此请求。不作修改,客户E序无法重复此h? 此错误表明传输给服务器的证书与登录服务器所需的证书不匚w?/p>
请与 Web 服务器的理员联p,以确认您是否h讉K所h资源的权限?/p>
此错误表明传输给服务器的证书与登录服务器所需的证书不匚w。此错误通常由未发送正的 WWW 验证表头字段所致?/p>
请与 Web 服务器的理员联p,以确认您是否h讉K所h资源的权限?/p>
此错误表明客h传输的证书没有对服务器中特定资源的访问权限。此资源可能是客h中的地址行所列出的网|文gQ也可能是处理客h中的地址行所列出的文件所需服务器上的其他文件?/p>
误录试图访问的完整地址Qƈ?Web 服务器的理员联pM认您是否具有访问所h资源的权限?/p>
此错误表?Web 服务器已l安装了{选程序,用以验证q接到服务器的用戗此{选程序拒l连接到此服务器的真品证书的讉K?/p>
误录试图访问的完整地址Qƈ?Web 服务器的理员联pM认您是否具有访问所h资源的权限?/p>
此错误表明试图用的 Web服务器中的地址已经安装?ISAPI ?CGIE序Q在l箋之前用以验证用户的证书。此E序拒绝用来q接到服务器的真品证书的讉K?/p>
误录试图访问的完整地址Qƈ?Web服务器的理员联pM认您是否具有访问所h资源的权? 如果从ƈ不允许执行程序的目录中执?CGI、ISAPI或其他执行程序就可能引v此错误?/p>
如果问题依然存在Q请?Web 服务器的理员联pR?/p>
如果没有可用的默认网|未启用此目录的目录浏览,或者试图显C驻留在只标Cؓ执行或脚本权限的目录中的HTML |׃D此错误?/p>
如果问题依然存在Q请?Web 服务器的理员联pR?/p>
如果试图上蝲或修改不允许写访问的目录中的文gQ就会导致此问题?/p>
如果问题依然存在Q请?Web服务器的理员联pR?/p>
此错误表明试图访问的|页受安全套接字层(SSLQ的保护。要查看Q必d试图讉K的地址前输入https:// 以启?SSL?/p>
如果问题依然存在Q请?Web服务器的理员联pR?/p>
此错误消息表明您试图讉K的资源受 128位的安全套接字层QSSLQ保护。要查看此资源,需要有支持此SSL 层的览器?/p>
L认浏览器是否支持 128 ?SSL安全性。如果支持,׃ Web服务器的理员联p,q报告问题?/p>
如果服务器含有不允许讉K此站点的 IP地址列表Qƈ且您正用的 IP地址在此列表中,׃D此问题?/p>
如果问题依然存在Q请?Web服务器的理员联pR?/p>
当试图访问的资源要求览器具有服务器可识别的用户安全套接字层QSSLQ证书时׃D此问题。可用来验证您是否ؓ此资源的合法用户?/p>
请与 Web服务器的理员联pM获取有效的用戯书?/p>
如果 Web服务器不求提供服务,或您没有q接到此站点的权限时Q就会导致此问题?/p>
请与 Web 服务器的理员联pR?/p>
如果 Web太忙q且׃量q大而无法处理您的请求时׃D此问题。请E后再次q接?/p>
如果问题依然存在Q请?Web 服务器的理员联pR?/p>
此时 Web 服务器的配置存在问题?/p>
如果问题依然存在Q请?Web服务器的理员联pR?/p>
在n份验证的q程中如果用戯入错误的密码Q就会导致此错误。请h|页q试?/p>
如果问题依然存在Q请?Web服务器的理员联pR?/p>
拒绝用户证书试图讉K?Web 站点?/p>
请与站点理员联pM建立用户证书权限。如果必要,也可以更改用戯书ƈ重试? 404 找不?/p>
Web 服务器找不到您所h的文件或脚本。请查URL 以确保\径正?/p>
如果问题依然存在Q请与服务器的管理员联系? 405 不允许此Ҏ 对于h所标识的资源,不允怋用请求行中所指定的方法。请保为所h的资源设|了正确?MIME cd?/p>
如果问题依然存在Q请与服务器的管理员联系? 406 不可接受 Ҏ此请求中所发送的“接受”标题Q此h所标识的资源只能生成内容特征ؓ“不可接受”的响应实体?/p>
如果问题依然存在Q请与服务器的管理员联系? 407 需要代理n份验?/p>
在可为此h提供服务之前Q您必须验证此代理服务器。请dC理服务器Q然后重试?/p>
如果问题依然存在Q请?Web 服务器的理员联pR? 412 前提条gp| 在服务器上测试前提条件时Q部分请求标题字D中所l定的前提条件估计ؓFALSE。客h前提条件放|在当前资源 metainformationQ标题字D|据)中,以防止所h的方法被误用到其他资源?/p>
如果问题依然存在Q请?Web 服务器的理员联pR? 414 Request-URI 太长 Request-URL太长Q服务器拒绝服务此请求。仅在下列条件下才有可能发生此条Ӟ 客户机错误地?POST h转换为具有较长的查询信息?GET h?/p>
客户机遇C重定向问题(例如Q指向自w的后缀的重定向前缀Q?/p>
服务器正遭受试图利用某些服务器(固定长度的~冲区用于读取或执行 Request-URIQ中的安全性漏z的客户q扰?/p>
如果问题依然存在Q请?Web 服务器的理员联pR? 500 服务器的内部错误 Web 服务器不能执行此h。请E后重试此请求?/p>
如果问题依然存在Q请?Web服务器的理员联pR? 501 未实?/p>
Web 服务器不支持实现此请求所需的功能。请查URL 中的错误Q如果问题依然存在,请与 Web服务器的理员联pR? 502 |关出错 当用作网x代理Ӟ服务器将从试囑֮现此h时所讉K的upstream 服务器中接收无效的响应?/p>
试用了一下FCKeditor,Ҏ|上的文章小l一下: 2.建立目:tomcat/webapps/TestFCKeditor. 3.FCKeditor2.2解压~?整个目录FCKeditor复制到项目的根目录下Q?br>目录l构为:tomcat/webapps/TestFCKeditor/FCKeditor 4.FCKeditor-2.3.zip压羃包中\web\WEB-INF\目录下的web.xml文g合ƈ到项目的\WEB-INF\目录下的web.xml文g中?/p>
5. 修改合ƈ后的web.xml文gQ将名ؓSimpleUploader的Servlet的enabled参数值改为trueQ?br>以允怸传功能,Connector Servlet的baseDir参数值用于设|上传文件存攄位置?br>d标签定义: q行图: 6. 上面文g中两个servlet的映分别ؓQ?editor/filemanager/browser/default/connectors/jsp/connector 7.q入skin文g夹,如果你想使用fckeditor默认的这U奶黄色Q?br>那就把除了default文g夹外的另两个文g夹直接删? 8.删除/FCKeditor/目录下除fckconfig.js, fckeditor.js, fckstyles.xml, fcktemplates.xml四个文g以外的所有文? 9.打开/FCKeditor/fckconfig.js 10.其它 FCKConfig.TabSpaces = 0 ; 改ؓFCKConfig.TabSpaces = 1 ; 卛_~辑器域内可以用Tab键?/p>
如果你的~辑器还用在|站前台的话Q比如说用于留言本或是日记回复时Q那׃得不考虑安全了, 扑ֈQ?FCKConfig.FontNames = 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ; 7.d文g /TestFCKeditor/test.jsp: <%-- <form action="show.jsp" method="post" target="_blank"> <%-- d文g/TestFCKeditor/show.jsp: 8.览http://localhost:8080/TestFCKeditor/test.jsp <input type="file" name=”file1”> file中的value是只ȝQ不能通过document.all.file1.value=”c:\tmep\*.*”Q这也是Z安全的考虑?/span> 但不是不能ؓfile讄默认|只支?/span>WINWOWSQ?/span> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> <script> function init(){ document.all.file1.focus(); var WshShell=new ActiveXObject("WScript.Shell"); WshShell.sendKeys("C:\\WINDOWS\\System.dat"); } </script> </HEAD> <BODY onload="init()"> <input id="file1" type="file" name="file1"> </BODY> </HTML>
众所周知QInternet的基本协议是TCP/IP协议Q目前广泛采用的FTP、Archie Gopher{是建立在TCP/IP协议之上的应用层协议Q不同的协议对应着不同的应用?br> WWW服务器用的主要协议是HTTP协议Q即文体传输协议。由于HTTP协议支持的服务不限于WWWQ还可以是其它服务,因而HTTP协议允许用户在统一的界面下Q采用不同的协议讉K不同的服务,如FTP、Archie、SMTP、NNTP{。另外,HTTP协议q可用于名字服务器和分布式对象管理?/p>
2.1 HTTP协议?/strong> 2.2 HTTP协议的几个重要概?/strong> 2.3 HTTP协议的运作方?/strong>
HTTP-GET和HTTP-POST Get ?Post 的区别两点: 一、这两者传递参数时所用的~码不一定是一L。在 Tomcat 中似?Get 的编码方式是Ҏ面中指定的~码方式Q?Post 则是一直用同一U编码方式,可在 Tomcat ?server.xml 中配|?/p>
二、?Get 的时候,参数会显C在地址栏上Q?Post 不会?/p>
所以,如果q些数据是中文数据而且是非敏感数据Q那么?getQ如果用戯入的数据不是中文字符而且包含敏感数据Q那么还是?post为好?/p>
表单提交中get和post方式的区别归U_下几点: 1. get是从服务器上获取数据Qpost是向服务器传送数据?br>2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字D一一对应Q在URL中可以看到。post是通过HTTP post机制Q将表单内各个字D与其内Ҏ|在HTML HEADER内一起传送到ACTION属性所指的URL地址。用L不到q个q程?br>3. 对于get方式Q服务器端用Request.QueryString获取变量的|对于post方式Q服务器端用Request.Form获取提交的数据?br>4. get传送的数据量较,不能大于2KB。post传送的数据量较大,一般被默认Z受限制。但理论上,IIS4中最大量?0KBQIIS5中ؓ100KB?br>5. get安全性非怽Qpost安全性较高?/p>
下面举一个简单的例子来说明它们的区别Q?/p>
<!-分别通过get和post方式提交表单--> <% If Request.QueryString("Text") <> "" Then %> <% If Request.Form("Text") <> "" Then %>
]]>
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--
function showLayer(content,x,y)
{
if(content != '')
{
Layer.style.visibility = 'visible';
Layer.style.left = x + document.body.scrollLeft - 50;
Layer.style.top = y + document.body.scrollTop + 20;
ShowContent.innerHTML = content;
}
}
//-->
</SCRIPT>
<BODY>
<TABLE border="1" cellspacing="1">
<TR onMouseOver="showLayer('ROW1',event.clientX,event.clientY)">
<TD >1</TD>
<TD>2</TD>
<TD>3</TD>
</TR>
<TR onMouseOver="showLayer('ROW2',event.clientX,event.clientY)">
<TD >1</TD>
<TD>2</TD>
<TD>3</TD>
</TR>
</TABLE>
<div id="Layer" style="position:absolute; left:10px; top:0px; width:400px; height:200px; z-index:1;visibility:hidden;">
<table width="400" border="0" cellspacing="10" bgcolor="#ddffFF" style="{ border-color: #3388cc; border-style: solid; border-width: 1px;}">
<tr>
<td style="font-size:9pt" id="ShowContent"></td>
</tr>
</table>
</div>
</BODY>
</HTML>
]]>
]]>
HTTP 错误 400
HTTP 错误 401
401.1 未授权:dp|
401.2 未授权:服务器的配置Ddp|
401.3 未授权:׃资源中的 ACL 而未授权
401.4 未授权:授权服务被筛选程序拒l?/h4>
401.5 未授权:ISAPI/CGI 应用E序的授权失?/h4>
HTTP 错误 403
403.1 止Q禁止执行访?/h4>
403.2 止Q禁止读取访?/h4>
403.3 止Q禁止写讉K
403.4 止Q需?SSL
403.5 止Q需?SSL 128
403.6 止Q拒l?IP 地址
403.7 止Q需要用戯?/h4>
403.8 止Q禁止站点访?/h4>
403.9 止讉KQ所q接的用户太?/h4>
403.10 止讉KQ配|无?/h4>
403.11 止讉KQ密码已更改
403.12 止讉KQ映程序拒l访?/h4>
HTTP 错误 404
HTTP 错误 405
HTTP 错误 406
HTTP 错误 407
HTTP 错误 412
HTTP 错误 414
HTTP 错误 500
HTTP 错误 501
HTTP 错误 502
1.下蝲
FCKeditor.java 2.3 (FCKeditot for java)
FCKeditor 2.2 (FCKeditor基本文g)
然后FCKeditor-2.3.zipQjavaQ压~包中\web\WEB-INF\lib\目录下的两个jar文g拷到目的\WEB-INF\lib\目录下。把其中的src目录下的FCKeditor.tld文gcopy到TestFCKedit/FCKeitor/WEB-INF/?/p>
<taglib>
<taglib-uri>/TestFCKeditor</taglib-uri>
<taglib-location>/WEB-INF/FCKeditor.tld</taglib-location>
</taglib>
?editor/filemanager/upload/simpleuploaderQ需要在两个映射前面加上/FCKeditorQ?br>x?FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector?br>/FCKeditor/editor/filemanager/upload/simpleuploader?/p>
删除目录/editor/_source,
删除/editor/filemanager/browser/default/connectors/下的所有文?br>删除/editor/filemanager/upload/下的所有文?br>删除/editor/lang/下的除了fcklanguagemanager.js, en.js, zh.js, zh-cn.js四个文g的所有文?/p>
修改 FCKConfig.DefaultLanguage = 'zh-cn' ;
把FCKConfig.LinkBrowserURL{的值替换成以下内容Q?br>FCKConfig.LinkBrowserURL
= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Connector=connectors/jsp/connector" ;
FCKConfig.ImageBrowserURL
= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector" ;
FCKConfig.FlashBrowserURL
= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Type=Flash&Connector=connectors/jsp/connector" ;
FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=File' ;
FCKConfig.FlashUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=Flash' ;
FCKConfig.ImageUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=Image' ;
fckconfig.js总配|文Ӟ可用记录本打开Q修改后文件存为utf-8 ~码格式。找刎ͼ
在前台千万不要用Default的toolbarQ要么自定义一下功能,要么qpȝ已经定义好的BasicQ?br>也就是基本的toolbarQ找刎ͼ
FCKConfig.ToolbarSets["Basic"] = [
['Bold','Italic','-','OrderedList','UnorderedList','-',/*'Link',*/'Unlink','-','Style','FontSize','TextColor','BGColor','-',
'Smiley','SpecialChar','Replace','Preview'] ] ;
q是改过的BasicQ把囑փ功能LQ把d链接功能LQ因为图像和链接和flash和图像按钮添加功能都能让前台
늛接访问和上传文gQ?fckeditorq支持编辑域内的鼠标右键功能?br>
FCKConfig.ContextMenu = ['Generic',/*'Link',*/'Anchor',/*'Image',*/'Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField',
/*'ImageButton',*/'Button','BulletedList','NumberedList','TableCell','Table','Form'] ;
q也是改q的把鼠标右键的“链接、图像,FLASHQ图像按?#8221;功能都去掉?/p>
加上几种我们常用的字?
FCKConfig.FontNames
= '宋体;黑体;隶书;楷体_GB2312;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;
<%@ page language="java" import="com.fredck.FCKeditor.*" %>
<%@ taglib uri="/TestFCKeditor" prefix="FCK" %>
<script type="text/javascript" src="/TestFCKeditor/FCKeditor/fckeditor.js"></script>
三种Ҏ调用FCKeditor
1.FCKeditor自定义标{?(必须加头文g <%@ taglib uri="/TestFCKeditor" prefix="FCK" %> )
2.script脚本语言调用 (必须引用 脚本文g <script type="text/javascript" src="/TestFCKeditor/FCKeditor/fckeditor.js"></script> )
3.FCKeditor API 调用 (必须加头文g <%@ page language="java" import="com.fredck.FCKeditor.*" %> )
--%>
<%--
<form action="show.jsp" method="post" target="_blank">
<FCK:editor id="content" basePath="/TestFCKeditor/FCKeditor/"
width="700"
height="500"
skinPath="/TestFCKeditor/FCKeditor/editor/skins/silver/"
toolbarSet = "Default"
>
input
</FCK:editor>
<input type="submit" value="Submit">
</form>
--%>
<table border="0" width="700"><tr><td>
<textarea id="content" name="content" style="WIDTH: 100%; HEIGHT: 400px">input</textarea>
<script type="text/javascript">
var oFCKeditor = new FCKeditor('content') ;
oFCKeditor.BasePath = "/TestFCKeditor/FCKeditor/" ;
oFCKeditor.Height = 400;
oFCKeditor.ToolbarSet = "Default" ;
oFCKeditor.ReplaceTextarea();
</script>
<input type="submit" value="Submit">
</td></tr></table>
</form>
<form action="show.jsp" method="post" target="_blank">
<%
FCKeditor oFCKeditor ;
oFCKeditor = new FCKeditor( request, "content" ) ;
oFCKeditor.setBasePath( "/TestFCKeditor/FCKeditor/" ) ;
oFCKeditor.setValue( "input" );
out.println( oFCKeditor.create() ) ;
%>
<br>
<input type="submit" value="Submit">
</form>
--%>
<%
String content = request.getParameter("content");
out.print(content);
%>
ok!
]]>
window对象有两个主要的定时ҎQ分别是setTimeout ?setInteval 他们的语法基本上相同Q但是完成的功能取有区别?br>
setTimeoutҎ是定时程序,也就是在什么时间以后干什么。干完了拉?在页面不h的情况下)?br>
setIntervalҎ则是表示间隔一定时间反复执行某操作?br>
如果用setTimeout实现setInerval的功能,需要在执行的程序中再定时调用自己才行。如果要清除计数器需?Ҏ使用的方法不同,调用不同的清除方法:
例如Qtttt=setTimeout('northsnow()',1000);
clearTimeout(tttt);
或者:
tttt=setInterval('northsnow()',1000);
clearInteval(tttt);
举一个例子:
<div id="liujincai"></div>
<input type="button" name="start" value="start" onclick='startShow();'>
<input type="button" name="stop" value="stop" onclick="stop();">
<script language="javascript">
var intvalue=1;
var timer2=null;
function startShow()
{
liujincai.innerHTML=liujincai.innerHTML + " " + (intvalue ++).toString();
timer2=window.setTimeout("startShow()",2000);
}
function stop()
{
window.clearTimeout(timer2);
}
</script>
或者:
<div id="liujincai"></div>
<input type="button" name="start" value="start" onclick='timer2=window.setInterval("startShow()",2000);//startShow();'>
<input type="button" name="stop" value="stop" onclick="stop();">
<script language="javascript">
var intvalue=1;
var timer2=null;
function startShow()
{
liujincai.innerHTML=liujincai.innerHTML + " " + (intvalue ++).toString();
}
function stop()
{
window.clearInterval(timer2);
}
</script>
]]>
一些素材资源(很不错的Q各U类型~~欢q来看~
软gc?/span>
三林在线 软g下蝲好去?/font>
Photoshop CS 8.01 体中文零售版
Photoshop CS2 9.0 体中文正式光盘版
内存256M?56M以下不推?.0?br>
CorelDraw 12 完美中文?/font>
据说及绘?矢量/排版设计于一w的王道工具.非专业h士\q?..
Fireworks V8.0 官方体中文正式版
最常见到的web囑փ动态图像制作Y?普及度堪比Photoshop
Dreamweaver V8.0 官方体中文正式版
|页制作软gQ与Fireworks、Flash 传说中的三剑客```嘎嘎~
Photoworks V1.5汉化?/font>
韩的一Ƅ囑փ加相框的YӞ常见的胶带相框卡角相框等均能完成
Ulead GIF Animator 5.0汉化正式特别?/font>
GIF制作软gQ内|许多效?br>
PhotoImpact v10.0 体中文汉化版
GIF制作软gQ内|许多效?br>
素材c?/span>
童话公主de舞台
N多东?br>
田园屋下蝲
多类资源下蝲
gh码头
字体.|页素材.代码教学包含
nowstop
字体.图标素材.皮肤模板==
韩国
韩国某网`呵呵 我韩语有?nbsp;囄.W刷.样式包含
囄c`~`
CGFAN
囑֛图还是图`字字字还是字- -`~大家砸我?br>
l典桌面资源?/font>
实不错~~Q?br>伊美?/font>
比较丰富的一个~恩`
dofotoq面设计ƣ赏
ilank无聊的时候会q去吓逛~~~
女qde_֓素材
ƣ儿友情提供`Q耶~Q很biang的说~Q么~3~
遐思素材屋
原点视线素材
真的很丰富啊~~~呵呵`都没旉看了~
字体
中文字体下蝲?/font>
ilankqxqq个``恩`q行`
英文字体下蝲
十分丰富哇~~~
K666字体下蝲
中文 英文
《Photoshop6完全自学手册?/font>
强烈推荐q个韩站Q!
http://yoonmi.net/zboard/pds.php
【字体?/strong>
http://font.85888.com/
K666字体下蝲
http://www.web316.com/SoftList/Catalog_7_SoftTime_Desc_1.html
316资源|?/strong>
↑以上两站均是极全的中文字体下载站Q包含很多少见的华康、金梅等字体?nbsp;
也有很多有特点的英文字体QK666像素字体包含?/strong>
【图片?/strong>
http://www.youzi4.com/index.aspx
扫图地带
http://www.mydeskcity.com/
l典桌面
http://wallcoo.com/
壁纸?/strong>
http://www.imagegarden.net/
伊美?/strong>
http://www.tucoo.com/
N
http://show.poptang.com/
写真?/strong>
http://www.cgfan.com/bbs/index.asp
CGFAN
【网늴材?/strong>
http://zzi.cc/sck/sck1.htm
遐思素材屋↑素材/代码教学
http://www.pixelforest.cn/
像素林
http://engel.websozai.jp/
http://www.ran.co.jp/
http://www.geocities.jp/choco_asa/home.html
http://pokyaron.fc2web.com/sozai.htm
http://homepage3.nifty.com/iroempitsu/index.htm
http://love.vivian.jp/sozai/top.html
以上全是JP
http://www.netbei.com/Article/pic/pic2/200501/3322.html
图标
http://www.94200.com/freebgm/
免费|页播放器申?/strong>
http://yoonmi.net/scroll.htm
拉条代码生成?/strong>
【综合素材?/strong>
http://www.zyxr.com/
童话公主de舞台↑重点推荐
http://www.l-ky.com/DOWN/1/
田园屋下蝲↑多类资源下蝲
http://www.dearfish.com/home.htm
gh码头↑字体、网늴材、代码教学包?/strong>
http://www.snowstop.net/
snowstop↑字体、图标素材、皮肤模板等
http://yoonmi.net/zboard/pds.php
韩国?#8593;囄、笔列样式包?/strong>
‖馨玥童话‖综合资源素材网http://www.zyxr.com/Soft/Index.html
雪停在址资源|?a target=_blank>http://www.snowstop.net/
]]>
]]>
HTTP是一个属于应用层的面向对象的协议Q由于其捗快速的方式Q适用于分布式媒体信息系l。它?990q提出,l过几年的用与发展Q得C断地完善和扩展。目前在WWW中用的是HTTP/1.0的第六版QHTTP/1.1的规范化工作正在q行之中Q而且HTTP-NG(Next Generation of HTTP)的徏议已l提出?br> HTTP协议的主要特点可概括如下Q?br>1.支持客户/服务器模式?br>2.单快速:客户向服务器h服务Ӟ只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每U方法规定了客户与服务器联系的类型不同?br>׃HTTP协议单,使得HTTP服务器的E序规模,因而通信速度很快?br>3.灉|QHTTP允许传输Lcd的数据对象。正在传输的cd由Content-Type加以标记?br>4.无连接:无连接的含义是限制每ơ连接只处理一个请求。服务器处理完客LhQƈ收到客户的应{后Q即断开q接。采用这U方式可以节省传输时间?br>5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺状态意味着如果后箋处理需要前面的信息Q则它必重传,q样可能D每次q接传送的数据量增大。另一斚wQ在服务器不需要先前信息时它的应答p快?/p>
1.q接(Connection)Q一个传输层的实际环,它是建立在两个相互通讯的应用程序之间?br> 2.消息(Message)QHTTP通讯的基本单位,包括一个结构化的八元组序列q过q接传输?br> 3.h(Request)Q一个从客户端到服务器的h信息包括应用于资源的Ҏ、资源的标识W和协议的版本号
4.响应(Response)Q一个从服务器返回的信息包括HTTP协议的版本号、请求的状?例如“成功”?#8220;没找?#8221;)和文档的MIMEcd?br> 5.资源(Resource)Q由URI标识的网l数据对象或服务?br> 6.实体(Entity)Q数据资源或来自服务资源的回映的一U特D表C方法,它可能被包围在一个请求或响应信息中。一个实体包括实体头信息和实体的本n内容?br> 7.客户?Client)Q一个ؓ发送请求目的而徏立连接的应用E序?br> 8.用户代理(User agent)Q初始化一个请求的客户机。它们是览器、编辑器或其它用户工兗?br> 9.服务?Server)Q一个接受连接ƈ对请求返回信息的应用E序?br> 10.源服务器(Origin server)Q是一个给定资源可以在其上ȝ或被创徏的服务器?br> 11.代理(Proxy)Q一个中间程序,它可以充当一个服务器Q也可以充当一个客hQؓ其它客户机徏立请求。请求是通过可能的翻译在内部或经q传递到其它的服务器中。一个代理在发送请求信息之前,必须解释q且如果可能重写它?br> 代理l常作ؓ通过防火墙的客户机端的门P代理q可以作Z个帮助应用来通过协议处理没有被用户代理完成的h?br> 12.|关(Gateway)Q一个作为其它服务器中间媒介的服务器。与代理不同的是Q网x受请求就好象对被h的资源来说它是源服务器Q发求的客户机ƈ没有意识到它在同|关打交道?br> |关l常作ؓ通过防火墙的服务器端的门P|关q可以作Z个协议翻译器以便存取那些存储在非HTTPpȝ中的资源?br> 13.通道(Tunnel)Q是作ؓ两个q接中的中介程序。一旦激z,通道便被认ؓ不属于HTTP通讯Q尽通道可能是被一个HTTPh初始化的。当被中l的q接两端关闭Ӟ通道便消失。当一个门?Portal)必须存在或中?Intermediary)不能解释中的通讯旉道被经怋用?br> 14.~存(Cache)Q反应信息的局域存储?/p>
HTTP协议是基于请求/响应范式的。一个客h与服务器建立q接后,发送一个请求给服务器,h方式的格式ؓQ统一资源标识W、协议版本号Q后ҎMIME信息包括h修饰W、客h信息和可能的内容。服务器接到h后,l予相应的响应信息,其格式ؓ一个状态行包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内宏V?br> 许多HTTP通讯是由一个用户代理初始化的ƈ且包括一个申请在源服务器上资源的h。最单的情况可能是在用户代理(UA)和源服务?O)之间通过一个单独的q接来完?见图2-1)?br> 当一个或多个中介出现在请求/响应链中Ӟ情况变得复杂一些。中介由三种Q代?Proxy)、网?Gateway)和通道(Tunnel)。一个代理根据URI的绝Ҏ式来接受hQ重写全部或部分消息Q通过URI的标识把已格式化q的h发送到服务器。网x一个接收代理,作ؓ一些其它服务器的上层,q且如果必须的话Q可以把h译l下层的服务器协议。一个通道作ؓ不改变消息的两个q接之间的中l点。当通讯需要通过一个中?例如Q防火墙{?或者是中介不能识别消息的内ҎQ通道l常被用?
表明了在用户代理(UA)和源服务?O)之间有三个中?A,B和C)。一个通过整个铄h或响应消息必ȝq四个连接段。这个区别是重要的,因ؓ一些HTTP通讯选择可能应用于最q的q接、没有通道的邻居,应用于链的终Ҏ应用于沿铄所有连接。尽图2-2是线性的Q每个参与者都可能从事多重的、ƈ发的通讯。例如,B可能从许多客h接收h而不通过AQƈ且/或者不通过C把请求送到AQ在同时它还可能处理A的请求?br> M针对不作为通道的汇聚可能ؓ处理h启用一个内部缓存。缓存的效果是请求/响应链被~短Q条件是沉K的参与者之一h一个缓存的响应作用于那个请求。下图说明结果链Q其条g是针对一个未被UA或A加缓存的hQB有一个经qC来自O的一个前期响应的~存拯?br> 在Internet上,HTTP通讯通常发生在TCP/IPq接之上。缺省端口是TCP 80Q但其它的端口也是可用的。但qƈ不预C着HTTP协议在Internet或其它网l的其它协议之上才能完成。HTTP只预C着一个可靠的传输?br> 以上要介l了HTTP协议的宏观运作方式,下面介绍一下HTTP协议的内部操作过E?br> 首先Q简单介l基于HTTP协议的客?服务器模式的信息交换q程Q如?-4所C,它分四个q程Q徏立连接、发送请求信息、发送响应信息、关闭连接?br> 在WWW中,“客户”?#8220;服务?#8221;是一个相对的概念Q只存在于一个特定的q接期间Q即在某个连接中的客户在另一个连接中可能作ؓ服务器。WWW服务器运行时Q一直在TCP80端口(WWW的缺省端?监听Q等待连接的出现?br> 下面Q讨论HTTP协议下客?服务器模式中信息交换的实现? 1.建立q接 q接的徏立是通过甌套接?Socket)实现的。客h开一个套接字q把它约束在一个端口上Q如果成功,q当于建立了一个虚拟文件。以后就可以在该虚拟文g上写数据q过|络向外传送?br> 2.发送请?br> 打开一个连接后Q客h把请求消息送到服务器的停留端口上,完成提出h动作?br> HTTP/1.0 h消息的格式ؓQ?br> h消息=h?通用信息|h头|实体? CRLF[实体内容]
h ?Ҏ hURL HTTP版本受CRLF
斏V ?GET|HEAD|POST|扩展Ҏ
U R L=协议名称+宿主?目录与文件名
h行中的方法描q指定资源中应该执行的动作,常用的方法有GET、HEAD和POST。不同的h对象对应GET的结果是不同的,对应关系如下Q?br> 对象 GET的结?br> 文g 文g的内?br> E序 该程序的执行l果
数据库查询 查询l果
HEAD——要求服务器查找某对象的元信息,而不是对象本w?br> POST——从客户机向服务器传送数据,在要求服务器和CGI做进一步处理时会用到POSTҎ。POST主要用于发送HTML文本中FORM的内容,让CGIE序处理?br> 一个请求的例子为:
GET http://WWW.swjtu.edu.cn/home.html HTTP/1.0
头信息又UCؓ元信息,即信息的信息Q利用元信息可以实现有条件的h或应{??br> h头——告诉服务器怎样解释本次hQ主要包括用户可以接受的数据cd、压~方法和语言{?br> 实体头——实体信息类型、长度、压~方法、最后一ơ修Ҏ间、数据有效期{?br> 实体——请求或应答对象本n?br> 3.发送响?br> 服务器在处理完客Lh之后Q要向客h发送响应消息?br> HTTP/1.0的响应消息格式如下:
响应消息=状态行(通用信息头|响应头|实体? CRLF 〔实体内宏V?br> ???HTTP版本受状态码 原因叙述
状态码表示响应cd
1×× 保留
2×× 表示h成功地接?br> 3×× 为完成请求客户需q一步细化请?br> 4×× 客户错误
5×× 服务器错?
响应头的信息包括Q服务程序名Q通知客户h的URL需要认证,h的资源何时能使用?br> 4.关闭q接
客户和服务器双方都可以通过关闭套接字来l束TCP/IP对话
]]>
HTTP-GET和HTTP-POST是用HTTP的标准协议动词,用于~码和传送变量名/变量值对参数Qƈ且用相关的h语义。每个HTTP-GET和HTTP-POST都由一pdHTTPh头组成,q些h头定义了客户端从服务器请求了什么,而响应则是由一pdHTTP应答头和应答数据l成Q如果请求成功则q回应答?br>
HTTP-GET以用MIMEcdapplication/x-www-form-urlencoded的urlencoded文本的格式传递参数。Urlencoding是一U字W编码,保证被传送的参数由遵循规范的文本l成Q例如一个空格的~码?%20"。附加参数还能被认ؓ是一个查询字W串?br>
与HTTP-GETcMQHTTP-POST参数也是被URL~码的。然而,变量?变量g作ؓURL的一部分被传送,而是攑֜实际的HTTPh消息内部被传送?/p>
<FORM ACTION="getpost.asp" METHOD="get">
<INPUT TYPE="text" NAME="Text" VALUE="http://bluesea.blogcup.com"></INPUT>
<INPUT TYPE="submit" VALUE="Get方式"></INPUT>
</FORM>
<BR>
<FORM ACTION="getpost.asp" METHOD="post">
<INPUT TYPE="text" NAME="Text" VALUE="http://bluesea.blogcup.com"></INPUT>
<INPUT TYPE="submit" VALUE="Post方式"></INPUT>
</FORM>
<BR>
通过get方式传递的字符串是Q?"<B><%= Request.QueryString("Text") %></B>"<BR>
<% End If %>
通过Post方式传递的字符串是Q?"<B><%= Request.Form("Text") %></B>"<BR>
<% End If %>
]]>
//Javascript中ؓString对象dtrim
String.prototype.Trim = function(){return this.replace(/(^\s*)|(\s*$)/g, "");}
String.prototype.LTrim = function(){return this.replace(/(^\s*)/g, "");}
String.prototype.Rtrim = function(){return this.replace(/(\s*$)/g, "");}
{?Q?br><input type=text name=txt size=10><br>
<input type=button value=check onclick="check1()">
<script language="Javascript"><!--
String.prototype.Trim = function(){return this.replace(/(^\s*)|(\s*$)/g, "");}
function check1(){
var tt = document.all.txt.value;
var s;
if (tt.Trim().length==0){
alert("输入不能为空Q?);
document.all.txt.value = "";
return;}
tt = tt.Trim();
for (i = 0; i < tt.length; i++){
s = tt.charCodeAt(i);
if ((s==13) || (s==9)){
alert("你输入的字符中含有tab或者回车键Q?);
document.all.txt.value = tt;
return; }
}
return;
}
// --></script>
<link rel="stylesheet" href="<%=request.getContextPath()%>/tplife/css/maginfier.css" type="text/css">
<script type="text/javascript" src="<%=request.getContextPath()%>/js/ajax/maginfier.js"></script>
l织机构查询助手Q?br />
<br/><img src = "<%=request.getContextPath()%>/images/magifiericon.gif" onclick="orgMaginfier('<%=request.getContextPath()%>','selOrg','DivShim','orgId,orgCode,orgName','0,2,1','message','','');">
<input type="text" id = "orgCode" style="width:300px" onkeydown="if(event.keyCode == 13){orgMaginfier('<%=request.getContextPath()%>','selOrg','DivShim','orgId,orgCode,orgName','0,2,1','message'); gnIsSelectCtrl = 1;}else{}">
<input type="text" id = "orgName" style="width:300px">
<input type="hidden" id = "orgId">
<br/>
<div id="selOrg" style="display:none; z-index:100" class="termFrame" ></div>
<iframe
id="DivShim"
src="javascript:false;"
scrolling="no"
frameborder="0"
style="position:absolute; top:0px; left:0px; display:none;">
</iframe>
3.1.1.1 Js文g内容Q?br />
var xmlHttp;
var maginfierName ;
var displayName ;//昄l果Div
var displayIFrame;//昄l果IFrame
var posNames ;//回填面元素数组Q如currencyId,currencyAbbrName,currencyName
var valueIndexs;//回填所需值的列号Q如0,1,2
var nextPos; //回填后focus的元素名
var serverPath;
var maginfierFunction;
var tableHead = new Array();
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
function keyDowm(obj, pos, value, maginfierName0, maginfierDisplayName, maginfierDisplayIFrame)
{
if(event.keyCode == 13)//回R?br /> {
filled(pos, value, maginfierDisplayName, maginfierDisplayIFrame);
}
else if(event.keyCode == 40)//上移?br /> {
document.getElementById(maginfierName0+"divrow" + obj).bgColor='';
var t = eval(obj) + 1;
if(document.getElementById(maginfierName0+"divrow" + t) != null)
{
document.getElementById(maginfierName0+"divrow" + t).bgColor='#CCFF99';
}
}
else if(event.keyCode == 38)//下移?br /> {
document.getElementById(maginfierName0+"divrow" + obj).bgColor='';
var t = eval(obj) - 1;
if(t >= 0)
{
document.getElementById(maginfierName0+"divrow" + t).bgColor='#CCFF99';
}
}
}
function closeDiv(maginfierDisplayName, maginfierDisplayIFrame)
{
_termFrame=getElement(maginfierDisplayName);
_termFrame.style.display = 'none'
getElement(maginfierDisplayIFrame).style.display = 'none';
}
function operationRequest(queryString, postBlock) {
var url = serverPath + "/AjaxMaginfier?" + queryString;
createXMLHttpRequest();
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.open("POST", url, true);
// postBlock = "获得界面元素";
//讄大块数据传输postBlockQ这样可以解军_数据量传向后台?br /> xmlHttp.send(postBlock);
}
// 获得界面元素
function getElement(idString)
{
return(document.all?document.all[idString]:document.getElementById(idString));
}
// 鼠标Ud
function rollover(tdObject)
{
tdObject.bgColor='#CCFF99';
}
function rollout(tdObject)
{
tdObject.bgColor='';
}
function filled(keyStr, valueStr, maginfierDisplayName, maginfierDisplayIFrame)
{
keys = keyStr.split(",");
values = valueStr.split("<c>");
for(i = 0; i < keys.length; i++)
{
_test = getElement(keys[i]);
_test.value = values[i];
}
_termFrame=getElement(maginfierDisplayName);
_termFrame.style.display = 'none'
getElement(maginfierDisplayIFrame).style.display = 'none';
if(document.getElementById(nextPos) != null)
{
document.getElementById(nextPos).focus();
}
}
function responseDisplay() {
var responseText = xmlHttp.responseText;
var responseContent = responseText.split("|");
var dataText = responseContent[0];
if(dataText.length == 0)
{
var displayStr = '<table width="98%"><tr><td align="right" style="border-bottom:0px"><img src = "/fs/graphics/closeMaginfier.jpg" onclick="closeDiv(\''+displayName+'\',\''+displayIFrame+'\')"></td></tr></table><input type="radio" id="'+maginfierName+'rdoAlert" name="rdo" onkeydown=" closeDiv(\''+displayName+'\',\''+displayIFrame+'\')">' + '<font class="sfont" color="red">没有W合条g的记录,点Q意键q回</font>';
displayAlert(displayStr);
return;
}
var rows = dataText.split("<r>");
var _t=[];
var cols;
var pos = "\'" + posNames + "\'";
for(var i = 0; i < rows.length; i++) {
cols = rows[i].split("<c>");
values = "\'" ;
valuesIndexArray = valueIndexs.split(",");
for( j = 0; j < valuesIndexArray.length; j++)
{
var temp = cols[eval(valuesIndexArray[j])];
//回填时把null|换成空字符?br /> if(temp == 'null')
{
temp = '';
}
if(j < valuesIndexArray.length - 1)
{
values = values + temp + "<c>";
}
else
{
values = values + temp + "\'";
}
}
if(i == 0)
{
_t[i] = '<tr class="maginfierBody" id = "'+maginfierName+'divrow0" onmouseover="rollover(this)" onmouseout="rollout(this)" ><td width="5" align="center"><input type="radio" id="'+maginfierName+'rdo" name="rdo" onkeydown=" keyDowm('+i+', '+pos+', '+values+',\''+maginfierName+'\',\''+displayName+'\',\''+displayIFrame+'\');" ></td>';
}
else
{
_t[i] = '<tr class="maginfierBody" id = "'+maginfierName+'divrow'+i+'" onmouseover="rollover(this)" onmouseout="rollout(this)" ><td width="5" align="center"><input type="radio" name="rdo" onkeydown=" keyDowm('+i+', '+pos+', '+values+',\''+maginfierName+'\',\''+displayName+'\',\''+displayIFrame+'\');" ></td>';
}
//Ҏ表头昄相关数据
for(var j = 1 ; j < tableHead.length ; j++)
{
//在放大镜表格昄Ӟ把null|换成空格显C?br /> if(cols[j] == 'null')
{
cols[j] = " ";
}
_t[i] = _t[i] + '<td onclick="filled('+pos+', '+values+',\''+displayName+'\',\''+displayIFrame+'\')"><span class="rs">'+cols[j]+'</span></td>';
}
_t[i] = _t[i] + '</tr>';
}
var tableHeadStr = addMaginfierHeader();
displayStr = '<table width="98%"><tr><td align="right" style="border-bottom:0px"><img src = "/fs/graphics/closeMaginfier.jpg" onclick="closeDiv(\''+displayName+'\',\''+displayIFrame+'\')"></td></tr></table><table cellspacing="1" width="98%" cellpadding="1" class="ItemList">'+ tableHeadStr +_t.join('')+'</table> ';
if(responseContent[1] != null)
{
pageParams = responseContent[1].split(",");
prePageNo = parseInt(pageParams[2]) - 1;
prePageFunction = maginfierFunction + "," +prePageNo+")";
nextPageNo = parseInt(pageParams[2]) + 1;
nextPageFunction = maginfierFunction + ", "+nextPageNo+")";
displayStr += '<br> <a href="javascript:if('+prePageNo+' == 0){alert(\'已经是第一了\');}else{'+prePageFunction+'} ">上一?lt;/a>';
displayStr += '<font class="sfont"> | W?+pageParams[2]+'?| </font> ';
displayStr += '<a href="javascript:if('+nextPageNo+' > '+pageParams[1]+'){alert(\'已经是最后一了\'); }else{'+nextPageFunction+'}">下一?lt;/a>';
displayStr += '<font class="sfont"> | ?+pageParams[1]+'?| ?+pageParams[0]+'?lt;/font>';
}
displayMaginfier(displayStr);
}
function test()
{
var a = '23,,,43,23';
var b = a.split(",");
alert(b.length);
}
function addMaginfierHeader()
{
var tableHeadStr = '<tr class="maginfierTitle"><td width="5" align="center" ></td>';
for(i = 1 ; i < tableHead.length ; i++)
{
tableHeadStr = tableHeadStr + '<td align="center" >' + tableHead[i] + "</td>"
}
tableHeadStr = tableHeadStr + "</tr>";
return tableHeadStr;
}
function displayAlert(displayStr)
{
displayDiv = getElement(displayName);
displayDiv.innerHTML = displayStr;
displayDiv.style.display='block';
IfrRef = getElement(displayIFrame);
IfrRef.style.width = displayDiv.offsetWidth;
IfrRef.style.height = displayDiv.offsetHeight;
IfrRef.style.top = displayDiv.style.top;
IfrRef.style.left = displayDiv.style.left;
IfrRef.style.zIndex = displayDiv.style.zIndex - 1;
IfrRef.style.display = "block";
document.getElementById(maginfierName+"rdoAlert").checked = true;
document.getElementById(maginfierName+"rdoAlert").focus();
}
function displayMaginfier(displayStr)
{
displayDiv = getElement(displayName);
displayDiv.innerHTML = displayStr;
displayDiv.style.display='block';
IfrRef = getElement(displayIFrame);
IfrRef.style.width = displayDiv.offsetWidth;
IfrRef.style.height = displayDiv.offsetHeight;
IfrRef.style.top = displayDiv.style.top;
IfrRef.style.left = displayDiv.style.left;
IfrRef.style.zIndex = displayDiv.style.zIndex - 1;
IfrRef.style.display = "block";
document.getElementById(maginfierName+"divrow0").bgColor='#CCFF99';
document.getElementById(maginfierName+"rdo").checked = true;
document.getElementById(maginfierName+"rdo").focus();
}
/*具体攑֤镜页面处理方?/
function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
responseDisplay();
}
}
}
function initMaginfierParas(serverPath0, divName, iFrameName, posNames0, valueIndexs0, nextPos0)
{
serverPath = serverPath0;
displayName = divName;
displayIFrame = iFrameName;
posNames = posNames0;
valueIndexs = valueIndexs0
nextPos = nextPos0;
}
/*具体攑֤镜JavaScript*/
//l织机构攑֤?br />function orgMaginfier(serverPath0, divName, iFrameName, posNames0,valueIndexs0, nextPos0, orgCode, orgId, transTypeId, maginfierType, pageNo)
{
initMaginfierParas(serverPath0, divName, iFrameName, posNames0, valueIndexs0, nextPos0);
maginfierName = 'OrgMaginfier' + divName;
maginfierFunction = "orgMaginfier(\'"+serverPath0+"\', \'"+divName+"\', \'"+iFrameName+"\', \'"+posNames0+"\',\'"+valueIndexs0+"\', \'"+nextPos0+"\', \'"+orgCode+"\', \'"+orgId+"\', \'"+transTypeId+"\', \'"+maginfierType+"\'";
len = tableHead.length;
tableHead.splice(0, len);
tableHead[0] = "单位ID";
tableHead[1] = "单位~号";
tableHead[2] = "单位名称";
tableHead[3] = "单位英文名称";
queryString = "maginfierClassName=OrgMaginfier&orgCode="+orgCode+"&orgId="+orgId+"&maginfierType="+maginfierType+"&transTypeId="+transTypeId+"&pageNo="+pageNo;
operationRequest(queryString);
}
3.1.1.2 Css文g内容Q?br />
/* 界面样式 */
.termFrame{
width:298px !important;
width:500px;
overflow:auto;
height:360px;
scrollbar-face-color: #FFFFCC; scrollbar-shadow-color: #FFFFCC; scrollbar-highlight-color: #FFFFCC; scrollbar-3dlight-color: #FFFFCC; scrollbar-darkshadow-color: #6699CC; scrollbar-track-color: #FFFFCC; scrollbar-arrow-color: #99CCFF;
margin-top:1px !important;
margin-top:0;
border:1px solid #999999;
background-color:#FFFFFF;
position:absolute;
cursor:hand;
padding:2px;
font-size:70%;
z-index:100
}
.maginfierTitle {
BORDER-RIGHT: 1px; BORDER-TOP: 1px;BORDER-LEFT: 1px; BORDER-BOTTOM: 1px;BACKGROUND-COLOR: #456795; color: #FFFFFF;
}
.maginfierBody {
BORDER-RIGHT: 1px;BORDER-TOP: 1px;BORDER-LEFT: 1px;BORDER-BOTTOM: 1px;
}
3.1.2 当点L询助手图标时Q例如查询组l机构)Q?br />
function orgMaginfier(serverPath0, divName, iFrameName, posNames0,valueIndexs0, nextPos0, orgCode, orgId, transTypeId, maginfierType, pageNo)
{
initMaginfierParas(serverPath0, divName, iFrameName, posNames0, valueIndexs0, nextPos0);
maginfierName = 'OrgMaginfier' + divName;
maginfierFunction = "orgMaginfier(\'"+serverPath0+"\', \'"+divName+"\', \'"+iFrameName+"\', \'"+posNames0+"\',\'"+valueIndexs0+"\', \'"+nextPos0+"\', \'"+orgCode+"\', \'"+orgId+"\', \'"+transTypeId+"\', \'"+maginfierType+"\'";
len = tableHead.length;
tableHead.splice(0, len);
tableHead[0] = "单位ID";
tableHead[1] = "单位~号";
tableHead[2] = "单位名称";
tableHead[3] = "单位英文名称";
queryString = "maginfierClassName=OrgMaginfier&orgCode="+orgCode+"&orgId="+orgId+"&maginfierType="+maginfierType+"&transTypeId="+transTypeId+"&pageNo="+pageNo;
operationRequest(queryString);
}
3.1.3 Js中的处理h的函?br />function operationRequest(queryString, postBlock) {
var url = serverPath + "/AjaxMaginfier?" + queryString;
createXMLHttpRequest();
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.open("POST", url, true);
// postBlock = "获得界面元素";
//讄大块数据传输postBlockQ这样可以解军_数据量传向后台?br />
xmlHttp.send(postBlock);
}
3.1.4 当数据传回前台后
//该函数的名称不要改变Q因为我在js文g中决定了用该函数来处理传回的数据
function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
responseDisplay();
}
}
}
3.1.5 具体处理传回的数据:
function responseDisplay() {
var responseText = xmlHttp.responseText;
var responseContent = responseText.split("|");
var dataText = responseContent[0];
if(dataText.length == 0)
{
var displayStr = rightSpace + '<img src = "/fs/graphics/closeMaginfier.jpg" onclick="closeDiv(\''+displayName+'\',\''+displayIFrame+'\')"><br><input type="radio" id="'+maginfierName+'rdoAlert" name="rdo" onkeydown=" closeDiv(\''+displayName+'\',\''+displayIFrame+'\')">' + '<font class="sfont" color="red">没有W合条g的记录,点Q意键q回</font>';
displayAlert(displayStr);
return;
}
var rows = dataText.split(";");
var _t=[];
var cols;
var pos = "\'" + posNames + "\'";
for(var i = 0; i < rows.length; i++) {
cols = rows[i].split(",");
values = "\'" ;
valuesIndexArray = valueIndexs.split(",");
for( j = 0; j < valuesIndexArray.length; j++)
{
var temp = cols[eval(valuesIndexArray[j])];
//回填时把null|换成空字符?br />
if(temp == 'null')
{
temp = '';
}
if(j < valuesIndexArray.length - 1)
{
values = values + temp + ",";
}
else
{
values = values + temp + "\'";
}
}
if(i == 0)
{
_t[i] = '<tr class="maginfierBody" id = "'+maginfierName+'divrow0" onmouseover="rollover(this)" onmouseout="rollout(this)" ><td width="5" align="center"><input type="radio" id="'+maginfierName+'rdo" name="rdo" onkeydown=" keyDowm('+i+', '+pos+', '+values+',\''+maginfierName+'\',\''+displayName+'\',\''+displayIFrame+'\');" ></td>';
}
else
{
_t[i] = '<tr class="maginfierBody" id = "'+maginfierName+'divrow'+i+'" onmouseover="rollover(this)" onmouseout="rollout(this)" ><td width="5" align="center"><input type="radio" name="rdo" onkeydown=" keyDowm('+i+', '+pos+', '+values+',\''+maginfierName+'\',\''+displayName+'\',\''+displayIFrame+'\');" ></td>';
}
//Ҏ表头昄相关数据
for(var j = 0 ; j < tableHead.length ; j++)
{
//在查询助手表格显C时Q把null|换成空格显C?br />
if(cols[j] == 'null')
{
cols[j] = " ";
}
_t[i] = _t[i] + '<td onclick="filled('+pos+', '+values+',\''+displayName+'\',\''+displayIFrame+'\')"><span class="rs">'+cols[j]+'</span></td>';
}
_t[i] = _t[i] + '</tr>';
} //昄表头内容
function addMaginfierHeader()
{
var tableHeadStr = '<tr class="maginfierTitle"><td width="5" align="center" ></td>';
for(i = 0 ; i < tableHead.length ; i++)
{
tableHeadStr = tableHeadStr + '<td align="center" >' + tableHead[i] + "</td>"
}
tableHeadStr = tableHeadStr + "</tr>";
return tableHeadStr;
}
//如果未查询到U录Q显C提CZ?
function displayAlert(displayStr)
{
_termFrame=getElement(displayName);
_termFrame.innerHTML = displayStr;
// 昄l果
_termFrame.style.display='block';
IfrRef = getElement(displayIFrame);
IfrRef.style.width = _termFrame.offsetWidth;
IfrRef.style.height = _termFrame.offsetHeight;
IfrRef.style.top = _termFrame.style.top;
IfrRef.style.left = _termFrame.style.left;
IfrRef.style.zIndex = _termFrame.style.zIndex - 1;
IfrRef.style.display = "block";
document.getElementById(maginfierName+"rdoAlert").checked = true;
document.getElementById(maginfierName+"rdoAlert").focus();
}
//昄查询助手
function displayMaginfier(displayStr)
{
_termFrame=getElement(displayName);
_termFrame.innerHTML = displayStr;
// 昄l果
_termFrame.style.display='block';
//setHidden(overlaySelEles);
//_termFrame.style.visibility="visible";
IfrRef = getElement(displayIFrame);
IfrRef.style.width = _termFrame.offsetWidth;
IfrRef.style.height = _termFrame.offsetHeight;
IfrRef.style.top = _termFrame.style.top;
IfrRef.style.left = _termFrame.style.left;
IfrRef.style.zIndex = _termFrame.style.zIndex - 1;
IfrRef.style.display = "block";
document.getElementById(maginfierName+"divrow0").bgColor='#CCFF99';
document.getElementById(maginfierName+"rdo").checked = true;
document.getElementById(maginfierName+"rdo").focus();
}
3.2 Servlet后台
选择Servlet作ؓ后台Q是因ؓ如果采用Struts Action为后台处理程序,则必L定要q回的页面。而用Servlet则没有这个要求。默认返回到h面。而这个查询助手Servlet接受所有的查询助手hQ根据前C来的查询助手实现cdU参敎ͼ由Spring创徏查询助手实现cd象,该对象实C查询助手接口QMaginfierInterfaceQ,从而获取返回值文本。返回到前台?br />
3.2.1 具体代码如下Q?br />
3.2.1.1 查询助手Servlet
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String maginfierClassName = request.getParameter("maginfierClassName");
MaginfierFactory factory = MaginfierFactory.getInstance();
MaginfierInterface maginfier = factory.createMaginfier(maginfierClassName);
String ret = maginfier.getReturnValue(request);
System.out.println("ret = " + ret);
response.setContentType("text/xml;charset=GBK");
PrintWriter out = response.getWriter();
out.write(ret);
out.close();
}
3.2.1.2 Web.xml配置
3.2.1.2.1 在Web.xml中配|查询助手Servlet
<servlet>
<servlet-name>AjaxMaginfier</servlet-name>
<servlet-class>com.iss.fs.web.module.example.AjaxMaginfier</servlet-class>
<!—在pȝ初次启动Ӟ初始??->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AjaxMaginfier</servlet-name>
<url-pattern>/AjaxMaginfier</url-pattern>
</servlet-mapping>
3.2.1.3 查询助手具体实现c?br />3.2.1.3.1 实现查询助手接口Ҏ
public class CurrencyMaginfier implements MaginfierInterface
{
public String getReturnValue(HttpServletRequest request)
{
List list = null;
StringBuffer results = new StringBuffer();
CurrencyDAO dao = new CurrencyDAO();
String currencyAbbrName = request.getParameter("currencyAbbrName");
String responsibilityId = request.getParameter("responsibilityId");
if(currencyAbbrName == null || currencyAbbrName.equals("") || currencyAbbrName.equals("undefined"))
{
currencyAbbrName = "";
}
if(responsibilityId == null || responsibilityId.equals("") || responsibilityId.equals("undefined"))
{
responsibilityId = "-1";
}
try
{
list = dao.getMaginfierResults(currencyAbbrName, responsibilityId);
}
catch (Exception ex)
{
ex.printStackTrace();
}
if (list != null)
{
Currency currency = null;
for(int i = 0 ; i < list.size(); i++)
{
currency = (Currency)list.get(i);
results.append(currency.getID()).append(",");
results.append(currency.getCurrencyAbbrName()).append(",");
results.append(currency.getCurrencyName());
if(i < (list.size() - 1))
{
results.append(";");
}
}
}
return results.toString();
}
}
3.3 技术难点解?/b>
3.3.1 查询助手函数参数设计Q?br />固定参数QserverPath, divName, iFrameName, posNames,valueIndexs, nextPos
serverPathQ表Cwebserver的地址Q如Q?myapp
divNameQ显C选择界面的Div名称
iFrameNameQ显C选择界面的Ifranme名称Q因为IE的缺Pdiv昄时不能覆盖下面的选择框,所以我们用Iframe作ؓdiv的底ѝ?br />
posNamesQ选择U录后回昄面元素Q如QorgId,orgName,orgCode
valueIndexsQ对应回N面元素,U录的列序号Q如 0,2,1
nextPosQ选择l束后要把输入焦点,UdC一个页面元素名U?br />
固定参数后面的参敎ͼ不同的查询助手有不同参数列表Q主要是条g数据?br />
3.3.2 查询助手选择界面的表头设计:
不同的查询助手选择界面有不同的表头Q我们用js的全局数组变量来存储,每个查询助手使用前都先清I头数l,使用splice(0, len)
len = tableHead.length;
tableHead.splice(0, len);
tableHead[0] = "外部账户ID";
tableHead[1] = "外部账户~号";
tableHead[2] = "外部账户名称";
tableHead[3] = "外部银行名称";
tableHead[4] = "机构?;
tableHead[5] = "联行?;
昄表头Q?br />
var tableHeadStr = '<tr class="maginfierTitle"><td width="5" align="center" ></td>';
for(i = 0 ; i < tableHead.length ; i++)
{
tableHeadStr = tableHeadStr + '<td align="center" >' + tableHead[i] + "</td>"
}
tableHeadStr = tableHeadStr + "</tr>";
3.3.3 处理后台传来的数据:
3.3.3.1.1 接受数据Q?br />
var responseText = xmlHttp.responseText;
3.3.3.1.2 查询无纪录处理:
if(responseText.length == 0)
{
var displayStr = rightSpace + '<img src = "/fs/graphics/closeMaginfier.jpg" onclick="closeDiv()"><br><input type="radio" id="'+maginfierName+'rdoAlert" name="rdo" onkeydown=" closeDiv()">' + '<font class="sfont" color="red">没有W合条g的记录,点Q意键q回</font>';
displayAlert(displayStr);
return;
}
Onkeydown表示响应L键,则关闭查询助手选择界面?br />
Onclick 表示响应鼠标点击
3.3.3.1.3 昄查询l果Q?br />因ؓ我们在后台把查询数据装成文本传回前収ͼ所以到前台后要解析文本Q我不用xml文本Q数据封装规则是U录间用“;”隔,列之间用“,”隔R同样到前台后用相同的规则解析数据?br />
把文本数据分成若q行数据
var rows = responseText.split(";");
3.4 ȝ
Ajax实现查询助手功能是Ajax在项目中实战的一个小的例子Q根据以后的研发Q将会生更多更好的应用Q本人在文档的Ajax介部分引用了别的文档的说明,在查询助手的实现中借鉴了Google的Suggest设计理念QSuggest实现是直接从后台传来表格FrameQ后台定义显C逻辑Q在查询助手的设计中Q前台来军_昄逻辑Q后C提供数据Q实现数据和昄的分,q样׃造成前台需要解析数据文本,处理昄逻辑的Javascript函数Q显得前台的JavaScript比较多,但我认ؓq是可以接受的,因ؓAjax主要是前台逻辑。另外,Ajax查询助手的后台实现采用了Spring Bean理容器Q只是ؓ了后期扩展的方便性,借助Spring容器理的强大功能,实现cM工厂模式的功能?br />
关于作?/b>
努力Q在于我热爱我的事业Q与中国的Y件一赯向成熟,走向世界?br />联系作者:lijj_72@hotmail.com
Java?NET都有着比较完善的反机Ӟ用来处理未知的对象ƈ获取它们的属性和Ҏ。JavaScript虽然没有完善的反体p,但在~程的时候还是可以通过代码设计来实现类似反的基本功能?/p> 一个JavaScript对象是否支持某种特定的属性或ҎQ?/p> 代码
q样声明比直接?if (obj.property)"来描q要更准,因ؓ当obj.property的gؓfalse?、null的时候,虽然该属性存在,但返回的l果却恰恰相反?/p> 如果要求更详细一些,查看该属性的具体cdQ可以用instanceof操作W: 代码
但是Q当对obj对象q行条g的时候,如果多种条g的对象类型存在承关p,则需要注意代码的书写序Q例如: 代码
上述代码执行的结果会认ؓ原ؓArraycd的obj是一个ObjectQ因为Array本n是从Objectl承而来Q显Ӟ对Array的检放在前面会得到更精的l果。因此,使用instanceof来判断对象类型,需要注意当两个对象存在l承关系的时候,应该x顺序的问题Q进一步我们可以想刎ͼJSON创徏的对象不是Object是ArrayQ用instanceof来检JSON对象意义不大?/p> 利用JavaScript的反,我们可以~写一个函数来查对象是否有一个特定名U的函数Q然后利用该函数q行计算Q以此在JavaScript中实现接口的功能Qؓ在Ajax中用设计模式奠定基?/p> 代码
calWeight先判断两个对象是否均存在getWeight()函数Q然后检查getWeight()计算l果是否为数值类型,最后进行数值相加返回计结果。需要注意的是,parseFloat(param)函数能够除去param中非数字部分Q如果param=16pmQparseFloat (16pm)得到的结果是16。如果不使用parseFloat(param)函数对getWeight()计算l果q行验,那么会带来安全性的问题Q这U情况下可以对象的getWeight()设计回字W串或其他类型,在调用它之前我们是不知道JavaScript函数的返回类型的Q因?JavaScript函数没有预先定义的类型?/p> |
提示:使用前请把大写状态下"Q>"改ؓ写状态下?<>"
01.让背景图不滚?
IE览器支持一?Body 属?bgpropertiesQ它可以让背景不滚动:
〈Body Background="囄文g" bgproperties="fixed"?
02.让你的网|法另存ؓ
QnoscriptQ<iframe src=*Q</iframeQ</noscriptQ?
03.让IFRAME框架内的文档的背景透明
Qiframe src="about:Qbody style=‘background:transparent‘>" allowtransparencyQ</iframeQ?
04.止右键Q?
Qbody oncontextmenu="return false" ondragstart="return false" onselectstart ="return false" onselect="document.selection.empty()" oncopy="document.selection.empty()" onbeforecopy="return false"onmouseup="document.selection.empty()"Q?
05.q入面后立卌动刷斎ͼ
Qmeta http-equiv="refresh" content="120;url=http://www.wodutom.com/cn083"Q?
http://www.wodutom.com/cn083,q是你自q|址?
06.打开H口x大化
Qscript language="JavaScript"Q?
Q?-- Begin
self.moveTo(0,0)
self.resizeTo(screen.availWidth,screen.availHeight)
// End --Q?
Q?scriptQ?
07.能隐藏IFRAME的滚动条吗?我知道的三种Ҏ:
1. 讄iframe scrolling="no"
2. 被包含页body应用overflow:hidden
3. 被包含页的body标签加scroll="no"
08.加入背景音乐
Qbgsound src="mid/windblue[1].mid" loop="-1"Q?只适用于IE Qembed src="music.mid" autostart="true" loop="true" hidden="true"Q?对Netscape ,IE 都适用
09.嵌入|页
Qiframe name="tt" src="01a.html" width="450" height="287" scrolling="Auto" frameborder="0"Q</iframeQ?
10.跌{
Qmeta http-equiv="refresh" content="3;URL=list.htm"Q?/p>
11.滚动
QMARQUEE direction=up height=146 onmouseout=start() onmouseover=stop() scrollAmount=4Q</marqueeQ?
12.l线分隔U?
Qhr noshade size=0 color=#C0C0C0Q?
13.q度方式
Qmeta http-equiv="Page-Exit" content="revealTrans(Duration=3,Transition=5)"Q?
Duration的gؓ|页动态过渡的旉Q单位ؓU?
Transition是过渡方式,它的gؓ0?3Q分别对?4U过渡方式。如下表Q?
0 盒状收羃 1 盒状攑ְ
2 圆Ş收羃 3 圆Ş攑ְ
4 ׃往?5 ׃往?
6 从左臛_ 7 从右臛_
8 垂直癑֏H?9 水^癑֏H?
10 水^格状癑֏H?11垂直格状癑֏H?
12 随意溶解 13从左右两端向中间展开
14从中间向左右两端展开 15从上下两端向中间展开
16从中间向上下两端展开 17 从右上角向左下角展开
18 从右下角向左上角展开 19 从左上角向右下角展开
20 从左下角向右上角展开 21 水^U状展开
22 垂直U状展开 23 随机产生一U过渡方?
15.如何控制横向和纵向滚动条的显隐?
Qbody style="overflow-y:hidden"Q?Lx?
Qbody style="overflow-x:hidden"Q?Ly?
Qbody scroll="no"Q不?
16.怎样?FrontPage2000 中加?Flash 动画?
?FrontPage2000 ?点击[插入]-Q[高]-Q[插g]Q在弹出的窗口中Q设|一?Flash 文g的大及其它信息Q确定即可?
17.加入注释的格式是Q?
?-QL释内容…]--?
18.怎样在网中加入 E-mail 链接q显C预定的主题?
〈A href="mailto:Emailhost@263.net?subject=主题"〉……?a?
19.定义本网关键字Q可以在〈Head〉?Head〉中加入如下代码Q?
〈meta name="Keywords" content="china,enterprise,business,net"?
Content 中所包含的就是关键字,你可以自行设|?
q里有个技?你可以重复某一个单?q样可以提高自己|站的排行位|?如:
〈meta name="Keywords" content="china,china,china,china"?
20.IE5.0 的部分快捷键Q?
A:打开查找功能QCtrl+F
关闭览器窗口:Ctrl+W
打开地址栏下拉列表框QF4
?斎ͼF5
当前Web保存到收藏夹列表:Ctrl+D
打开当前 IE H口的一个拷贝:Ctrl+N
停止下蝲当前|页QEsc
光标q速移动到|页的开_Home
光标q速移动到|页的尾部:End
打开新的地址键入H口QCtrl+O
打开收藏夹:Ctrl+I
打开历史记录文g夹:Ctrl+H
打开览器设定的默认主页QAlt+HOME
21.d到收藏夹Q?
〈a href="javascript:window.external.addFavorite(?a href="http:///" target="_blank">http://链接?‘说明?;"〉添加到收藏夏V?a?
22.设ؓ首页Q?
〈a href=# onclick=this.style.behavior=‘url(#default#homepage)?this.setHomePage(?a href="http:///" target="_blank">http://链接?;〉设为首c?a?
23.定制览器地址栏前的小图标Q?
A:在网늚〈head〉?head〉间加入以下语句Q?
〈link rel="shortcuticon" href="http://?icon.ico"?
卛_。其?icon.ico ?16x16 的图标文Ӟ颜色不要过 16 艌Ӏ?
24.把滚动条攑֜览器窗口的左边
A:?QbodyQ?中加 dir=RTLQ即 Qbody dir=RTLQ?/p>
一、showModalDialog和showModelessDialog有什么不同?
showModalDialogQ被打开后就会始l保持输入焦炏V除非对话框被关闭,否则用户无法切换CH口。类似alert的运行效果?
showModelessDialogQ被打开后,用户可以随机切换输入焦点。对ȝ口没有Q何媄?最多是被挡住一下而以?P)
二、怎样才让在showModalDialog和showModelessDialog的超q接不弹出新H口Q?
在被打开的网里加上<base target="_self">可以了。这句话一般是攑֜<html>?lt;body>之间的?
三、怎样才刷新showModalDialog和showModelessDialog里的内容Q?
在showModalDialog和showModelessDialog里是不能按F5h的,又不能弹单。这个只能依靠javascript了,以下是相关代码:
<body onkeydown="if (event.keyCode==116){reload.click()}">
<a id="reload" href="filename.htm" style="display:none">reload...</a>
filename.htm替换成网늚名字然后它攑ֈ你打开的网里Q按F5可以刷CQ注意,q个要配?lt;base target="_self">使用Q不然你按下F5会弹出新H口的?
四、如何用javascriptxshowModalDialog(或showModelessDialog)打开的窗口?
<input type="button" value="关闭" onclick="window.close()">
也要配合<base target="_self">Q不然会打开一个新的IEH口Q然后再x的?
五、showModalDialog和showModelessDialog数据传递技巧?
(作者语Q本来想用一问一{Ş式来写的Q但是我想不个怎么问,所以只好这样了?
q个东西比较ȝQ我改了好几ơ了不是没办法说明白(语文水^来差?Q只好用个例子说明了?
例子Q?
现在需要在一个showModalDialog(或showModelessDialog)里读取或讄一个变量var_name
一般的传递方式:
window.showModalDialog("filename.htm",var_name)
//传递var_name变量
在showModalDialog(或showModelessDialog)d和设|时Q?
alert(window.dialogArguments)//dvar_name变量
window.dialogArguments="oyiboy"http://讄var_name变量
q种方式是可以满的Q但是当你想在操作var_name同时再操作第二个变理var_id时呢Q就无法再进行操作了。这是q种传递方式的局限性?
以下是我使用的传递方式:
window.showModalDialog("filename.htm",window)
//不管要操作什么变量,只直传递主H口的window对象
在showModalDialog(或showModelessDialog)d和设|时Q?
alert(window.dialogArguments.var_name)//dvar_name变量
window.dialogArguments.var_name="oyiboy"http://讄var_name变量
同时我也可以操作var_id变量
alert(window.dialogArguments.var_id)//dvar_id变量
window.dialogArguments.var_id="001"http://讄var_id变量
同样q可以对ȝ口的M对象q行操作Q如form对象里的元素?
window.dialogArguments.form1.index1.value="q是在设|index1元素的?
六、多个showModelessDialog的相互操作?
因ؓ光说很费Ԍ我就L懒,直接用代码来说了Q如果不明白的话那就直接来信(oyiboy#163.net(使用时请?Ҏ@))问我吧?
以下代码的主要作用是在一个showModelessDialog里移动别一个showModelessDialog的位|?
L件的部䆾js代码?
var s1=showModelessDialog('控制.htm',window,"dialogTop:1px;dialogLeft:1px"Q?//打开控制H口
var s2=showModelessDialog('about:blank',window,"dialogTop:200px;dialogLeft:300px"Q //打开被控制窗?
控制.htm的部份代码?
<script>
//操作位置数据Q因为窗口的位置数据?xxxpx"方式的,所以需要这L一个特D操作函数?
function countNumber(A_strNumber,A_strWhatdo)
{
A_strNumber=A_strNumber.replace('px','')
A_strNumber-=0
switch(A_strWhatdo)
{
case "-":A_strNumber-=10;break;
case "+":A_strNumber+=10;break;
}
return A_strNumber + "px"
}
</script>
<input type="button" onclick="window.dialogArguments.s2.dialogTop=countNumber(window.dialogArguments.s2.dialogTop,'-')" value="上移">
<input type="button" onclick="window.dialogArguments.s2.dialogLeft=countNumber(window.dialogArguments.s2.dialogLeft,'-')" value="左移">
<input type="button" onclick="window.dialogArguments.s2.dialogLeft=countNumber(window.dialogArguments.s2.dialogLeft,'+')" value="右移">
<input type="button" onclick="window.dialogArguments.s2.dialogTop=countNumber(window.dialogArguments.s2.dialogTop,'+')" value="下移">
以上关键部䆾是:
H口命名方式Qvar s1=showModelessDialog('控制.htm',window,"dialogTop:1px;dialogLeft:1px"Q?
变量讉K方式Qwindow.dialogArguments.s2.dialogTop
q个例子只是现实showModelessDialog与showModelessDialog之间的位|操作功能,通过q个原理Q在showModelessDialog之间怺控制各自的显C页面,传递变量和数据{。这要看各位的发挥了?/font>
使用 window.showModalDialog 打开的窗口没?opener 对象, q的给使用带来了很多麻? 以前一直也没用q这个东? 所以没有更多关? 今天一个朋友问到这个问? 于是上网搜烦了一? 扑ֈ了解x? 发上来供大家参?
首先来看?window.showModalDialog 的参?
vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures]) ;
sURL : 打开H口的地址;
vArguments : 传递参?
sFeatures : H口属性列?
W一个参数是必须? 后两个可以省?
q里我们要利用的是W二个参? 原理是将父窗口的被控制对象以参数的Ş式传递到子窗? 在子H口中直接控制这个对象即?
举例来说:
parent.html
<script type="text/javascript">
function openWin(){
// 子窗口地址
var srcFile = "child.html";
// 子窗口属?br />var winFeatures = "dialogHeight:300px; dialogLeft:200px;";
// ?From ?ID 作ؓ参数传递到子窗?br />var obj = getForm;
// 打开子窗?br />window.showModalDialog(srcFile, obj, winFeatures);
}
</script>
<form id="getForm">
回传|
<input type="text" id="getValue" readOnly>
</form>
<input type="button" value="打开" onClick="openWin()">
child.html
<script type="text/javascript">
function send(){
// 获取参数传递的对象
var obj = window.dialogArguments;
// 控制对象
obj.getValue.value = 'from Child';
}
</script>
<a href="#" onclick="send();">Send</a>
q行 parent.html , 单击 [打开] 按钮弹出对话? 点击 Send 链接g递到 parent 的文本框?
传递的参数当然也可以是其他对象, 例如 window . 值得注意的是传递的是对? 而不是字W串.