問題タブ [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.
javascript - アンロード時にiPhone/iTouchが起動しない(新しい画像)リクエスト
やあみんな、誰かが私を助けてくれることを願っています。
私はクリックを記録するための小さなアプリケーションを作成しています。これは、iPhone/iTouchに到達するまでうまくいきます。私はiTouchでテストしてきましたが、iPhoneでも同じことが起こると推測していることを指摘したいと思います。
私が今持っているのはこれに似たものです、
このコードは、Safariを含むすべてのデスクトップブラウザで機能しますが、iTouch/iPhoneでは機能しません。onunloadプラクティスの外でsave()関数を実行すると、データは問題なく送信されます。アラートにより、onunloadが機能することを知っています。しかし、私はこのインスタンスでは機能していないが、他の場所では機能している画像オブジェクトに完全に困惑しています。私はネット上でよく調べましたが、解決策は見つかりませんでした。
おそらくここの誰かが私にこれが起こっている理由の解決策や説明を与えることができますか?私は非常に感謝されます。お時間をいただきありがとうございます。
javascript - 手動更新でページを取得した後に発生する onunload ハンドラーでの jQuery ajax 呼び出し。onunload が最初に発生することを保証するにはどうすればよいですか?
ページのアンロード時に、ユーザーの作品の下書きを削除するリクエストを発行している状況があります。これは、ユーザーがページを更新することを選択するまで問題なく機能します。その後、Chrome のネットワーク タブを調べると、Ajax リクエストが実際に起動される前に Chrome が新しいページを読み込んでいることが示されます。その結果、ページの読み込みによって新しいドラフトが作成され、ajax 呼び出しによってすぐに削除されます。基本的に私がやっていることは次のとおりです。
新しいページのリクエストが送信される前に onunload ハンドラを強制的に完了する方法はありますか?
テスト済みブラウザ: (Chrome 9、FF 3.6) Ubuntu 10.04 Lucid
ruby-on-rails-3 - ユーザーが移動して変更を失うのを防ぐRails 3フォームヘルパー?
ユーザーが現在のページのフォームに何かを入力した場合に、ユーザーが現在のページを離れるのを防ぐ Rails ヘルパーまたは Rails の方法はありますか?
フォームに未保存の変更がある場合にヘッダー リンクをクリックすると、データが失われないようにしようとしています。
javascript - window.onbeforeunload確認ダイアログのキャプチャ結果
以下の Stack Overflow のような確認ダイアログの結果をキャプチャする方法はありwindow.onbeforeunload
ますか (これは、質問を投稿せずに「質問する」ページを離れたときに発生します)。
Chrome ではこのように表示されます。他のブラウザでは少し異なると思いますが、常に何らかの形の yes/no ボタンが表示されます。
おそらく、イベントがトリガーされた後も問題のあるページにまだいる場合、彼らはとどまることを選択し、おそらくjsのシーケンスを見ることでこれを理解できます. ただし、「このページを離れる」をクリックしたかどうかを判断する方法を知りたいですか?
私はこれを以下のように実装しました:
サイト内でjQueryを使用していることに注意してください。
私は本質的にGmailのような下書きの実装を実装しようとしています.ユーザーがフォームを保存せずに変更を加えたページを離れると、同様のダイアログが表示されます. 彼らが変更を破棄してページを離れることを選択した場合、データベースからいくつかの一時レコードをクリーンアップする必要があります (私は AJAX 呼び出しを考えているか、delete
フラグを付けてフォームを送信するだけです)。
私の質問は以下にも関連しています:
手動更新でページを取得した後に起動する onunload ハンドラでの jQuery AJAX 呼び出し。onunload が最初に発生することを保証するにはどうすればよいですか?
jquery - ウィンドウがアンロードされる前にjquery ajax関数を呼び出す決定的な方法は何ですか?
ウィンドウがアンロードされる前に、jquery ajax() 関数を呼び出す必要があります。私の場合、それは POST であり、返される結果は気にしません。データベースを更新したいだけです。
したがって、答えは関数を unload イベントにバインドすることです。つまり、jquery unload() 関数を使用し、その関数が ajax 呼び出しを行います。さらに、同期パラメーターを呼び出しに追加することになっていることも知っています。つまり、async: false を jquery ajax() 呼び出しに追加します。
しかし、私はこれをすべて試しましたが、IE8 では動作しません! 何度もテストしましたが、IE8 では動作しません。Firefox と Chrome で正常に動作します。
さらに奇妙なことに、IE8 アプリケーション全体を閉じた後、呼び出しが成功したように見えます。キャッシュされていますか?
したがって、他の人は、jquery bind() を使用してアンロードする前に ajax をバインドすることを提案しています。ただし、これがすべてのブラウザーで機能するかどうかについては、さまざまな回答があるようです。
これは「ハック」方法のように見えるため、まだ beforeunload を試していません。ただし、機能する場合は、機能する限り気にしません。
javascript - Window.openは、IE9のonunloadイベントハンドラーで呼び出されたときに機能しなくなりました
私のWebアプリケーションでは、カスタムURLプロトコルを使用してデスクトップアプリケーションを起動します。例:「fakeproto://」はデスクトップに「fakeproto.exe」を起動します。私が何について話しているのかわからない場合は、これを読んでください:URLプロトコルへのアプリケーションの登録
ただし、起動する前に、ユーザーのPCに「fakeproto.exe」がインストールされていることを確認する方法が必要でした。ちょっとしたハックですが、すべての主要なブラウザで動作するようになりました。IEは最も多くの問題を提示し、独自の実装を行いました。
Javascriptでは、最初にカスタムURLプロトコルをロードしようとします。
この前に、実際に次のonunloadイベントハンドラーを定義しました。
したがって、デスクトップがカスタムURLプロトコルを認識しなかった場合、IEは単に現在のページを離れて、「Webページを表示できません」に移動します。このイベントでは、onunloadイベントハンドラーが起動し、代わりにhelp.phpを開きます。
これはIE7とIE8でうまく機能しますが、IE9にアップグレードすると、これは機能しなくなりますか?help.phpの代わりに「ウェブページを表示できません」に移動します。
デバッガーを使用すると、onunloadイベントハンドラーが起動し、コードが正しく実行されますが、何らかの理由でwindow.open呼び出しが機能していません。ポップアップブロッカーも無効にして、そうでないことを確認しました。運がない。
誰かアイデアはありますか?IE9がwindow.openでより厳密になっていると聞いた人はいますか?元の問題に対する代替の解決策を知っている人はいますか?
ところで、help.phpを新しいウィンドウで開くと、動作させることができます。
ただし、これは、ポップアップブロッカーが無効になっている場合にのみ機能します。このソリューションの使用は避けたいと思います。
javascript - JavaScriptでリロードとクローズを区別する方法は?
そのため、ユーザーがブラウザのタブをリロードしたり閉じたりできる状況があります。どちらの状況でも、スクリプトに異なるアクションを実行させたいと考えています。onUnload に続いて onLoad イベントを生成するリロードと、ユーザーがタブを閉じる (onUnload イベントを生成する) を区別する方法はありますか?
javascript - JavaScript: アンロードを中止して JavaScript 呼び出しを行う方法は?
私は evere onunload イベントで、1 秒でいくつかの div を切り替える jQuery 呼び出しを作成したいと思います。そして、アンロードを行いたいと思います。
アンロードを 1 秒間タイムアウトして、この時間内に jQuery 呼び出しを行うにはどうすればよいですか?
手伝ってくれてありがとう!
フロー
編集:
わかりました、最もまずまずの解決策は、通常のリンクの代わりに、すべてのリンクが次のような JavaScript 呼び出しを取得することです。
そして関数リンク:
しかし、助けてくれてありがとう;)
ajax - Firefox 4 で unload イベントを起動できない
unload イベントで ajax-callsを約 1 年間実行しました。FF と IE では一般的に機能しますが、100% ではなく、いつ失敗したかはわかりません。bodytag に
onunload="...."
と書き込んでイベントを登録します。アンロード イベントは、アンロードしたばかりのページの div タグにも書き込もうとしていたため、FF4 でエラー メッセージが表示されました。ターゲット div の id が「ダミー」の場合、ajax ルーチンが何も書き込まないようにすることでこれを修正しました。私は AJAX の専門家ではありませんが、次のコードは機能しました
: /ajax_ex.php (リンクはテキストページです)
(次の引数で ajaxfunction2 を呼び出します: ファイル名、PHP の queryString、更新中にターゲット div に表示する文字列、ターゲット div の名前)
FF エラー コンソールにエラー メッセージは表示されず、IE9 は動作します。FFでも動作させる方法はありますか?? FF4を始めたばかりですが、FF3に比べると上手くいかない印象です。
ありがとう。
(私は旅行中であり、すぐに返信する可能性はありませんが、提案を本当に感謝しており、やがて返信します)
編集:これを追加したほうがよい: アンロード時に行うAJAX呼び出しは、一部のデータ(ユーザーがページに滞在した時間)のみをPHP-MySQLサーバーに送信します
jquery - jquery ajaxとgoogle chromeの問題
次のように、ページを離れるときにユーザーに確認メッセージを表示するために jQuery を使用しています。
一方で
ページを更新するときに Google Chrome でコードを実行すると問題が発生します。このような問題を数多く見てきましたが、役立つ答えはありません。
手動更新でページを取得した後に発生する onunload ハンドラーでの jQuery ajax 呼び出し。onunload が最初に発生することを保証するにはどうすればよいですか?
Chrome での window.onbeforeunload ajax リクエスト
ありがとう、サラ