用JavaScript自動選擇留言板

 你的站點的留言板是訪客和你溝通的一種重要途徑,但是,由於提供免費留言板的服務商的虛擬主機的物理位置問題,並不是所有人都能連接上所有的免費留言板。如何能夠根據訪客的需要,自動選擇一個他們能夠訪問的留言板就顯得很重要。

  訪客能夠連上哪些站點跟他們的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″ οnerrοr=″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″

  οnlοad=″top.location=′http://′+bbsurl[i]+′′″ οnerrοr=″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″ οnlοad=″imgdl()″〉

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

  〈/body〉〈/html〉

  除了圖像,html文檔還有很多其他對象的onerror事件,好好地利用它們將使你的站點變得更加吸引人。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章