该网页源码出了点瑕茨, 若你有兴趣, 且听我道来. 事先讲明, 在此只系以事论事, 绝无批评任何人或扮老练太太之意.
让我们弄清楚网页的执行步骤:
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://75one.taishan.com><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 编辑过]