首页 新闻 搜索 短信 分类 聊天 导航
上移动梦网
赢手机大奖

新浪首页 > 科技时代 > 网上学园 > 主页制作 > 正文
用JavaScript自动选择留言板

http://www.sina.com.cn 2002/01/07 15:52 赛迪网

  文/周辉腾 

  你的站点的留言板是访客和你沟通的一种重要途径,但是,由于提供免费留言板的服务商的虚拟主机的物理位置问题,并不是所有人都能连接上所有的免费留言板。如何能够根据访客的需要,自动选择一个他们能够访问的留言板就显得很重要。

  访客能够连上哪些站点跟他们的isp有关,而一般情况下他们是属于哪个isp能从他们的ip地址看出来,如202.200.114.2这个ip地址是属于教育网的,如果你有一个足够大而且详细的ip地址对照表的话,用时下流行的asp/php来检测访客的ip地址并根据数据库来为不同ip地址段分配不同留言板是完全可能的,当然前提是你有两个或两个以上的位于不同位置的留言板,但是仔细想想会不会给人一种杀鸡用宰牛刀的味道?而且实现起来好像不像说的这样简单……

  这里有个简单的办法可以帮你自动选择留言板。我们知道,如果浏览器试图下载一个不存在或者说是来自错误地址的图像,服务器会返回给浏览器一个错误信息,然后由浏览器直观地告诉你当前地址的图像不存在,这就是html文档的图像载入错误事件。请看以下例子:

  〈!-- 将以下代码插在〈body〉……〈/body〉标签之间 --〉

  〈img src=″http://ctsight.topcool.net/test.gif″ width=″1″ height=″1″ onerror=″window.alert(′图像载入错误!′)″〉

  在本例中因为这个url的图像是不存在的,所以等服务器响应之后便会触发onerror事件并执行已定义好的函数……想到了吗?返回了错误信息虽然没什么用,但是由此我们可以拓展一下,如果这个url是留言板所在服务器上已经确定存在的图像,那么如果当这个onerror事件的发生是不是可以认为是当前访客与此服务器连接问题造成的,即他无法与留言板所在的服务器连接?想到这一点就已经成功了一大半,现在剩下的工作就是具体实现了。请看以下完整的代码:

  〈html〉〈head〉

  〈meta http-equiv=″content-type″ content=″text/html; charset=gb2312″〉

  〈meta name=″author″ content=″contion″〉

  〈title〉自动选择留言板〈/title〉

  〈script language=″JavaScript″〉〈!--

  var i=0;

  〈!-- 定义你的留言板数据,bbsurl为留言板的地址,bbsname为留言板提供商的名称,

  bbsimg是位于留言板提供商服务器上的图像的地址,必须是存在的,否则本脚本将不能正常工作,

  推荐使用留言板的表情图像;数组中各留言板应按个人喜好顺序往下排。 --〉

  var bbsurl=new initarray(′ctsight.topcool.net/contact/e-mail.html′,′url1′,′url2′);

  var bbsname=new initarray(′狂尘视野′,′留言板1′,′留言板2′);

  var bbsimg=new initarray(′ctsight.topcool.net/logo.gif′,′

  imgurl1′,′imgurl2′);

  function initarray(){

  this.length=initarray.arguments.length;

  for(var i=0;i〈this.length;i++) this[i]=initarray.arguments[i];

  }

  function imgdl(){

  if(i〈bbsurl.length){

  var strinfo=′〈img src=″http://′+bbsimg[i]+′″width=″1″ height=″1″

  onload=″top.location=′http://′+bbsurl[i]+′′″ onerror=″gonext()″

  align=″left″〉〈p〉正在检测您与位于′+bbsname[i]+′

  的留言板是否能够正常连接,这大概要花费几秒钟时间,请稍候……〈/p〉′;

  if(document.all) document.all.imglayer.

  innerhtml=strinfo;

  else if(document.layers) document.

  imglayer.document.write(strinfo);

  }

  else{

  if(confirm(′您不能与本站任何留言板连接,要关闭当前窗口

  吗?′)) top.close();

  else{

  var strinfo2=′〈p〉当前的状态是:未连接到任何服务器上

  的留言板。′;

  if(document.all) document.all.imglayer.innerhtml=strinfo2;

  else if(document.layers) document.imglayer.document.write(strinfo2);

  }

  }

  }

  function gonext(){

  window.alert(′已经检测到您与位于′+bbsname[i]+′的留言

  板不能正常连接。′);

  i++;imgdl();

  }

  //--〉〈/script〉

  〈/head〉

  〈body bgcolor=″#ffffff″ onload=″imgdl()″〉

  〈div id=″imglayer″ style=″position:absolute; visibility:visible; z-index:1″〉〈/div〉

  〈/body〉〈/html〉

  除了图像,html文档还有很多其他对象的onerror事件,好好地利用它们将使你的站点变得更加吸引人。(责任编辑 Ardeler)

  


发表评论】【初学者园地】【科技聊天】【关闭窗口


新 闻 查 询

 相关链接
用JavaScript制作趣味计数器 (2001/12/30 15:54)
用JavaScript实现滚动播出效果 (2001/09/18 16:58)
JavaScript标题栏文字滚动特效 (2001/09/05 09:56)
JavaScript页面特效三则 (2001/08/28 15:38)
用JavaScript制作活动字幕 (2001/08/23 11:21)
利用JavaScript实现滚屏显示 (2001/07/30 12:05)
网页JavaScript特效三则 (2001/07/05 17:08)
JavaScript为你的网页添油加醋 (2001/06/19 16:29)
JavaScript应用:前进后退按钮 (2001/06/04 16:51)
Netscape 6存在JavaScript设计缺陷 (2001/03/28 10:30)
警惕JavaScript的“电子邮件窃听” (2001/02/12 10:31)


科技时代意见反馈留言板 电话:010-82612286 或 010-82628888-3488   欢迎批评指正

网站简介 | 用户注册 | 广告服务 | 招聘信息 | 中文阅读 | Richwin | 联系方式 | 帮助信息

Copyright © 1996 - 2001 SINA.com, Stone Rich Sight. All Rights Reserved

版权所有 四通利方 新浪网