系統原來的更換CSS模板是要重新刷新一下兒頁面的,我一直都對這個功能很不滿足,百分之九十五的功能都用AJAX無刷新的實現了,難道要在這個小小的更換頁面CSS模板上給用戶添點惡心嗎?于是,昨天晚上好好考慮了這個功能上的實現,原來發現其實并不難,小改一下就OK了,現在系統上的模板更換是不用刷新頁面來完成的,明顯在感覺上比原來好得多了,下面談談經驗吧:
對于一個多頁面的網站來說了,CSS的更換不能只簡單的在一個頁面中調用更換CSS功能更新這個頁面頭上鏈接的CSS地址,因為它不能保證在點擊了別的頁面后新的樣式應該到新打開的頁面中去,因此,一定要有一個全局性的變量來記錄它,我選用的是SESSION,在用戶點擊了側邊模板下拉框中的模板時,觸發了下拉框的ONCHANGE事件,執行了一段AJAX程序,程序的功能是將用戶選中的模板信息發送給服務器,服務器接收新的模板信息后更新表示模板的SESSION值,然后向客戶端返回成功信息,客戶端則根據返回的成功信息來改變頁面樣式,注重:我在頁面頭中寫的CSS鏈接信息是這樣子的:
<LINK id=cssLink href="css.aspx" type=text/css rel=stylesheet>
css.aspx是一個ASP.net的頁面,它的作用只是單一的根據SESSION中的當前CSS模板信息來轉向所應CSS樣式表文件!這樣子的處是客戶端在接收到了服務器端成功更新SESSION的信息后剛不用考慮其它的東西,直接一句:
document.getElementById("cssLink").href=document.getElementById("cssLink").href;
將cssLink的href重新寫一下兒,雖然是前后一模一樣子的值,但這會激發CSS.ASPX頁面重新讀一下兒,這樣子CSS.ASPX頁面就能轉到新更新的CSS樣式表了!由于網站別的頁面的樣式表鏈接信息都是這樣寫的,所以每個頁面加載時都是會應用最新更新的樣式表的,這樣子,網站無刷新的全局更新樣式表就實現了??!
新聞熱點
疑難解答