問題タブ [popstate]
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.
symfony - 独自の Symfony2 アノテーションを簡単に実装できますか?
Symfony の注釈モジュールに、それらを他の用途に使用できるものはありますか?
私は知って@Route
おり、@Method
既存のライブラリを拡張する必要があるため、推測するほど簡単ではありません。
現在、私は JS History API を使用しておりpopState
、JS ファイルのデータを注釈に入れたいと思っています。そのため、ルーティングが URL を生成するときに、それらはすでに使用可能です。
Qここに HTML5 の注釈付きのタイトルや何らかの属性を付けるのは理にかなっていませんか? このデータを注釈付きで、既存のルート名などのすぐ隣に定義できると便利です。
Q以前にアノテーションを微調整したことのある人はいますか?
ユースケースを理解するためにいくつかの重要な詳細 (History API の言及) を省略したと思うので、ここで私の意図を明確にしたかったのです。
フロントエンド バンドルを介して統合された SPA フロント エンドがいくつかあります。これは、AJAX 呼び出しを介して、ストレートな RESTful API であるバックエンド バンドルに接続され、開発が非常に楽しい PHP API クラス I が追加されています。他の PHP クラス コントローラ メソッドを直接実行する方法で AJAX を解釈および処理 (ルーティング) します。
この Symfony 2 アプリ (fosjsrouter) では、ルーティングを処理するために多くの ajax を使用しています。そのため、ルートとアクションをトリガーする URL の代わりに、SPA クリック イベントが AJAX をバックエンド ルーターに送信し、PHP 制御パラメーター (クラス/メソッド/変数名) とデータ セットに限定されない大きな JSON ペイロードを使用します。
では、軌道に戻ります。上記のシナリオを考えると、ルーターの JS クラス オブジェクト エンドでは、この内部に JS History API 機能 (状態、戻るボタンなど) を追加するのに最適な場所だと思いました。
上記のクラスは、history
フラグが呼び出された場合に呼び出すことができ、初期状態データの割り当てを担当する可能性があります。これは主に、この JS メソッドで使用されている JSON データ オブジェクトに、重要なルート データと、アノテーションに由来するバックエンド PHP で必要とされるそのルートのパラメータ情報がすでに多く含まれているためです。
ajax.done()
したがって、履歴状態のタイトルと URL へのアクセシビリティを注釈に追加すると、初期状態を定義するために利用できるその情報にすぐにアクセスできるようになります。.
これで、db とリアルタイムのクライアント側非同期の間で 2 つの方法で状態をやり取りできるようになりました。フロントエンドからオブザーバーなどを使用し、バックエンドでジョブ/キューを使用して、完全に反応し続けることができます。(Reactも使用してください:-))
EDIT私はそれが私が考えていたことだとは確信していません.PHP関数のreturnステートメント内での値title
を設定するように見えます.url
'Matthias Noback';
だから私はこれを試していますが、これらのタイトルをどこに設定しますか?
ここで WAY を設定したいので、このルートを呼び出す ajax がアクセスできるようにします.. (@historyApiTitle
このコードなどで探してください..)
Qこれらの 2 つのコード例を見て、2 つの間のドットを接続してこれを機能させるにはどうすればよいですか?
javascript - history.pushState() 状態オブジェクトはこのようなものですか?
AJAX 経由でページを読み込んでいますが、最近 と について読みましhistory.pushState
たonpopstate
。
の状態オブジェクト パラメータがどのようなものなのか、実際にはわかりませんでしpushState
た。MDN のページでは、例として単純なオブジェクトしか示されていませんでした。しかし、このオブジェクトを使用して AJAX 応答 HTML を保存し、起動時にそれをロードしないのはなぜonpopstate
でしょうか? だから私はこのようなことをしています:
XHR ステータス 200/304 (AJAX 成功) :
onpopstate :
もちろん、これは更新された可能性のある (古い) コンテンツをロードするため、戻ってブラウザーのキャッシュを取得する場合と似たようなものになると思います。
MDN では、オブジェクトは JSON 表現で最大 640k 文字を保持できると述べています。
では、状態オブジェクトはこのようなものを意図していたのでしょうか? または、履歴が位置を移動したときに、強制的にリロード/AJAXリクエストを再度実行する必要がありますか?
ありがとう。
javascript - JavaScript における History オブジェクト (pushState、popState、ReplaceState) の意味
JavaScript のHistory オブジェクト(また、 History.pushState 、 History.PopState 、...)に関する知識を得たいと考えています。ただし、次のリンクを除いて、
https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history
また、このリンク: http://diveintohtml5.info/history.html
例と使用法で特に包括的なものは見つかりませんでした。誰でもそれについて私を助けることができますか?
助けてくれてありがとう
javascript - ページ更新後の pushState 履歴の保持
私は、ナビゲーションに AJAX とブラウザ履歴 API を使用するサイトに取り組んできました。
戻る/進むボタンのナビゲーションが正しく機能するようになりましたが、更新ボタンをクリックすると問題が発生します。
popstate イベントが null の場合に参照するデフォルトの状態とページ タイトルを保存しているため、ページのリロード時に上書きされます。
たとえば、履歴スタックが次のようになっているとします。
[索引、1 ページ、2 ページ]
ページ 2 でリロードすると、デフォルトの状態はページ 2 になります。
ページ 2 -> ページ 1 -> ページ 2
私のポップスタンドハンドラーは、状態がnullのときにデフォルトページに移動するように設定されているためです。
他の人がこの問題に遭遇したと確信していますが、明確な解決策は見つかりませんでした。ほとんどのチュートリアルは前後のフレームワークを離れており、更新によって引き起こされる問題についてはまったく触れていません。
これに対する良い解決策が何であるかはわかりません。何か案は?
javascript - Angular: $http.get() は毎秒 onpopstate トリガーのみを起動します
私は、API を呼び出して大量のデータを返す AngularJS アプリを使用しており、ユーザーはそのデータをタグでフィルタリングして、結果の粒度を高めることができます。タグをクリックしてデータをフィルタリングするたびに、アプリが新しい$http.get()
呼び出しを行い、ユーザーがパーマリンクを保存して特定のデータ セットに戻ることができるように、URL が適切なクエリ パラメーターで変更されます。
を使用してアプリに適切な履歴処理を与え、window.history.pushState()
各履歴オブジェクトに関連するクエリ パラメーターを状態データとして渡すようにしています。window.onpopstate
戻る/進むボタンがクリックされたことを検出するために使用し、それを使用して、履歴から関連する状態データを使用して新しい呼び出し$http.get()
を行います。
何らかの理由で、この関数は 1秒$http.get()
ごとにのみ起動し、その後 2 つの呼び出しを行います。キャッシングが行われているようですが、原因を見つけることができませんでした。この動作は、後方と前方の両方向に持続し、一貫して毎秒のイベントです。タグが追加/削除されるたびに が 1 だけ増加すること、状態データが正常に送信されていること、新しい検索クエリが正しく組み立てられていること、および要求パスが正しいことを確認しました。発砲していないだけです。どうしたの?? popstate
window.history.length
説明のために、動作フローは次のようになります。
- ページを読み込む
/default
- 最初のタグを追加: URL は
/default&tags=a
で、$http.get()
新しいデータを返します - 2 番目のタグを追加: URL is
/default&tags=a,b
、$http.get()
新しいデータを返す - 3 番目のタグを追加: URL is
/default&tags=a,b,c
、$http.get()
新しいデータを返す - 4 番目のタグを追加: URL is
/default&tags=a,b,c,d
、$http.get()
新しいデータを返す
- 最初のタグを追加: URL は
- 最初の戻るボタン イベント
window.onpopstate
火災、URLは現在/default&tags=a,b,c
- ネットワークの変更なし
- 2 回目の戻るボタン イベント
window.onpopstate
火災、URLは現在/default&tags=a,b
$http.get()
起動し、データのネットワーク要求を送信します/default&tags=a,b,c
$http.get()
再び起動し、データのネットワーク要求を送信します/default&tags=a,b
/default&tags=a,b
負荷のデータセット
- 3 回目の戻るボタン イベント
window.onpopstate
火災、URLは現在/default&tags=a
- ネットワークの変更なし
- 4 回目の戻るボタン イベント
window.onpopstate
火災、URLは現在/default
$http.get()
起動し、データのネットワーク要求を送信します/default&tags=a
$http.get()
再び起動し、データのネットワーク要求を送信します/default
/default
負荷のデータセット
関連するコード スニペット:
成功イベントもエラー イベントも発生しません。$http.get().then().catch()
他に何か起こっている可能性があるかどうかを確認するために使用しようとしましたが、何らかの理由...catch()
で、それは有効な関数ではないというエラーがコンソールに表示され続け、それ自体が当惑しています。何か案は?
ありがとう!