問題タブ [hashchange]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
361 参照

jquery - jQueryハッシュがワイルドカードを変更しました

私は現在、jQueryenhashChangedに基づいて動的なWebサイトを構築しています。現在、document.readyでこのコードを使用しています。

今、私はビデオギャラリーを構築しているので、次のようなURLを使用したいと思いました。

したがって、video.phpをコンテンツ部門にロードする必要があります。DBからID12485のビデオを取得する必要があります。しかし、JavaScriptでこれらのハッシュページをカバーするにはどうすればよいですか?

ありがとうございました!

0 投票する
5 に答える
14459 参照

javascript - Javascript/jQuery は、ブラウザーの戻る/進むボタンのクリック時にのみハッシュの変更を検出します

ブラウザの履歴の変更 (つまり、[戻る] または [進む] ボタン) でのみハッシュ変更を検出することは可能ですか?

onBeforeUnload イベントを見たことがありますが、ウィンドウがアンロードされていないため、このイベントはハッシュの変更時に発生しません。

hashchange イベントは、ハッシュが変更されるたびに発生します。修正はありますか?できればプラグインなしで。jQuery 履歴プラグインを見たことがありますが、最も簡単な解決策を探しています。

助けてくれてありがとう。

0 投票する
2 に答える
2918 参照

javascript - Jquery mobile - onhashchange issue

