問題タブ [html5-history]
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.
javascript - History API とドメインレベルの URL
MyDomain.com に 2 つのページがあります。MyDomain.com/ および MyDomain.com/Foo/Bar から表示されるインデックス ビュー。各ビューには他のビューへの ajax 呼び出しがあり、それぞれが HTML5 History API を使用して状態をプッシュします。
問題を作成する手順があります。
- MyDomain.com/ から開始します (期待どおりに動作します)。
- MyDomain.com/Foo/Bar/ への ajax リンクをクリックします (期待どおりに動作します)。
- MyDomain.com/ への ajax リンクをクリックします (期待どおりに動作します)。
- MyDomain.com/Foo/Bar/ への ajax リンクをクリックします。
URL は MyDomain.com/ Foo/Foo /Bar/のように表示されます。
Foo Foo Bar は要りません。
私の現在の回避策は、URL の先頭に「../../../」を追加することですが、これは洗練されておらず、絶対確実ではありません。もう 1 つのオプションは、ディレクトリ レベルをカウントするための正規表現です。
History API で絶対 URL を取得するより良い方法はありますか?
javascript - この場合、html5-history によってプッシュされた以前の URL に移動するにはどうすればよいですか?
私は html5-history API を使用しており、これを行って URL を変更します。
さて、最終結果は次のようになります。
次に、ブラウザの前のページを押すhttp://myweb.com/と、以前の履歴の URL push: ではなく、にリダイレクトされますhttp://myweb.com/hello/。
ブラウザの戻るボタンが押されたときに呼び出す方法history.go(-1)など、これを解決する方法はありますか? ヘルプ、ヒント、アドバイスをいただければ幸いです。さらに情報が必要な場合はお知らせください。投稿を編集します。
html - jQuery Addressプラグインのブックマークされたページのdiv内のコンテンツを自動的にロードします
jquery.address プラグインを使用して、ajax を介してコンテンツを読み込んでいるときにブラウザのアドレス バーを更新しています。ユーザーが「domain.com/about-us」のようなブックマークされたページにアクセスしようとしたときに、コンテンツをロードするために使用している DIV に event.value または event.path を自動的にロードする方法がわからないことを除いて、すべて正常に動作します。 、その場合、ページは読み込まれますが、「about-us」コンテンツは DIV に読み込まれません。私は何が欠けていますか?これは私のコードです:
JS:
HTML:
.htaccess:
ありがとう!
javascript - Firefox は window.onpopstate を Chrome や Safari とは異なる方法で処理しますか?
Chrome、Safari、および Firefox で単一ページ アプリケーションを動作させようとしましたが、Firefox は window.onpopstate をまったく実行していないようです。
すべてのリクエストを index.html にルーティングする .htaccess があるため、クライアントがリクエストを行うと、ブラウザは URL を JavaScript 変数として保存し、index.html の js を介して渡します。
Firefox で実行すると、変数は index.html ページに渡されません。この問題をより深く調べる方法について、解決策や提案がある人はいますか?
javascript - 履歴に基づくカスタム戻るボタン
私の 1 ページの Web アプリでは、一部のページに、ユーザーがブラウザー履歴の特定のポイントに戻るための戻るボタンが必要です。必ずしも前のページではありません。
ブラウザの戻るボタンについて話しているのではないことに注意してください。これは通常どおり機能するはずです。
使用事例
例として、gmail Web アプリについて考えてみましょう。場合によっては検索フィルターやその他のパラメーターを含むフォルダー ビューと、1 つのメッセージを表示するメッセージ ビューがあります。メッセージ ビューには、前のページに移動しない戻るボタンがあります。いくつかのメッセージをクリックして読み回した場合でも、戻るボタンをクリックすると、元のフォルダ ビューに戻ります。メッセージの。
gmail の場合、これは URL の最後に以前の状態をエンコードするだけで実現されます。たとえば、検索してこのメッセージにたどり着いた場合、次のようになります。
このことから、アプリは、戻るボタンが次のページを指す必要があることを認識しています。
しかし、私のアプリケーションでは、状態が多すぎてすべてを URL にエンコードできません。2 つのビュー (フォルダー + メッセージ) ではなく、3 つのビューがあります。それらを A、B、および詳細と呼びましょう。たとえば、B から A に、または詳細から B に戻ります。A、B、および詳細のすべてのパラメータを詳細ページの URL にエンコードすると、URL が非常に扱いにくくなります。
実装
これは、html5 history API を使用して簡単に実現できると思いました。ただし、私が知る限り、履歴 API は履歴内の URL の読み取りをサポートしていません。やみくもに戻るか進むことしかできません。
関連する質問で説明されているように、history.js は過去の状態へのアクセスを提供します。
History API: Javascript Pushstate、以前の URL を取得
しかし、私は history.js ではうまく動作しない angularjs を使用しています。これは、history.js を経由するのではなく、履歴 API と直接やり取りするため、angular $location サービスによって引き起こされた遷移の状態が履歴に表示されないためです。 .js の History オブジェクト。
次のいずれかを行う必要があるようです。
- history.js を angular でうまく機能させる
- 自分のコードで history.js の機能のサブセットを再実装する
document.referrer を使用して履歴の前の値を確認することも検討しましたが、1 ページ アプリ内を移動するときに設定されないため、これは機能しません。
angularjs - AngularJS Web アプリの場合: Web ページは、戻るボタンで戻ったときに最後のスクロール位置を記憶していません。なんで?直し方?
AngularJS の開発者ガイドをナビゲートしているとき、戻るボタンを使用してページに戻るときに、最後のスクロール位置に戻らないことに気付きました。代わりに、すぐにトップに戻ります。デベロッパー ガイドは AngularJS を使用して作成されているため、AngularJS を使用して独自の Web アプリケーションを作成すると、同じ経験をしたユーザーがいらいらするのではないかと心配しています。なぜこれが起こっているのですか?どうすれば修正できますか? どうにかして HTML5 の履歴 API を使用する必要がありますか?
開発者ガイドにアクセスして、この動作を自分で確認してください: http://docs.angularjs.org/guide/directive
ember.js - ハッシュバン URL を履歴 API に変更する方法
私は ember1.0-rc3 を使用しています。hashbang の URL を通常の URL 形式 (www.site.com/admin#/page1 から www.site.com/admin/page1 へ) に変更したいです。変更、アプリ ルーターで location: "history" を使用します。
しかし、ページをリロードしたり、ページをブックマークしたりすると、ページが機能せず、ホームページにのみリダイレクトされます.htaccessファイルのリダイレクトURLを変更せずに、アプリでオプションのリロードとブックマークが必要です.何か方法はありますか?ありがとうあらかじめ