1

フォームの送信アクションを停止せずに、フォームイベント「onsubmit」内でJSを使用して画像をロードしたい。

私がすることは次のとおりです。

var img = new Image();
img.onload = function(){
    myfunction();
};
img.src = URL_FOR_PHP_SCRIPT_TO_DO_SOME_LOGIC;
window_sleep(750); //Custom method to hang the CPU for 750ms until the request to call the image is called.

このロジックは私にとって必須です。フォームの送信を延期するために settimeout を使用したくないということです。このコードは別のドメインの JS ファイルにあるため、この方法で URL_FOR_PHP_SCRIPT_TO_DO_SOME_LOGIC を呼び出す必要があります。このロジックはすべてのブラウザーで正常に機能し、画像を呼び出す要求が送信されますが、これはまさに私が必要とするものですが、サファリでは画像要求を呼び出さず、フォームを直接投稿し始めます。ブラウザがサファリの場合、フォームを含むページに「onunload」イベントを追加しようとしましたが、これも役に立たず、フォームは画像をロードするリクエストの送信を開始せずにデータを直接送信しました。

4

1 に答える 1

0

while ループで Safari と Firefox4+ をハングアップすることはできません。これは、スリープ機能で行っていると推測しています。

ブラウザをハングできる唯一の実際の方法は、画像リクエストの代わりに同期 Ajax 呼び出しを行うことです。同期呼び出しの悪い点は、戻ってくるまでブラウザーをロックすることです。接続が遅いと、フォームが送信されるまでに時間がかかることがあります。

他のオプションは、フォームをサーバーに送信してから、他のサーバーに転送することです。

于 2011-08-25T13:55:17.197 に答える