問題タブ [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.
javascript - ダイアログを受け入れた場合、OnBeforeUnload はコードを実行できますか?
ユーザーが自分のアプリをどれだけ簡単に離れられるかを制御したい。今、私はそれを完全に行うことができないことを知っています。それがcronジョブの目的です。しかし、できるだけ多くのケースをキャッチしたいと思います。
onBeforeUnload
ダイアログ ボックスを表示して、終了することを警告し、代わりに [終了] ボタンをクリックするように求めることができると思いました。
しかし、その後、 が呼び出されたときに同期 AJAX (heh) 呼び出しを実行できる可能性があることがわかりましたonBeforeUnload
。私が理解しているように、同期であることの利点は、ブラウザが続行する前に終了するのを待つことです。そうすれば、サーバーがウィンドウを閉じるときにログオフしていることをサーバーに伝えることができます。in でonBeforeUnload
あり notであるためonUnload
、すべてのデータがまだ残っており、呼び出しが送信されます。
私の質問は、これらを組み合わせることは可能ですか? 離職を警告するポップアップを表示して、引き続き離職を希望する場合は、実際に離職する旨のメッセージを送信してください。
私の理解では、これはできません。できます:
- メッセージのみを送信する
- ダイアログのみを表示する
- メッセージを送信してダイアログを表示する
...しかし、彼らがダイアログを受け入れた場合、条件付きでメッセージを送信することはできませんよね? 私の理解では、彼らが「OK, I want to leave」をクリックするとすぐに発火onUnload
し、その時点では手遅れです。上記の #3 は役に立ちません。ユーザーがログオフしているというメッセージを送信してから、ダイアログをキャンセルしてページにとどまらせたくないからです。
私のケーキを持って食べてもいいですか?彼らが去りたいかどうか尋ねて、そうであれば、メッセージを送ることはできますか?
iframe - iframe の onbeforeunload イベントが Google Chrome でトリガーされず、IE、Firefox で動作する
iframe 内に unbeforeunload イベントを設定した場合、たとえば iframe 内のリンクをクリックしても、これはトリガーされません。IE と Firefox で動作します (Opera ではありませんが、Opera は一般的に onbeforeunload をサポートしていません)。
不思議に思うのですが、私は何か間違ったことをしていますか?この動作は可能ではないでしょうか? それとも Google Chrome/webkit のバグですか? 回避策はありますか?
コード例:
test.html:
test2.html:
javascript - window.onbeforeunload が iPad で動作しない?
onbeforeunload
イベントが iPad でサポートされているかどうか、および/またはそれを使用する別の方法があるかどうかを知っている人はいますか?
私はほとんどすべてを試しましonbeforeunload
たが、iPad (Safari ブラウザー) ではイベントがトリガーされないようです。
具体的には、これは私が試したことです:
window.onbeforeunload = function(event) { event.returnValue = 'test'; }
window.onbeforeunload = function(event) { return 'test'; }
- (上記の両方を一緒に)
window.onbeforeunload = function(event) { alert('test')'; }
- (上記のすべての関数が内部にあります
<body onbeforeunload="...">
これらはすべて、PC の FF と Safari では機能しますが、iPad では機能しません。
また、ページを読み込んだ直後に次のことを行いました。
それぞれの結果は次のとおりです。
true
object
null
したがって、ブラウザにはプロパティがありますが、何らかの理由で起動されません。
ページから移動しようとする方法は、戻るボタンと進むボタンをクリックすること、トップバーで Google 検索を行うこと、アドレスバーの場所を変更すること、ブックマークをクリックすることです。
何が起こっているのか誰にもわかりませんか?ご意見をいただければ幸いです。
ありがとう
javascript - ユーザーがブラウザを終了したときにカスタム ダイアログを表示しますか?
はい、私はこれがひどい UI であり、アクセシビリティが悪いことを認識していますが、契約作業のためにオプションを探すことを余儀なくされています (最初は同意せず、行き詰まっています)。
イベントハンドラーを次のように割り当てることができることを知っていますonbeforeunload
:
これにより、カスタマイズできない OS/ブラウザーによって生成されたダイアログが表示されます。リクエストをキャンセルするか、続行するかを尋ねられます。
これまでのところ、カスタム性を表示できる唯一の方法はwindow.open
、そのイベント ハンドラーに a を挿入することです。
これは、最新のブラウザによって「ポップアップ」としてブロックされる可能性が最も高いです。ダイアログでまったく新しいページを表示する必要がありますが、これが要求を満たす唯一の方法のようです。
これはほとんど私が持っている唯一のオプションですか?クライアントにこれを行うことは推奨されていないと強制的に伝える以外に?
他の唯一のオプションは、ユーザーが「リクエストのキャンセル」をクリックしてからダイアログを挿入することに依存することです。
私がすでに見た質問:
javascript - onBeforeUnload - ajax なしでサーバー側関数を呼び出す方法
私がしたいこと: クライアントで「OnBeforeUnload」イベントを検出すると、セッションを破棄します。100% の確率で発火しないことはわかっています (90% の精度で問題なく動作します)。
ここで ajax を使用する方法を見ましたが、このシステムは ajax では機能しません。まったく使用できません。
私はそれを行う方法を探しています
javascript - ページを離れる前にGETリクエストを実行する
以下のようにGETリクエストを行った場合
GET リクエストが完了する前にページが破棄され、
宛先サーバーは引き続きリクエストを処理しますか? それとも何とか消えますか?
発射時にサーバーデータを送信したいのbeforeunload
ですが、ユーザーから無駄なミリ秒を盗むことはありません。
誰かが私を助けてくれればとても助かります。
jquery - ほぼ onbeforeunload のように、条件が満たされた場合にアラートを表示します
5 つのステップに分割されたフォームがあります。現在、手順 2 ~ 4 で更新/終了/終了などを行うと、window.onbeforeunload を介してメッセージが返されますが、問題はありません。
チェックボックス「A」がチェックされ、チェックボックス「B」がチェックされていない場合、ステップ0(最初のステップ)に同じまたは同様のタイプの動作を追加する必要があります。これは機能しますが、別の .onbeforeunload 関数と組み合わせることはできません
これら2つを連鎖させるにはどうすればよいですか?if、else ステートメントを使用しても機能しないようです。
javascript - jQuerys unload(); のコールバックでウィンドウが閉じているかどうかを調べる方法 方法
どのタイプのイベントがトリガーされたかを把握することは可能$(window).unload();
ですか? もう少し具体的に言うと、ユーザーがウィンドウ (ポップアップ) を閉じたときのイベントにのみ関心があります。ユーザーが現在のページから離れているときではありません。
のコールバックに渡されたイベント パラメータを調べましたがunload();
、そのオブジェクトには何もないようです。
誰もこれに対する解決策を知っていますか?
コード:
javascript - Web ページを離れる前にユーザーにフォームへの入力を求める - Javascript 経由
Web ページに Web フォームがあります。ユーザーがページを離れる前に、「はい」または「いいえ」ボタンでフォームを完了したかどうかをユーザーに尋ねる JavaScript ポップアップ メッセージが必要です。ユーザーが「はい」をクリックすると、目的のページに移動します。ただし、ユーザーが「いいえ」をクリックすると、ユーザーはこのページに残ります。
私はJavascriptにあまり詳しくないので、どんなガイダンスでも大歓迎です。以下のようなものを使用すると思われます。
前もって感謝します。
スプリット P.
javascript - アンロード前のウィンドウに 2 つのダイアログが表示される
このjQueryコードがあります。
ウィンドウを閉じると確認要求が表示され、[キャンセル] をクリックすると、2 回目の確認が表示されます。
「このページから移動してもよろしいですか?」
"間違い"
「続行するには [OK] を、現在のページにとどまるには [キャンセル] を押してください。」
2 つ目のダイアログが表示されるのはなぜですか?それを削除する方法はありますか?
編集
コードを次のように変更しました。
しかし、確認メッセージは表示されません。そこにアラートを配置してアラートを表示できるため、イベントが発生しています。
編集 2
コードをこれに変更しました。
それは機能しますが、メッセージの上下に他のテキストがあります。
「このページから移動してもよろしいですか?」
「ブログエントリが保存されていません。」
「続行するには [OK] を、現在のページにとどまるには [キャンセル] を押してください。」