問題タブ [onunload]
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.
jquery - Chromeのwindow.onunloadからajax同期呼び出しを行うには?
window.onunload で jquery .ajax 同期呼び出しを実行しようとしています。FF と IE は動作しますが、Chrome では動作しません。いくつかのテストを行ったところ、Chrome はウィンドウを終了し、応答を待たないようです。
これが私のコードです:
window.onbeforeunload を使用して警告メッセージを表示し、ユーザーがページを離れたときに window.unload をトリガーしていることに注意してください。
javascript - onunload/onbeforeunloadをサポートしていないブラウザの検出
すべてのブラウザの中で、Operaだけがonunload/onbeforeunloadイベントをサポートしていないようです。(Opera、15年になります!)この問題の解決策は何度も取り上げられています。たとえば、onbeforeunloadサポートの検出
残念ながら、Opera 11.51の時点では("onbeforeunload" in window) == true
、ですが、実際のonbeforeunloadイベントは実行されません。
ユーザーがページを離れるときに、私のWebアプリケーションはサーバーにデータを送信する必要があります。私はこれに同期ajaxリクエストを使用しています。Operaの問題をカバーするために、ページのどこかにある「保存」ボタンを使用する必要があるようです。ただし、このボタンで、ブラウザがajaxを介して自動保存できるユーザーを混乱させたくないので、このボタンをOperaにのみ表示したいと思います。
私の唯一の選択肢はブラウザ検出ですか?問題は、Operaにはとにかく他のブラウザに変装するオプションがあるということです。
javascript - 編集中のドキュメントのロックとロック解除を実装する
状況は次のとおりです。
Web ベースのチケット アプリケーション、複数のユーザーがいます。
発生する可能性のある問題の 1 つ (置き換えようとしている古いバージョンでも発生します) は、user1 がチケットを開いて編集し、保存することです。しかし、彼がそれを編集している間に、user2 もチェックマークを開いて保存しました。user2 が行った変更は、user1 によって失われるか上書きされます。
これを防ぐために、ロック メカニズムを実装しました。それはかなり単純です。
- チケットを開くと、PHP スクリプトは既存のロックをチェックします。
- 見つからない場合は、ドキュメントをロックして開きます。
- JS では
setTimeout()
、XmlHttpRequest を呼び出して 10 分後にチケットのロックを解除します (問題なく動作します)。 unload
ウィンドウ/タブを閉じる/離れるときにチケットのロックを解除するイベントも設定しました
問題はステップ 4 にあります:unload
イベント (& it's friend ) は、これを確実beforeunload
に実装するには十分に機能しません(この機能が重大な意味を持つためには、信頼できる必要があります)。多くのブラウザーは常にそれを起動するとは限りません。起動したいとき(戻るボタンを押す、F5を押す、タブを閉じるなど。これはブラウザによって異なります)
私が思いつくことができる唯一の代替手段は、ページがまだ開いていることを伝えるために php スクリプトを呼び出してsetTimeout()
使用することです。XmlHttpRequest()
この「ハートビート」モニターが失敗した場合、ユーザーがチケットから離れ、ドキュメントのロックを解除したと見なされます。
これは私には恐ろしく非効率的であり、数人のユーザーでもすぐにサーバーへの多くのリクエストにつながります.
これを処理する方法について、より良いアイデアを持っている人はいますか?
IE8+ およびその他の最新のブラウザー (理想的には、Firefox、Webkit、Opera) で動作する必要があります。私は IE6/IE7 を気にしません。私たちの組織はそれらを使用していません)。
javascript - IE の javascript: href リンクによって window.onbeforeunload がトリガーされないようにするにはどうすればよいですか?
ユーザーがページを離れるとフォームデータが失われることをユーザーに警告するフォームのフェイルセーフを構築しています (gmail と同様)。
上記の関数は Firefox でうまく機能しますが、IE では、他のページではなく javascript へのリンクであっても、任意の href リンクによってトリガーされます。
例えば....
ボタンをクリックするだけでページを離れているとユーザーに思わせたくないので、これを回避する方法があるかどうか疑問に思っています。さまざまなリンクが組み込まれており、多数あるため、すべてのリンクを書き直すオプションはありません。
何か案は?
google-chrome - Chrome で onunload Ajax 関数が機能しない
ユーザーがページを離れたときに更新されたデータをデータベースに保存する必要があるアプリを開発しています。これを行うために、ページの「onunload」イベントに Ajax 関数をバインドしました。これは、Chrome を除くすべてのブラウザーで機能します。「onbeforeunload」も試しましたが、結果は同じです。
Chromeがセキュリティに熱心すぎることに関係しているのではないかと思います。イベントをテストしようとすると、関数が呼び出されているかどうかを確認するために入力したアラートがブロックされ、「Usafe JavaScript が URL のフレームにアクセスしようとしています... ドメイン、プロトコル、およびポートが一致する必要があります」というエラーが表示されることがわかりました。ポストバックは、同じドメイン内のページに送信されます。
誰かがこれに光を当てたり、回避策を提供したりできますか?
javascript - window.onunload が Chrome ブラウザで正しく動作しない。誰でも私を助けることができますか?
私はこのコードを書きました
このコードは IE と Firefox で正常に動作します。しかし、このコードは Chrome では機能しません。ステートメントalert("Unload Window");
とステートメントの両方が機能しMyMethod();
ていません。
javascript - 標準化された JavaScript (「onbeforeunload」ではない) でページのアンロードを停止するにはどうすればよいですか?
再リンクする前に、JS でページのアンロード (移動) を停止するにはどうすればよいですか?などの質問を読みました。、ただし、HTML4 以下を扱います。HTML5 の event 属性を利用した回答が欲しいですonunload
。また、これを可能な限り純粋なものにしたいと考えています。つまり、jQuery や Flash などの外部ライブラリやプラグインを使用せず、標準化されたコードのみを使用します ( PURE HTML、CSS、および JavaScript、プラットフォームに依存するものは何もありません)。
を使用するように指示する前に、それはNON-STANDARDであるため、上記の私の基準に適合しないonbeforeunload
ことに注意してください。すべてのブラウザ、特に IE が実装する前に作成されたブラウザでは動作しません。
質問
私のサイトにはいくつかの音楽プレーヤーがあり、ユーザーがページから移動しようとしたときにいずれかのプレーヤーが再生されている場合は、ダイアログ ボックスをポップアップ表示して、ユーザーがこれを意図していること、およびこれにより再生が停止することを理解していることを確認したいと考えています。 「はい」または「OK」を選択するとナビゲーションに進みますが、「いいえ」または「キャンセル」をクリックすると、同じページにとどまり、オーディオを途切れることなく再生し続けます。JavaScript を使用して、使用せずにページのアンロードをキャンセルするにはどうすればよいONBEFOREUNLOAD
ですか?
ここまでのコード
これまでのところ、次のコードがありますが、アンロードを停止する方法がわかりません:
javascript - onunload関数でチェックできるようにJavascript変数を設定します
シリアル番号を入力できるように、入荷する在庫部品を表示するページがあります。データベースを更新し、シリアル番号が入力された行IDを非表示にするJQueryAjax関数があります。ここでは問題ありません。
アンロード時にもメールを送信しますが、問題ありません。
私がやりたいのは、ajax関数の後に変数を1に設定して、株式に修正があったことを確認し、onload
関数でその変数のステータスを確認して、メールを送信します。
私のセットのシリアル番号は:
そして私onunload
は単純です:
onunload - window.close を使用してウィンドウを閉じることと、他の手段 (クロスをクリックするなど) を区別する
window.close()を使用してウィンドウが閉じられたか、手動で (十字をクリックするか、リフレッシュするか、Alt + F4 など) 閉じられたかを調べたいと思います。そのために、unload イベントが呼び出されているかどうかを確認できます。なぜなら、Chrome を調べたところ、window.close()が実行されているときに unload イベントが呼び出されていないからです。
これが指定された動作なのか、ブラウザによって異なるのか知りたかった
javascript - ユーザーフレンドリーではない onbeforeunload / onunload
onbeforeunload、onunload、および適切なタイミングで適切なメッセージを生成するのに苦労しています。どんなアイデアでも大歓迎です。これは状況です:
- onbeforeunload を使用すると、ユーザーは移動するかどうかを選択するメッセージを受け取りますが、それをオフにすることはできません。メッセージは標準であり、イベント ハンドラーの内容に関係なく表示されます。
- onunload を使用すると、発生する「さようなら」メッセージを制御できますが、ユーザーに考えを変える機会を提供することはできません。
たとえば、保存するデータがある場合。onbeforeunload を使用すると、ユーザーのデータの状態に関係なく、移動するかどうかを尋ねるメッセージがポップアップ表示されます。onunload を使用すると、ユーザーに尋ねる前にメッセージを選択し、保存されていないデータがあるかどうかを確認できます。これにより、ユーザーが保存した場合は問題が解決されますが、ユーザーはページにとどまることを選択できません。
私はそこに何か欠けていますか?アプリケーションのステータスを確認し、メッセージを送信し、ユーザーが離れる前にアクションを実行するように提案するという、私が望む単純な動作を得ることができないようです。または、この動作を取得するためにいずれかまたは両方のイベントを使用していますか?