你的站點的留言板是訪客和你溝通的一種重要途徑,但是,由於提供免費留言板的服務商的虛擬主機的物理位置問題,並不是所有人都能連接上所有的免費留言板。如何能夠根據訪客的需要,自動選擇一個他們能夠訪問的留言板就顯得很重要。
訪客能夠連上哪些站點跟他們的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事件,好好地利用它們將使你的站點變得更加吸引人。