[解決済み] ページを再読み込みせずにクエリ文字列を変更する
質問
フォトギャラリーを作成しているのですが、写真を閲覧する際にクエリストリングとタイトルを変更できるようにしたいのですが。
私が探している動作は、連続ページ/無限ページの実装でよく見られるもので、スクロールダウンするとクエリ文字列がページ番号をインクリメントし続ける ( http://x.com?page=4 など)。これは理論的には簡単なはずですが、主要なブラウザ間で安全なものが欲しいです。
私が見つけたのは
この素晴らしい記事
を使い、その例に倣おうとしていました。
window.history.pushstate
が、私にはそれがうまくいっていないようです。そして、私はブラウザの履歴を変更することをあまり気にしていないので、それが理想的であるかどうかはわかりません。
ただ、写真が変わるたびにページを再読み込みすることなく、現在見ている写真をブックマークする機能を提供できるようにしてほしいです。
クエリ文字列を変更する無限ページの例です。 http://tumbledry.org/
アップデイト がこの方法を発見しました。
window.location.href = window.location.href + '#abc';
解決方法は?
もし、あなたがHashの修正を探しているのなら、あなたの解決策は大丈夫です。しかし、クエリを変更したいのであれば、あなたが言ったようにpushStateを使用することができます。これは、あなたがそれを適切に実装するのに役立つかもしれない例です。私はテストし、それはうまくいきました。
if (history.pushState) {
var newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + '?myNewUrlQuery=1';
window.history.pushState({path:newurl},'',newurl);
}
ページの再読み込みはしませんが、URLクエリの変更だけは可能です。プロトコルやホストの値を変更することはできないでしょう。そしてもちろん、HTML5 History APIを処理できるモダンブラウザが必要です。
詳しくはこちら
http://diveintohtml5.info/history.html
https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history
関連
-
Vueがechartsのtooltipにクリックイベントを追加するケーススタディ
-
[解決済み】React - uncaught TypeError: 未定義のプロパティ 'setState' を読み取れない
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み] ページを再読み込みせずにURLを変更するにはどうすればよいですか?
-
[解決済み] JavaScriptでクエリ文字列の値を取得するにはどうすればよいですか?
-
[解決済み] 画面サイズ、現在のウェブページ、ブラウザウィンドウのサイズを取得する
-
[解決済み] JavaScriptでページの一番上までスクロールする?
-
[解決済み] なぜ ++[[]][+[] +[+[]] は "10" という文字列を返すのでしょうか?
-
[解決済み] Node.js上のExpress.jsでGET(クエリ文字列)変数を取得する方法とは?
-
[解決済み] Javascriptオブジェクトのクエリ文字列エンコーディング
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
vueネットワークリクエストソリューション ネイティブネットワークリクエストとjsネットワークリクエストライブラリ
-
jsを使った簡単な照明スイッチのコード
-
vue+webrtc(Tencent cloud)ライブ機能の実践を実現するために
-
JavaScriptの配列共通メソッド解説
-
vueが定義するプライベートフィルタと基本的な使い方
-
Vueでルートネスティングを実装する例
-
[解決済み】 env: node: macにそのようなファイルやディレクトリはありません
-
HTML5 LocalStorage ローカルストレージとセッションストレージの使用法
-
Uncaught TypeError: null のプロパティ 'offsetHeight' を読み取れませんでした。
-
[解決済み] ページを再読み込みせずにURLを変更するにはどうすればよいですか?