問題タブ [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.
java - Selenium からの onbeforeunload イベントのテスト
onbeforeunload イベントを使用して、ユーザーが離れる前にプロンプトを表示する Web ページの Selenium テストを作成しようとしています。Selenium は、表示される確認ダイアログを認識しないか、[OK] または [キャンセル] を押す方法を提供していないようです。これを行う方法はありますか?関連する場合は、Java Selenium ドライバーを使用しています。
javascript - OnBeforeUnload ダイアログをオーバーライドして、独自のものに置き換えるにはどうすればよいですか?
ユーザーがページを離れる前に、変更が保存されていないことをユーザーに警告する必要があります (よくある問題です)。
これは機能しますが、自分のテキストをラップする刺激的な標準メッセージを含むデフォルトのダイアログが表示されます。テキストが明確になるように標準メッセージを完全に置き換えるか、(さらに良いことに) jQuery を使用してダイアログ全体をモーダル ダイアログに置き換える必要があります。
これまでのところ、私は失敗しており、答えがあると思われる人を他に見つけていません。それは可能ですか?
私のページの Javascript:
closeIt() 関数:
jQueryとjqModalを使用して、この種のことを試しました(カスタム確認ダイアログを使用):
これも機能しません-beforeunload
イベントにバインドできないようです。
javascript - ブラウザウィンドウを閉じないようにする方法は?
次のコードを試して、ブラウザ ウィンドウを閉じたときにアラートを取得しました。
これは機能しますが、ページに 1 つのハイパーリンクが含まれている場合、そのハイパーリンクをクリックすると同じアラートが発生します。ハイパーリンクをクリックしたときではなく、ブラウザー ウィンドウを閉じたときにのみアラートを表示する必要があります。
javascript - Operaでのonbeforeunload
私はnetadictosがここの質問に投稿したコードを使用しています。私がしたいのは、ユーザーがウィンドウ/タブから離れたり閉じたりしているときに警告を表示することだけです。
netadictosが投稿したコードは、IE7、FF 3.0.5、Safari 3.2.1、およびChromeで正常に機能するようですが、Operav9.63では機能しません。Operaで同じことをする方法を知っている人はいますか?
Thx、Trev
c# - ブラウザが閉じたときにサーバー側の機能を実行する
背景:C#コードビハインドを使用して、非常にシンプルなチャットルームのようなASP.NETページを作成しています。現在のユーザー/チャットメッセージは、AJAX更新パネル内にあるコントロールに表示され、タイマーを使用して、数秒ごとにDBから情報を取得します。
「ログオフ」ボタンを押すのではなく、ユーザーがブラウザを終了するときにユーザーのステータスを「オフライン」に設定する簡単な方法を見つけようとしています。「オフライン」ステータスは現在、IsOnlineでは1文字(y / n)です。
これまで、Javascriptを使用してwindow.onbeforeunloadを調べ、このイベントの関数で非表示のフォーム変数を設定しました->もちろん問題は、コードでこの非表示のフォーム変数をテストする必要があることです-どこかで最終的なサーバー側DBクエリで、ユーザーを効果的にオフラインに設定します。
私はこのありそうな単純な問題を完全に難解にしているかもしれません!そしてもちろん、まったく異なる代替案をいただければ幸いです。
ありがとう
javascript - AJAX 呼び出しを行うときに window.onbeforeunload が呼び出されないようにすることはできますか
AJAX ベースのグリッド コントロールがあります。
window.onbeforeunload イベントにフックして、保存されていないデータがあるかどうかを確認し、保存されている場合は、"Are you sure you want to navigate away... you have unsaved data..." というメッセージを表示します。
これはすべて良いことです。
ただし、AJAX 呼び出しも window.onbeforeunload をトリガーするため、グリッドに保存されていないデータがあり、AJAX 呼び出し (別のグリッドの行を削除するなど) を行うと、ユーザーは「離れて移動してもよろしいですか...あなた保存されていないデータがあります...」というメッセージは良くありません。
AJAX 呼び出しの onbeforeunload イベントを抑制することは可能ですか? または、呼び出しがAJAX 呼び出しであることを検出することは可能ですか? そうしないと、ハッキングする必要があります。
ありがとう
safari - ユーザーが Safari/Chrome でウィンドウを閉じるときに、確認ダイアログを表示できますか?
IE と FF では、イベント ハンドラーを onBeforeUnload にアタッチできます。イベントのプロパティに文字列を渡すことで、ユーザーは "アンロード" を続行するか (ウィンドウを閉じるか閉じるか) を尋ねるダイアログが表示されます。離れて移動します)。
Safari と Chrome は onBeforeUnload をサポートしておらず、onUnload では遅すぎるようです。Safari/Chrome で同じ機能を複製する方法はありますか?
注: ユーザーを人質にしようとしているわけではありません。私はこれがしつこくてクールでないことを知っています。実際、私のサイトは、ユーザーが自由に移動できるように、そしてユーザーが戻ってきたときにすべてが元の場所にあるように、あらゆる努力を払っています。しかし、私は IFrame 内で他のサイトをホストしており、時にはこれらのサイトが私を排除してブラウザーを乗っ取ろうとすることがあります。
ありがとう!
javascript - JavaScript を使用して Web ページから移動できないようにする
JavaScript を使用して Web ページが離れないようにするにはどうすればよいですか?
javascript - onBeforeUnload のプロンプト後にユーザーが滞在したかどうかを検出する
私が取り組んでいる Web アプリでは、onBeforeUnload をキャプチャして、ユーザーが本当に終了したいかどうかを尋ねています。
今、もし彼が残ることに決めたら、やりたいことがたくさんあります。私が理解しようとしているのは、彼が実際に留まることを選んだということです。
もちろん、"x" 秒間 SetTimeout を宣言することもできます。それが発生した場合は、ユーザーがまだそこにいることを意味します (アンロードされていないため)。問題は、ユーザーが滞在するかどうかを決定するのにいつでも時間がかかることです...
ダイアログが表示されている間は SetTimeout 呼び出しが発生しないことを最初に期待していたので、タイムアウトを短時間設定して、ユーザーが留まることを選択した場合にのみ発生するようにしました。ただし、ダイアログが表示されている間にタイムアウトが発生するため、機能しません。
私が試した別のアイデアは、ウィンドウ/ドキュメントで mouseMoves をキャプチャすることです。ダイアログが表示されている間、私の場合に実際に適用される1つの奇妙な例外を除いて、mouseMovesは実際には起動しないため、それも機能しません。
誰でもこれを行う他の方法を考えることができますか?
ありがとう!
(ご参考までに、mouseMove のキャプチャが機能しない理由は、別のドメインのサイトを含む IFrame がページにあるためです。ページのアンロード時にフォーカスが IFrame 内にある場合、ダイアログが表示されると、マウスが IFrame の内側から外側に移動すると (少なくとも Firefox では)、MouseMove イベントが 1 回発生します。この方法は使えません)。
javascript - フィールド値が変更された場合にのみ OnBeforeUnload を有効にする
私が達成しようとしているのは、ユーザーがページを閉じようとしたり、最初に保存せずにページから移動しようとした場合に、保存されていない変更をユーザーに警告することです。
ダイアログをポップアップさせることができましOnBeforeUnload()
た...しかし、ユーザーがフィールド値を変更していない場合は、ダイアログをまったく表示したくありません。このために、デフォルト値のfalseで始まり、フィールドが編集されるとtrueに変わる is_modifiedという隠し入力フィールドを使用しています。
変更イベントをこの is_modified フィールドにバインドして、値の変更を検出しようとしました...そして、OnBeforeUnload を有効にしました。
しかし、私が理解していることから、change()
イベントはこれらの 3 つのステップの後にのみ機能するということです。フィールドがフォーカスを受け取り、値が変更され、フィールドがフォーカスを失います。非表示の入力フィールドの場合、このフォーカスの受け渡し部分がどのように機能するのかわかりません! したがって、onbeforeunload 関数がアクティブになることはありません。
is_modified でトリガーを維持する方法を提案できる人はいますか?
ありがとう。