0

Webサイトには、必要なURLにリダイレクトする307を返すURLをロードする「ランダム」リンクが含まれています。正常に動作します。クリックすると、ランダムなページが読み込まれます。問題は、クリックするたびに、ブラウザが同じページを読み込んでいると想定することです。したがって、ホームページにアクセスしている場合は、ランダムリンクを5回たどり、押し戻すと、すべてが表示されます。ホームページに戻る方法。今見ているランダムなページを見つける方法はありません。この動作を変更して、ユーザーが[戻る]ボタンと[進む]ボタンを使用して前のランダムなページにアクセスできるようにします。

私はウェブサイトを所有していないので、リダイレクトコードを変更することはできません。

これが私が試したものですが、すべて失敗しました。

  • 何にリダイレクトされるかを予測します。ある程度可能ではありますが、最大.1%のクリックで失敗を回避する方法はなく、座っている構造の変更は言うまでもなく、1日遅れて公開されたページなどの予期しないイベントへの反応は非常に悪くなります。
  • ajaxを介して307ページをロードしています。リクエストはで停止し、ヘッダーreadystate == 2にアクセスできません。location
  • クリックイベントをキャンセルし、代わりにを設定しlocation.href = random_link.hrefます。これは効果がありません-新しいページはまだ履歴に入れられません。
  • 新しいページに電話してもらいますhistory.pushState。これにより、ページが履歴に正常に追加されますが、新しいページと[戻る]ボタンで開いているページを区別する方法が見つからないため、履歴がすぐに非常に破損します。
  • 自分の歴史をlocalStorage。上記のように、いつ戻るボタンが使用されているのかわかりません。

私は、既存のページの上にiframeでページをロードし、バックグラウンドプロセスとメッセージングを使用して、Chrome拡張機能からのコンテンツインジェクションがからアクセスできないという事実を回避することを含む、かなり確実に機能するソリューションに取り組んでいますwindow.parent。 iframe内。また、履歴APIを使用して現在のiframeのURLをアドレスバーに反映し、必要に応じて現在のiframeに適用する[戻る]ボタンと[進む]ボタンを取得します。

最後の解決策を機能させることができると確信していますが、それは単純な問題のように見えるものに対する恐ろしく複雑で重いアプローチです。それで、続ける前に皆さんに聞いてみようと思いました。他に何かアイデアはありますか?

4

1 に答える 1

0

場所を localStorage に保存してから、戻るボタンをハイジャックしてみましたか?

戻るボタンをハイジャックするために、これを参照できます: Is there a way to catch the back button event in javascript?

T.

于 2012-07-02T20:44:45.147 に答える