今天在論壇上面看到有些兄弟不知道htc是什么東西。小生在這里稍微說一下。
從5.5版本開始,internet explorer(ie)開始支持web 行為的概念。這些行為是由后綴名為.htc的腳本文件描述的,它們定義了一套方法和屬性,程序員幾乎可以把這些方法和屬性應(yīng)用到html頁面上的任何元素上去。web 行為是非常偉大的因為它們允許程序員把自定義的功能“連接”到現(xiàn)有的元素和控件,而不是必須讓用戶下載二進制文件(例如activex 控件)來完成這個功能。web 行為還是推薦的擴展ie對象模型和控件集的方法。微軟在它的開發(fā)者站點上的dhtml 行為庫欄目里提供了幾個定制的web行為。我會在本文中討論一個比較新的web 行為:webservice行為。
web 服務(wù)是通過一個開放的簡單對象訪問協(xié)議(soap)來傳遞參數(shù)和接收返回值,以便在web上提供接口無關(guān)的軟件服務(wù)的方法。在internet上有許多例子和文章幫助你創(chuàng)建web 服務(wù)并從傳統(tǒng)的基于窗口表單的應(yīng)用程序或者在服務(wù)器端來使用這些web 服務(wù),但是也可以使用webservice 行為也可以在客戶瀏覽器上使用web 服務(wù)。
從客戶瀏覽器調(diào)用一個web 服務(wù)的好處包括能夠得到服務(wù)器更快的響應(yīng)時間,結(jié)果是生成交互能力更強的頁面并讓用戶用起來更高興。與傳統(tǒng)的將表單發(fā)回服務(wù)器然后接收一個新的頁面不同的是(這個過程包括重新下載圖片和其它的內(nèi)容),webservice行為使用xmlhttp在后臺只發(fā)送和接收與事務(wù)處理過程相關(guān)的內(nèi)容,然后這些內(nèi)容又可以通過dhtml和腳本進行顯示。
我所知道的目前支持web 行為的唯一一個瀏覽器是ie;開發(fā)者們知道避免使用只能在ie上使用的功能。但是w3c在工作草案里有這個css的擴展以作為未來的標準。
如果你決定現(xiàn)在就使用web 行為,你可以使用下面的javascript函數(shù)來檢測客戶端是否支持這個功能:
代碼如下:
function canusebehaviors() {
var ua = window.navigator.useragent;
var msiepos = ua.indexof('msie');
var msiever = 0;
var behaviorsavailable = false;
var ihandle = 0;
if (msiepos >= 0) {
msiemajorver = parseint(ua.charat(msiepos + 5));
msieminorver = parseint(ua.charat(msiepos + 7));
if (msiemajorver >= 5) {
if (((msiemajorver == 5) && (msieminorver >= 5)) ||
(msiemajorver > 5)) {
behaviorsavailable = true;
}
}
}
return behaviorsavailable;
}
使用上面的函數(shù),你可以在運行時確定是否能夠使用webservice 行為來調(diào)用web 服務(wù)并使用ie的dhtml功能來顯示結(jié)果或者是把這個表單發(fā)送給服務(wù)器讓服務(wù)器來完成必要的操作,然后再次生成一個完整的頁面。使用css語法來為一個元素添加webservice行為不會影響不支持特定css屬性的瀏覽器。
微軟提供了一個很好的參考,程序員可以用它更好的熟悉從客戶端訪問web 服務(wù)。開發(fā)者還可以在微軟的站點上找到必要的html 組件(*.htc)文件。
有了客戶端工具包中的webservice行為,開發(fā)者們可以為web 消費者創(chuàng)建更豐富更具交互性的頁面,它們與使用大型主機提供的web 服務(wù)或者基于表單窗口的應(yīng)用程序的企業(yè)用戶的功能是一樣的。這將幫助消除冗余的代碼并能通過為服務(wù)提供的特定功能提高響應(yīng)時間來增強用戶體驗的快感。