ホームページ >ウェブフロントエンド >jsチュートリアル >jsを使用してページ間で変数を保存してメニューを作成する方法_ナビゲーションメニュー

jsを使用してページ間で変数を保存してメニューを作成する方法_ナビゲーションメニュー

WBOY
WBOYオリジナル
2016-05-16 19:06:431294ブラウズ

最近公司在做一个项目,其中一块头部的菜单导航区,要求实现进入相关页面后上面的导航菜单图片也需变换.而这个对于静态页面或者用框架或iframe的来说是很容易实现的.而我们是利用include来包含进的这个top.asp.虽然可以在那个图片菜单上定义onclick的动作属性.但是只要一跳转页面,则这个onclick动作就没用了.因为top.asp被重新加载了.如果要解决这个问题,只能是在页面加载时能读取一个全局的变量,相对于浏览器的全局变量,通过这个变量的值来判断应该如何显示这个导航菜单.于是也便有了本文.

我想到的解决方法有两种:

1.利用cookies或session,在每个页面加载时写一个cookies或session变量,这个看似能很好的解决问题.但是却出现了一个问题.那就是如果用户禁止了cookies,则这个效果将无法实现,永远只是显示默认效果.所以我放弃这种做法

2.利用history或navigator来建立这么一个相对于浏览器的变量.只要我浏览器没关,则这个变量就会持续存在.这样就达到了我们想要的效果.我也是用这种方法来解决的.下面是具体实现部分.

 



 
   
 
 
   
 
 
   
   
   
   
 

     
       
       
       
       
       
       
       
     
     
       
     
   
  
 

     
       
       
       
         
  
       
       
       
     
     
       
     
   
 

         
           
           
           
           
           
           
           
           
         

       
   站内搜索 
公告 to trash cans, find the Public Utility Equipment new!


これによる効果は次のとおりです:

まずホームページを見てください:

jsを使用してページ間で変数を保存してメニューを作成する方法_ナビゲーションメニュー

注文ビュー ボタンを押した後の効果を見てください: 私が使用したトリガー スクリプトは、上記のコードの onclick="menushow(2)" です。これは、実際のパラメーターとして 2 を渡し、history.dmenu=2 を設定することを意味します。このように現在のステータスは、ページが更新されてロードされたときに決定されます。この変数はブラウザに相対的なものであるためです。効果は以下の通りです:

jsを使用してページ間で変数を保存してメニューを作成する方法_ナビゲーションメニュー

今天测试时发现了一个问题,得用上面写的方法时对IE不支持,在火狐上没有问题,所以对程序进行了下小修改.过程是这样的.对于IE浏览器使用session来判断,每按一个按钮时就写一个session("dmenu")为相应的值,然后把这个值写在页面的一个隐藏域里,然后在页面初始化时判断是使用的什么类型浏览器,如果是IE的就执行通过session来判断的函数,而这个session则是通过获取那个隐藏域里的值,而如果是非IE浏览器就运用上面我昨天写的也就是上面的init函数来进行.判断代码如下:

如此一来就完美的解决了这个问题.也许有朋友会说用session就可以了,但经过我的实验是用session火狐的根本不认,我也不知道什么原因,所以只好用我这个方法了.如果你有好方法请告诉我.

本日テスト中に問題が見つかりました。上記の方法を使用すると、Firefox では問題が発生しなかったので、プログラムを少し修正しました。プロセスは次のとおりです。 IEブラウザの場合は、セッションを使用して判定します。ボタンを押すたびに、対応する値としてsession("dmenu")を記述し、その値をページの隠しフィールドに記述し、その値がボタンを押すたびに使用されるかどうかを判定します。ページが初期化されるブラウザの種類は何ですか? IE の場合、セッションによって判断された関数が実行され、IE 以外のブラウザの場合、このセッションは隠しフィールドの値を取得します。昨日書いた init 関数を実行します。判定コードは以下の通りです: これでこの問題は完全に解決されます。セッションを使えば十分だという友人もいるかもしれませんが、私が実験したところ、原因がわからないため、セッションを使用するとFirefoxがそれをまったく認識しなかったため、私の方法を使用する必要がありました。良い方法があれば教えて下さい。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。