1

これはおそらく簡単な質問であり、ここで何かが欠けていると確信しています。

私がやろうとしているのは、URL のハッシュ タグ リンクを無効にすることだけです。たとえば、誰かが url を入力した場合:www.example.com/#anchorに変更さwww.example.comれ、URL 内のハッシュが完全に削除されます。

どちらの方法でも、機能を無効にして URL に保持するだけでかまいません。

これが私がこれまでに持っているものですが、あまり運がありません:

var locationHashIndex = window.location.href.lastIndexOf("#"),
    station = window.location.href.slice(locationHashIndex + 1);

    window.location.href = window.location.href.substr(0, locationHashIndex);

これは、ページをすべてクレイジーにリロードし続けます...私が探しているものではありません。これについて何か考えはありますか?

4

4 に答える 4

3

できるよ:

if(window.location.hash){
    window.location.href = window.location.href.replace(/#.*/,'');
}
于 2013-04-14T20:56:45.197 に答える
1

を調べてwindow.location.hash、削除しようとしている値を格納しているため、その変数に値がある場合にのみコードを実行する必要があります。

if(window.location.hash != ''){
    // code here
}
于 2013-04-14T20:57:28.127 に答える
1

window.history.pushState代わりにhttps://developer.mozilla.org/en-US/docs/DOM/Manipulating_the_browser_historyを使用する必要がありますwindow.location.href

于 2013-04-14T20:57:52.643 に答える
1

jQuery の使用に慣れている場合は、https: //stackoverflow.com/a/8683139/618649 を参照して、# を含むすべての URL を無効にする簡単な解決策を確認してください。

この例では、一日中 Go There リンクをクリックしても何も起こりません。

<html>
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    </head>
    <body>
        <a href="./#there"><span id="here">Go There...</span></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/>.<br/>.<br/>.<br/>.<br/>.
        <br/>.<br/>.<br/>.<br/>.<br/>.<br/>.<br/>.<br/>.
        <span id="there">There...</span></a>

        <script language="javascript">
        jQuery(function ($) {
            $("a[href*=#]").click(function(e) {
                e.preventDefault();
            });
        });
        </script>
    </body>
</html>
于 2013-04-14T21:12:19.843 に答える