最近公司在做一个项目,其中一块头部的菜单导航区,要求实现进入相关页面后上面的导航菜单图片也需变换.而这个对于静态页面或者用框架或iframe的来说是很容易实现的.而我们是利用include来包含进的这个top.asp.虽然可以在那个图片菜单上定义onclick的动作属性.但是只要一跳转页面,则这个onclick动作就没用了.因为top.asp被重新加载了.如果要解决这个问题,只能是在页面加载时能读取一个全局的变量,相对于浏览器的全局变量,通过这个变量的值来判断应该如何显示这个导航菜单.于是也便有了本文.
我想到的解决方法有两种:
1.利用cookies或session,在每个页面加载时写一个cookies或session变量,这个看似能很好的解决问题.但是却出现了一个问题.那就是如果用户禁止了cookies,则这个效果将无法实现,永远只是显示默认效果.所以我放弃这种做法
2.利用history或navigator来建立这么一个相对于浏览器的变量.只要我浏览器没关,则这个变量就会持续存在.这样就达到了我们想要的效果.我也是用这种方法来解决的.下面是具体实现部分.
これによる効果は次のとおりです:
まずホームページを見てください:
注文ビュー ボタンを押した後の効果を見てください: 私が使用したトリガー スクリプトは、上記のコードの onclick="menushow(2)" です。これは、実際のパラメーターとして 2 を渡し、history.dmenu=2 を設定することを意味します。このように現在のステータスは、ページが更新されてロードされたときに決定されます。この変数はブラウザに相対的なものであるためです。効果は以下の通りです:
今天测试时发现了一个问题,得用上面写的方法时对IE不支持,在火狐上没有问题,所以对程序进行了下小修改.过程是这样的.对于IE浏览器使用session来判断,每按一个按钮时就写一个session("dmenu")为相应的值,然后把这个值写在页面的一个隐藏域里,然后在页面初始化时判断是使用的什么类型浏览器,如果是IE的就执行通过session来判断的函数,而这个session则是通过获取那个隐藏域里的值,而如果是非IE浏览器就运用上面我昨天写的也就是上面的init函数来进行.判断代码如下:
如此一来就完美的解决了这个问题.也许有朋友会说用session就可以了,但经过我的实验是用session火狐的根本不认,我也不知道什么原因,所以只好用我这个方法了.如果你有好方法请告诉我.
|
本日テスト中に問題が見つかりました。上記の方法を使用すると、Firefox では問題が発生しなかったので、プログラムを少し修正しました。プロセスは次のとおりです。 IEブラウザの場合は、セッションを使用して判定します。ボタンを押すたびに、対応する値としてsession("dmenu")を記述し、その値をページの隠しフィールドに記述し、その値がボタンを押すたびに使用されるかどうかを判定します。ページが初期化されるブラウザの種類は何ですか? IE の場合、セッションによって判断された関数が実行され、IE 以外のブラウザの場合、このセッションは隠しフィールドの値を取得します。昨日書いた init 関数を実行します。判定コードは以下の通りです:
これでこの問題は完全に解決されます。セッションを使えば十分だという友人もいるかもしれませんが、私が実験したところ、原因がわからないため、セッションを使用するとFirefoxがそれをまったく認識しなかったため、私の方法を使用する必要がありました。良い方法があれば教えて下さい。 |