I am using $.mobile in my app. I must create my own routing system. I bind observer on hashchange and I pull out interesting data from location.hash. I have a problem - jQuery.mobile removes the hash sign from location.hash if it has a slashes ( e.g. from 'lalal/#controller/action/param' to 'lalal/controller/action/param' and $.mobile says in yellow box Error Loading Page.

I tried to unbind existing "hashchange" in first, but then pages not load automatically ( what I require ).

How to prevent changes of hash, but that jQuery must still load the page automatically( e.g. by its ID declared in element having data-role='page')? . Below is a fragment of my router class: ( Router.load doesn't change location.hash )

0 投票する
1 に答える
2180 参照

javascript - ユーザーが同じリンクをクリックしても Hashchange が起動しない

REST API と対話するブラウザーで実行するための HTML および Javascript クライアントを作成しています。RouteMapを使用して URL を設定しています。だから私はこのようなコンベンションを続けてきました

ルートを 1 つだけ設定し、hashchange にバインドされた関数でこれらのパラメーターを取得しています。ほとんどのものは正常に動作します。たった2つの問題で、私はそれらのために立ち往生しています。

  1. ユーザーが同じリンクを 2 回クリックしても、hashchange イベントは発生しません。はい、ハッシュは変更されていないため、明らかに発火しません。しかし、できることがあるはずで、それが欠けています。
  2. ハッシュ リンクを変更したくない UI で何かを変更すると (新しい div を表示して一部を非表示にするなど)、その履歴が失われ、[戻る] ボタンを適切にクリックしても戻ることができません。

どんな助けでも感謝します。

0 投票する
1 に答える
4159 参照

events - バックボーン ルーター/履歴の [戻る] ボタンによる Hashchange イベント

次のシステム構成を使用しています。


バックボーン 0.5.3 を使用する Ubuntu 11.04 上の Chromium 14.0.835.202

次のルートとコールバックが定義されたバックボーン ルーター:


このシステムでは、次の動作をしています。


  1. 「ルート」(ホーム) にアクセスすると、「handlerRoot」が呼び出されます。わかりました、それは私が期待していたものでした。
  2. 'second' (#second) に移動すると、'handlerSecond' が呼び出されます。わかりました、それは私が期待していたものでした。
  3. 「root」にいて、次に「second」に移動し、そこで「戻る」ボタンをクリックすると、「戻る」ボタンを押した結果、2 つのコールバックが呼び出されます。最初は「handlerSecond」と呼ばれ、次の「handlerRoot」。ここで実際には、「handlerRoot」のみが呼び出されることを期待していました。ユーザーとして戻るボタンを押したときの意図は、前のページに戻ることでした。
  4. 次のパスを実行している場合: 'root' -> 'second' -> 'root' -> 'second'、および 'second' (最後のもの) で 1 回、[戻る] ボタンをクリックします。このプッシュの結果は、次のコールバックと呼ばれます: 最初の「handlerSecond」、次の「handlerRoot」、次の「handlerSecond」、最後に「handlerRoot」。以前の履歴の URL パスに関連付けられたすべてのコールバックが (逆の順序で) 呼び出されるようです。ここでも、expectaction は 'handlerRoot' としか呼ばれていませんでした (同じ理由で、'second' からルートに戻ってきました。すべての履歴には興味がありません)。

History の Backbone.js コードを見ていましたが、それが「onhashchange」イベントを使用していることがわかりました (互換性のあるブラウザーの場合)。そのため、ブラウザー コンソールで次のように手動で設定しました。



この構成で同じ実験 (1)、(2)、(3)、(4) を行いました。事実上、以前の履歴のすべての URL パスが逆順で出力されました。たとえば (3) では、[戻る] ボタンを押しているときに、最初に 'second' の URL が出力され、次に 'root' の URL が出力されます。したがって、バックボーンの動作は実際には「onhashchange」の動作です。

私の質問は:

この動作の理由はどれですか (何に役立ちますか)? たとえば、コールバックがビューのみを切り替える場合、例 (4) では、ビューを 1 回だけ切り替える必要があるのに、ビューを 4 回切り替えています (「秒」で表示されるビューを「ルート」で表示されるビュー)。この動作を取得する方法はありますか?

前もって感謝します!

0 投票する
1 に答える
2146 参照

javascript - IE9 は、ブラウザーの [戻る] ボタンを使用すると、iFrame の window.location.href を更新しません。回避策?

各画面のページをリロードせずに、onhashchangeJavaScript イベントを使用して一連の「画面」をユーザーに表示しています。このページを iFrame 内に配置すると、hashchange イベントが IE9 によって起動されず、window.location.href が期待どおりに更新されません。

私が期待すること:ユーザーが「続行」をクリックして別の画面に進むたびに、URL のハッシュ部分が変更されます。ブラウザの戻るボタンと進むボタンを使用すると、ブラウザによってハッシュが変更されます。これは、javascript の onhashchange イベント ハンドラーによってキャッチされ、正しいコンテンツが表示されます。

代わりに観察したこと: onhashchange イベント (IE9 を含む) をサポートするすべてのブラウザーでの動作は予想どおりです。ただし、問題のページが iFrame 内に読み込まれると、IE9 では動作が変わります。IE9 でブラウザーの [戻る] ボタンをクリックすると、次のようになります。

  • hashchange イベントは発生しません。
  • window.location.href と window.location.hash は、戻るボタンをクリックする前と同じままです。
  • iFrame を右クリックして iFrame のプロパティを表示すると、変更されたハッシュで URL が表示されます。つまり、プロパティ ウィンドウの URL が wi​​ndow.location.href と一致しません。

おもちゃの例:他の人がこの動作を見ていないと報告しているため、ここにおもちゃの例を作成しました: http://jonemo.de/stuff/ie9iframe/test.html。をクリックしstate1てから をクリックしstate2、ブラウザの戻るボタンをクリックします。Current state of iFrameを読み取る必要がありますstate1が、私の IE9 ではstate2、この一連のアクションの後に読み取ります。私の IE はバージョン 9.0.8112.16421 で、これが通常のリリース バージョンです。

IE9 の iFrame 内のページで戻るボタンの使用を検出するにはどうすればよいですか? iFrame を保持するページと iFrame 内のページは、異なるドメインにある場合があります。iFrame 内のページを完全に制御でき、iFrame を保持するページに任意の Javascript を配置できます。

0 投票する
1 に答える
1075 参照

javascript - hashchange 関数の例外 - ブラウザの履歴が戻る?

この問題をどう呼べばいいのかわかりません… この質問のタイトルはまったく意味がありません。

次のケース: ユーザーが下にスクロールする単一ページのレイアウトがあります。.layerビューポート内でアドレスバーのハッシュを に変更する必要があるセクションがありidます。たとえば、.layer#oneビューポート内にある場合、アドレスバーの URL は次のようになります www.whatever.com/#!/one

これはうまく機能し、私が望んでいるものとまったく同じです。でこの構文を使用する理由は!/、場所を単純hashにスクロール動作のみに設定すると、ブラウザーがハッシュ位置に固執しようとするため、バグが発生するためです。

問題は、ブラウザの履歴に戻るボタンを機能させたいということです。これは通常hashchange、jQuery に付属の関数を使用するとかなり単純になります。このように…</p>

これに関する唯一の問題は、スクロール中にハッシュが変更されると、hashchange 関数もトリガーされることです。そのため、ブラウザの現在の位置に再びジャンプまたはスティックします。どうすればこれを解決できますか?スクロール中にハッシュチェンジのバインドを解除できるのではないでしょうか。しかし、これは最善の解決策ですか?

0 投票する
2 に答える
3179 参照

javascript - Jquery +最新のハッシュ変更リスナー?

http://benalman.com/projects/jquery-hashchange-plugin/を使用してプロジェクトのハッシュ変更をリッスンしていますが、彼のプラグインは古く、Firefox9やIE9などの新しいバージョンのブラウザーでは機能しません。

Googleとここで検索しましたが、他のプラグインは見つかりませんでした。

または、このコードを使用してほとんどのブラウザをターゲットにするだけで十分ですか?

編集:これらのブラウザ に関して問題がありconsole.log()、ハッシュ変更とは何の関係もなかったようです。console.logすべての出力を削除した後、期待どおりに機能します