0

次の問題に対する創造的な(そしてシンプルな)解決策を探しています-

これはオンロードでのみ機能しますが、オンクリックでは機能しません:

<!--[if lt IE 9]> 
   <script type="text/javascript">
   if (window.location.hash == '#aciw') {
       window.location.replace("#checkout-counter-aciw");
   }
   </script>
<![endif]-->

したがって、ユーザーが www.site.com にアクセスして、ブラウザに #aciw を挿入するリンクをクリックしても、何も起こりません。一方、ブラウザで www.site.com/#aciw を更新すると、ハッシュは www.site.com/#checkout-counter-aciw に変更され、すべて問題ありません。

もちろん、これがオンロードでのみ機能することは望んでいません。特に、IE8 をまったく別の場所に送信する必要があるリンクがいくつかあるため、オンクリックで機能することを望んでいます。

私はこれを追加して遊んでいます:

window.location.hash = "#" + checkout-counter-aciw;

この:

window.location.reload(true);

しかし、これまでのところ、#checkout-counter-aciw が表示されるのは一瞬だけで、その後すぐにサイトのトップに戻ります。

4

2 に答える 2

1

hashchangeイベントを聞く。変わると教えてくれます。

$(window).on("hashchange", function() {
    var hash = window.location.hash.substr(1);
});
于 2013-01-20T23:39:26.817 に答える
0

私はこれをやってしまいました、そしてそれは動作します:

<!--[if lt IE 9]> 
<script type="text/javascript">

if (window.location.hash == '#aciw') {
    window.location.replace("http://www.site.com/#checkout-counter-aciw");
}

$(document).ready(function(){
        $('a.aciw').click(function(){  
           window.location.replace("http://www.site.com/#checkout-counter-aciw");
        });
});

</script>
<![endif]-->

私自身の個人的なメモとして、最初に要求されたページにすでに #aciw ハッシュが含まれている場合、最初の部分 (「if」) が機能し、最初に www.site.com に到着した場合 (ハッシュなし) は 2 番目の部分 (クリック関数) が機能します。 #aciw ハッシュ) をクリックし、.aciw リンクをクリックします。

于 2013-01-20T23:59:22.627 に答える