問題タブ [onbeforeunload]
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.
watir - onbeforeunload が Watir テストの終了を妨げないようにする方法
onbeforeunload を使用して、ユーザーがページから移動しようとするたびに確認を求める Web ページがあります。この確認は、ブラウザ ウィンドウが閉じられたときにも発生します。
私の問題は、少なくとも手動で介入して「OK」をクリックするまで、このプロンプトがテスト実行の最後に Watir が IE を閉じるのを妨げていることです。
テストが失敗した場合でも、Watir がこのプロンプトを自動的に閉じるようにテストを作成するにはどうすればよいですか? テストのティアダウン メソッドに条件付きロジックがあるのではないかと考えていますが、ポップアップを操作するには助けが必要です。
注:クリック イベントによって作成された onbeforeunload プロンプトとの対話に関する別の質問があります。この質問は、ウィンドウを閉じる要求によってポップアップが作成されたときの処理に関するものです。
watir - Watirテストでonbeforeunloadプロンプトをクリックする方法は?
現在のページから移動するアクションをユーザーが実行したときにユーザーにプロンプトを表示するonbeforeunloadスクリプトを含むWebページがあります。
Watirを使用してこのポップアップを操作するにはどうすればよいですか?私の現在のアプローチは次のようになります。
問題は、「クリックして待つ」を使用すると、ポップアップが作成されず、テストがタイムアウトすることです。「クリック」を使用するとポップアップが作成されますが、開いた後にテストがハングします。
助言がありますか?
javascript - window.beforeunload が Firefox で 2 回呼び出されました - これを回避するには?
beforeunload ハンドラがインストールされたポップアップ ウィンドウを作成しています。「閉じる」ファイル メニュー項目を使用してポップアップを閉じると、beforeunload ハンドラが 2 回呼び出され、「このウィンドウを閉じてもよろしいですか?」という 2 つのメッセージが表示されます。メッセージが表示されます。
これは Firefox のバグであり、ここで報告しましたが、これが起こらないようにする方法が必要です。二重メッセージの問題を防ぐために、二重の beforeunload を検出する適切な方法を考えられますか? 問題は、ユーザーがダイアログのどのボタンをクリックすることを選択したか ([OK] または [キャンセル]) を Firefox が教えてくれないことです。
javascript - jQueryを使用してChromeとIEのbody要素にonbeforeunloadを設定する
ダーティフラグが設定されたら、ユーザーがページを離れたいと確信しているかどうかを確認したいシステムがあります。
私は次のコードを使用しています - FireFox では、FireBug を介してページ ソースを確認でき、タグには onbeforeunload 属性が正しく挿入されています。
ただし、Chrome と FireFox ではこれは発生せず、警告なしでページから移動できます。body タグを更新する jQuery 行は確実に実行されていますが、実行していないだけです。
ここから先に進む方法はありますか?
jquery - jQueryUIダイアログOnBeforeUnload
小さな問題があります。ウィンドウのOnUnLoadイベントをキャッチして確認の質問をしようとしています。ユーザーがそのままにしておきたいと判断した場合は問題なく、ページを離れたい場合は保存されていないデータがすべて失われます。ここに問題があります...
jQuery UIダイアログを使用しています。ページに次のコードを配置すると、ダイアログが開き、ブラウザーの[戻る]ボタンをクリックしても、msgboxがポップアップ表示されません。ページを更新するだけです。
そして、私が使用している解決策は、ここに投稿されました。繰り返しますが、jQuery UIダイアログを開いていない場合、msgboxは正常に表示されます。そうした場合、msgboxは表示されず、ページが更新されるだけです。
何か案は?
asp.net - asp:LinkButtonでOnBeforeUnloadが2回起動するのはなぜですか?
次の Jquery 関数を使用して、保存されていない変更があり (SO と同様)、現在の画面を離れようとしているときにプロンプトを表示してユーザーに通知します。
これは期待どおりに機能し、ユーザーが href をクリックしてブラウズしたり、戻るボタンなどを使用しようとすると、メッセージ ボックスが表示されますasp:LinkButton
。ページを離れる前に。ユーザーがこれをクリックするLinkButton
と、プロンプトが 2 回表示されます。
シナリオ:
- ユーザーが
LinkButton
- プロンプトが表示され、ユーザーはキャンセル ボタンをクリックします。
プロンプトが消え、ユーザーはまだ画面上にいます。良い。
ユーザーが
LinkButton
- プロンプトが表示され、[OK] ボタンをクリックします。
- プロンプトが消え、同じプロンプトが再び表示されます。
- ユーザーはもう一度 [OK] をクリックします。
- プロンプトが消え、ユーザーが次の画面に移動すると、すべて問題ありません。
では、なぜ 2 番目のプロンプトが表示されるのでしょうか??? OnBeforeUnload はどのように 2 回起動しますか?
javascript - Javascript同期AJAXタイムアウト
私のJavascriptは、ページが閉じたときにサーバーにデータを送信する必要があります。これは、現在、の同期AJAX(SJAX?)リクエストで行っていwindow.onbeforeunload
ます。もちろん、これに伴う問題は、サーバーに時間がかかりすぎたり、ネットワーク接続が切断されたりすると、ブラウザーがフリーズすることです。
私が読んだところによると、同期AJAXリクエストのタイムアウトを指定することはできず、非同期AJAXリクエストはで機能しませんwindow.onbeforeunload
。これを解決する方法についての私の最善の推測は、非同期リクエストを使用してから、しばらくの間ブラウザをロックしてリクエストを終了させることです。
これは機能しますか?この方法に潜在的な問題はありますか?
google-chrome - Google Chrome拡張機能でpopup.htmlのonbeforeunloadイベントがトリガーされますか?
ポップアップと背景ページを備えた Google Chrome 拡張機能を作成しています。ポップアップは、バックグラウンドが生成する特定のイベントをサブスクライブします。ポップアップが消えたら、これらのイベントのサブスクライブを解除したいと思います。ただし、ポップアップから生成される onbeforeunload または onunload イベントのいずれも表示されません。これらのイベントは発生しますか? そうでない場合、ポップアップを閉じる方法に関するアイデアはありますか?
iframe - onbeforeunloadのジレンマ:更新/戻るボタンのクリックでiframeが壊れるvs.迷惑なメッセージ
SearchInsideOutという検索サービスを実装しています。この検索サービスは、Webページの結果を完全なWebページに置き換えるだけです(はい、使用しiframe
ました)。
私が対処しなければならない問題は、iframeを壊すページです。
私が見つけた有望な解決策はonbeforeunload
、ユーザーが私のサイトにとどまるか離れるかを決定できるようにするために使用しています。
しかし、これはまた別の厄介な振る舞いを生み出します。ユーザーが私のサイトの他のリンクをクリックすると、onbeforeunload
もトリガーされます。
幸い、window.onbeforeunload=null
自分のサイトのリンクのonclickイベントに配置することで、このケースを解決できました。
残念ながら、「更新/戻る」ボタンをクリックするなどの外部イベントを検出する方法がわかりません。
この困難を解決するにはどうすればよいですか?
すべての提案とコメントは高く評価されています。
javascript - onBeforeUnloadおよび複数のフォーム
ユーザーがページを離れるときに、ページ上で複数のフォームを送信する機能が必要です。この「あなたは救いたいですか?」があります。質問とこれまでの私のコードは次のようなものです:
少しやり過ぎに見えるかもしれませんが、テンプレートエンジンによって自動的に生成され、より多くのフォームに拡張される可能性があります。
ボディタグ:
そして、一方のフォームの興味深い部分(もう一方は同じように見えます:
ここで問題があり
ます。両方のフォームの値を変更してページから移動すると、最初のフォームの質問がポップアップ表示されます。[OK]をクリックすると、フォームは保存されform1.submit()
ますが、新しいonBeforeUnloadイベントがトリガーされ、アイデアのロジック全体が壊れます。
ここでの問題は、ユーザーが移動したときに1回だけ質問するときに、ページ上のすべてのフォームを送信する方法があるかどうかです。
どんな助けでも大歓迎です!
ありがとう。