最近公司在做一個項目,其中一塊頭部的菜單導航區,要求實現進入相關頁面后上面的導航菜單圖片也需變換.而這個對于靜態頁面或者用框架或iframe的來說是很容易實現的.而我們是利用include來包含進的這個top.asp.雖然可以在那個圖片菜單上定義onclick的動作屬性.但是只要一跳轉頁面,則這個onclick動作就沒用了.因為top.asp被重新加載了.如果要解決這個問題,只能是在頁面加載時能讀取一個全局的變量,相對于瀏覽器的全局變量,通過這個變量的值來判斷應該如何顯示這個導航菜單.于是也便有了本文.
我想到的解決方法有兩種:
1.利用cookies或session,在每個頁面加載時寫一個cookies或session變量,這個看似能很好的解決問題.但是卻出現了一個問題.那就是如果用戶禁止了cookies,則這個效果將無法實現,永遠只是顯示默認效果.所以我放棄這種做法
2.利用history或navigator來建立這么一個相對于瀏覽器的變量.只要我瀏覽器沒關,則這個變量就會持續存在.這樣就達到了我們想要的效果.我也是用這種方法來解決的.下面是具體實現部分.
<script type="text/JavaScript"> //如果history.dmenu沒有定義則設置為1即顯示首頁按扭的效果
switch(d_id){ |
這種的效果如下:
先看首頁:
再看按下訂單查看按鈕后的效果:我用的觸發腳本是在上面代碼中的onclick="menushow(2)"即傳遞一個2做為實參,從而設置history.dmenu=2這樣在頁面刷新加載時就會判斷出當前狀態了.因為這個變量是相對于瀏覽器的.效果如下:
今天測試時發現了一個問題,得用上面寫的方法時對IE不支持,在火狐上沒有問題,所以對程序進行了下小修改.過程是這樣的.對于IE瀏覽器使用session來判斷,每按一個按鈕時就寫一個session("dmenu")為相應的值,然后把這個值寫在頁面的一個隱藏域里,然后在頁面初始化時判斷是使用的什么類型瀏覽器,如果是IE的就執行通過session來判斷的函數,而這個session則是通過獲取那個隱藏域里的值,而如果是非IE瀏覽器就運用上面我昨天寫的也就是上面的init函數來進行.判斷代碼如下: <script language="javascript"> } 如此一來就完美的解決了這個問題.也許有朋友會說用session就可以了,但經過我的實驗是用session火狐的根本不認,我也不知道什么原因,所以只好用我這個方法了.如果你有好方法請告訴我. |
新聞熱點
疑難解答