2009-09-17 15 views
9

ページをスクロールせずにurlにハッシュを追加しますか?ページがスクロールバックしてはいけません ページをスクロールせずにjavascriptでurlにハッシュを追加しますか?

  • :私はハッシュを追加リンク(多分値#test付き)(http://www.example.com/#test例)をクリックし、私は
  • 下にスクロールするページ
  • を開くjavascriptの

    1. と 頂点に。

    これはどのようにすることができますか?

    注:id = "test"のタグがある場合でも動きを無効にすることができるかどうかを確認するだけです。 これまでのところfalseが返されます。 (javascriptのない人をサポートするために)うまく動作し、またHTMLの中にidの存在を避けるために、1,2,3のような数字のような問題はありません(とにかくIDとして許可されていません)

    すべての回答は素晴らしいですし、新機能も画期的なものでもなく、デフォルトの機能を破る方法についての解決策もありません。 :) お返事ありがとうございました。

  • +1

    "#"は、 "このURIでのリソースの#特定されたセクション"という意味的意味を持ちます。なぜこの標準的な期待を破りしようとしていますか? – annakata

    +0

    履歴と戻るボタン。私は個人的には古典的な基準に基づいてそれを行うことを好むが、多くの人々は豪華なアヤックスをしたい。私はこの質問を投稿した後、私は何かを検索するときに見ることができるように、この "壊れた"方法を実装しました:) –

    +0

    今、このファンシーなajaxページを読み込むことの新しいベストな方法は、[歴史.push](https://developer.mozilla.org/en-US/docs/DOM/Manipulating_the_browser_history) –

    答えて

    17

    ページに存在しないハッシュであれば、この現象が発生します。たとえば、このページのthis link points to a non-existant hashです。 (Chrome 2.0とIE 6のリンクテストは現在のところ利用可能な唯一のブラウザです)

    URLがページの先頭に移動している場合は、何も表示されていないことを確認してくださいIDまたは名前がそのアドレスであるページ。

    +0

    私はあなたの絶対に正しいことを実感しました。 –

    0

    すべてのブラウザは、ハッシュ値を「そのDOM IDに移動する」と解釈します。これでDOMタグを追加

  • それを調べるために、ブラウザの必要性を無効にする、falseを返すようにハッシュを追加して、アクションを作成し

    1. :あなたは私が考えることができる二つのことを試みることができますクリックした場所に右に追加しているハッシュのID。ブラウザの移動を停止します。しかしおそらく、あなたが何かのためにハッシュを追加しているので、これはあなたが望むものではありません。

  • 1

    以下の例のいずれかは、あなたが欲しいものを行う必要があります。

    <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> 
    <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> 
    <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> 
    <a href="pleaseEnableJS.html" 
        onclick="window.location.hash = '#test1';return false;">Test 1</a> 
    <a href="#test2">Test 2</a> 
    <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> 
    <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> 
    <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> 
    

    ページ上id="test1"またはid="test2"または<a name="test1"></a>または<a name="test2"></a>との任意の要素がある場合は、それはそれ以外の場合は、その要素にスクロールしますあなたが要求したとおりに動作するはずです。

    期待どおりに機能しないコードがある場合は、edit your questionを入力し、期待どおりに動作しないHTMLとJavaScriptの小さな例を含めてください。

    0

    Welbogの答えはうまくいきますが、ブラウザのアドレスバーに#nonexistantanchorハッシュを残します。

    jQueryでこれを行うには、クラスをアンカーに追加し、prevent defaultメソッドを使用して、ナビゲーションとURLの変更を無効にします。もちろん

    <a href='#' class="nodefault">Clickable</a> 
    
    <script> 
    $("a.nodefault").click(function(event) { 
        event.preventDefault(); 
    }); 
    </script> 
    

    、審美的なジレンマは、エレガントなURLまたはJavaScriptを含まない溶液が好まれるかどうかの上に今あります。

    関連する問題