window.location.hash 知識まとめ_基礎知識
Location は、アドレス バーを管理する JavaScript の組み込みオブジェクトです。たとえば、location.href=url を使用すると、ページを URL に直接リダイレクトできます。 Location.hash を使用して、ページのタグ値を取得または設定できます。たとえば、http://domain/#admin の location.hash="#admin" です。この属性値を使用すると、非常に意味のあることが実行できます。
window.location.hash シンプルなアプリケーション
1. #
の意味# は Web ページ内の位置を表します。右側の文字は位置の識別子です。たとえば、
http://www.example.com/index.html#print
はWebページindex.htmlの印刷位置を表します。ブラウザがこの URL を読み取ると、印刷位置が表示される領域まで自動的にスクロールされます。
Web ページの場所の識別子を指定する 2 つの方法があります。 1 つは、 などのアンカー ポイントを使用する方法であり、もう 1 つは、
2. HTTP リクエストには #
が含まれていません# はブラウザーのアクションをガイドするために使用され、サーバー側ではまったく役に立ちません。したがって、HTTP リクエストには # は含まれません。
たとえば、次の URL にアクセスします。
http://www.example.com/index.html#print
ブラウザによって送信される実際のリクエストは次のようになります:
GET /index.html HTTP/1.1
ホスト: www.example.com
ご覧のとおり、index.html をリクエストしているだけで、「#print」の部分はまったくありません。
3. #
以降の文字最初の # の後に表示される文字は、ブラウザーによって位置識別子として解釈されます。これは、これらの文字がサーバーに送信されないことを意味します。
たとえば、次の URL の本来の目的は、色の値を指定することです:
http://www.example.com/?color=#fff
ただし、ブラウザによって行われる実際のリクエストは次のとおりです:
GET /?color= HTTP/1.1
ホスト: www.example.com
ご覧のとおり、「#fff」が省略されています。 # が # にトランスコードされた場合にのみ、ブラウザはそれをリテラル文字として扱います。つまり、上記の URL は次のように記述する必要があります:
http://example.com/?color=#fff
4. Web ページのリロードをトリガーせずに # を変更します
# 以降の部分を変更するだけで、ブラウザは対応する位置までスクロールするだけで、Web ページはリロードされません。
たとえば、
からhttp://www.example.com/index.html#location1
が
に変更されましたhttp://www.example.com/index.html#location2
ブラウザはサーバーにindex.htmlを再リクエストしません。
5.#を変更するとブラウザのアクセス履歴が変更されます
#の部分を変更するたびに、ブラウザのアクセス履歴に記録が追加されます。「戻る」ボタンで前の位置に戻ります。
これは、ajax アプリケーションで特に役立ちます。さまざまな # 値を使用してさまざまなアクセス状態を表すことができ、ユーザーに特定の状態にアクセスするためのリンクを与えることができます。
上記のルールは IE 6 および IE 7 には当てはまらないことに注意してください。# の変更によって履歴が増加することはありません。
6. window.location.hash は # 値
を読み取りますプロパティ window.location.hash は読み取りおよび書き込み可能です。読み取り時はWebページのステータスが変化したかどうかを判断するために使用でき、書き込み時はWebページをリロードせずにアクセス履歴レコードが作成されます。
7. onhashchange イベント
これは HTML 5 の新しいイベントです。 # 値が変更されると、このイベントがトリガーされます。 IE8、Firefox 3.6、Chrome 5、および Safari 4.0 はこのイベントをサポートしています。
使用方法は 3 つあります:
window.onhashchange = func;
window.addEventListener("hashchange", func, false);
onhashchange をサポートしていないブラウザの場合は、setInterval を使用して location.hash の変更を監視できます。
8. Google クロールの仕組み #
デフォルトでは、Google のウェブ スパイダーは URL の # 部分を無視します。
ただし、Google は、Ajax によって生成されたコンテンツをブラウジング エンジンで読み取れるようにする場合、URL に「#!」を使用すると、それに続くコンテンツを Google が自動的に変換することも規定しています。クエリ文字列 _escaped_fragment_ 。
たとえば、Google は、twitter の新しいバージョンの URL が次のとおりであることを発見しました:
http://twitter.com/#!/username
は別の URL を自動的にクロールします:
http://twitter.com/?_escaped_fragment_=/username
このメカニズムを通じて、Google は動的な Ajax コンテンツをインデックスに登録できます。
このような問題に遭遇したネチズンを見てみましょう。次のコードに示すように、ページ上のボタンをクリックするたびに、ブラウザのアドレス バーの値が変更されます。 (ブラウザに情報を送信せずに) サーバーは新しいリクエストを送信し、「戻る」ボタンと「進む」ボタンを使用できるようにします。
現在の問題は、ie6とff3でブラウザの値が変わってしまったのですが、ff3では「進む」と「戻る」しか使えないのですが、ieではこの2つがグレーになっていて使えないのです。 。 なぜ?
コードは次のとおりです
<html> <head> <script type="text/javascript"> //每次点击都会调用test(),它会改变url的值 var i=0; function test(){ window.location.hash=i; i++; } </script> </head> <body> <input type="submit" value="xxxxxxxxxxxxx" onclick="test()"/> </body> </html>
以下は、ajax と組み合わせたハッシュの使用についてです。ajax がデータを取得するたびに、ページが更新された後、ブラウザーは履歴レコードを生成しません。これは、この場合、「戻る」ボタンと「進む」ボタンが役に立たなくなることを意味します。 、ハッシュとウィンドウを組み合わせて使用できます。ie6 と 7 は onhashchange をサポートしていませんが、setInterval を使用してハッシュの変更を定期的に確認したり、onload をチェックしたりすることができます。
具体的な実装:
<body> <div id="div1"></div> <input type="button" value="click" onclick="GetT()" /> </body> </html> <script type="text/javascript" src="js/AjaxHasPool.js"> </script> <script type="text/javascript"> var ajax = new AjaxHasPool(); var method="get"; var url ="Handler.ashx"; var i = 1; var obj = new Object(); function GetT() { document.getElementById("div1").innerHTML=i; ajax.Startup(null,url,method,ep); } function ep(xmlobj){ eval("obj['"+i+"']="+i+";"); location.hash="#"+i; ++i; } window.onhashchange=function(){ var hashStr = location.hash.replace("#",""); if(typeof(eval("obj['"+hashStr+"']"))!="undefined") document.getElementById("div1").innerHTML=eval("obj['"+hashStr+"']"); } </script>
1.AjaxHasPool は独自のカプセル化された ajax クラスで、ajax.Startup() が ajax リクエストを送信します。
2. Object オブジェクトは履歴レコードを保存します。オブジェクト属性が数値の場合は、obj["1"] を使用してインスタンス化する必要があります。そうしないと、命名規則に違反します。
3. window.onhashchange を使用してハッシュ値を検出し、履歴データを取得します。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...

JavaScriptを学ぶことは難しくありませんが、挑戦的です。 1)変数、データ型、関数などの基本概念を理解します。2)非同期プログラミングをマスターし、イベントループを通じて実装します。 3)DOM操作を使用し、非同期リクエストを処理することを約束します。 4)一般的な間違いを避け、デバッグテクニックを使用します。 5)パフォーマンスを最適化し、ベストプラクティスに従ってください。

フロントエンドのVSCodeと同様に、パネルドラッグアンドドロップ調整機能の実装を調べます。フロントエンド開発では、VSCODEと同様のVSCODEを実装する方法...
