该网页源码出了点瑕茨, 若你有兴趣, 且听我道来. 事先讲明, 在此只系以事论事, 绝无批评任何人或扮老练太太之意. 让我们弄清楚网页的执行步骤: 1. 用户通过浏笕器输入资料, 相应源码是 \"<input type=\"text\" name=\"username\" .... \" 2. 用户敲击\"下一步\"键时, 启动一名为 \"Check\" 的 Javascript function <input type=\"button\" value=\" 下一步 \" onclick=\"javascript:Check()\" id='btnadd' disabled> 3. 在该Javascript function 中, 首先要将用户输入资料从 \"username\" 提取出来并赋值于名为\"Name\"的变量, 再传至伺侯器处理 var Name=username.value; 问题(I mean problem)正是出于此处. 提取网页组件值时, 正确方式是经由浏览器顶级物体(Top level object)由上至下循序进行. 浏览器顶级物体叫文件(document), 我们需要的是在document之下的\"username\", 所以, 应该这样来提取其值: var Name=document.username.value; 那么为什么用Internet Explorer 没问题呢? 那是因为Internet Explorer 在源码没有标明时, 它假定是从document 开始, 其他浏览器如Firefox and Netscape 则不作任何假定. 当执行至user.value 时,它们会在顶级(top level)上寻找名为\"username\"的物件, 那自然不会找到, 因为它在楼下呢. 于是乎,执行中断. 那就是四眼光头佬之朋友或远游客之公子不能完成注册的原因. 解决方法除了\"改用IE\" 和 \"代为注册\"之外, 网站工程人员是否可以做D 修补呢? 仅是提仪, 若吾中听, 就当BigPaul 发\"Up\"疯啦. 让我们看下网页的源码, 请注意放大字体及红色部分. <html><head><meta http-equiv=Content-Type content=text/html;charset=gb2312></head> <link href=images/skins/1/bbs.css rel=stylesheet><script src=inc/BBSxp.js></script> <script src=inc/ybb.js></script><script src=images/skins/1/bbs.js></script> <body topmargin=0><script>bbsxptop()</script> <table cellspacing=1 cellpadding=1 width=97% align=center border=0 class=a2><tr class=a1><td> <table cellspacing=0 cellpadding=4 width=100% border=0> <tr class=a1><td id=TableTitleLink>>>欢迎您, <a href=\"login.asp\">请先登录</a> | <a href=\"register.asp\"> 注册</a> | <a href=\"RecoverPasswd.asp\"> 忘记密码</a> | <a href=\"online.asp\"> 在线情况</a> | <a href=\"search.asp?forumid=\"> 搜索</a> | <a href=\"help.asp\"> 帮助</a> </td></tr></table></td></tr></table><br> <table width=97% align=center border=0><tr><td><span id=logo><img border=0 src=images/logo.gif></span></td> <td align=right><a href=\"http://www.me.ccoo.cn/?siteid=783\"> <img embed width=\"480\" height=\"55\"src=\"http://www.photo.ccoo.cn/ad/taishan/2006749350477.gif"><a></td></tr></table><br> <SCRIPT>function Check() {var Name=username.value; //if (/[^\x00-\xff]/g.test(Name)){alert(\"用户名不能含有汉字\");return false;}window.location.href=\"register.asp?menu=write&username=\"+Name}</SCRIPT><center><table border=0 width=97% align=center cellspacing=1 cellpadding=4 class=a2><tbody><tr class=a3><td height=25> <img src=images/Forum_nav.gif> <a onmouseover=\"showmenu(event,'<div class=menuitems><a href=ShowForum.asp?forumid=23>论坛热事</a></div><div class=menuitems><a href=ShowForum.asp?forumid=41>娱乐休闲</a></div><div class=menuitems><a href=ShowForum.asp?forumid=24>校友社区</a></div><div class=menuitems><a href=ShowForum.asp?forumid=25>我的农场</a></div><div class=menuitems><a href=ShowForum.asp?forumid=51>科学与生活</a></div><div class=menuitems><a href=ShowForum.asp?forumid=43>电脑沙龙</a></div><div class=menuitems><a href=ShowForum.asp?forumid=27>通信录</a></div>')\" href=Default.asp>台山同学网论坛</a> → <a href=\"register.asp\">注册协议</a> → 检查用户名</td></tr></tbody></table><br><br>请输入您要注册的用户名<BR><input type=\"text\" name=\"username\" size=\"28\" maxlength=\"12\" onkeyup=\"ValidateTextboxAdd(this, 'btnadd')\" onpropertychange=\"ValidateTextboxAdd(this, 'btnadd')\"><br><br> <input type=\"button\" value=\" 上一步 \" onclick=\"history.back()\"> <input type=\"button\" value=\" 下一步 \" onclick=\"javascript:Check()\" id='btnadd' disabled> <title>台山同学网论坛 - BBSxp</title><p><table cellspacing=0 cellpadding=0 width=97% align=center> <tr><td align=middle><a href=\"http://www.taishan.com\"> <img src=\"http://www.photo.ccoo.cn/ad/pub/csthd_jp768.gif"><a><a> <embed width=\"480\" height=\"55\" src=\"http://220.232.137.40/75one/indexbanner.swf\"><a><br>`<a target=_blank ><font color=000000>Copyright 2002-2005 Yuzi</font></a><br> <font color=ffffff> <a target=_blank href=http://www.75one.net><font color=000000>BBSxp 5.16</font></a></font>/ © 2002-2005<br> Script Execution Time:0ms</td></tr></table><script>bbsxpbottom()</script></body></html> [此帖子已被 BigPaul 在 2006-9-3 10:44:32 编辑过] |