1

私は持っています

<span class="cssButton"><a href="javascript:void(0);" class="buttonBlue" onclick="swfu.startUpload();"> <img src="http://uber-upload.com/img/icons/up_16.png" alt=""/> Uber-Upload! </a></span>

そして、そのボタンを押すと、ページを離れようとすると「このページを離れてもよろしいですか」のいずれかがポップアップするようにする変数も設定するようにしたいと思います。アップロードが行われている間に人々が誤って離れることを防ぐためのアラート。

アップロードの終了後に変数の設定を解除することを心配する必要はありません。追加します。フレームワークを作成するには、スマートコーダーの1人が必要です。

ありがとう!

4

3 に答える 3

1
function warnUser()
{
   if(dataIsDirty)
   {
      return "You have made changes. They will be lost if you continue.";
   }
   else
   {
      // Reset the flag to its default value.
      dataIsDirty = false;
   }
}

function isDirty()
{
   dataIsDirty = true;
}

function isClean()
{
    dataIsDirty = false;
}

その後、イベントと同じように使用しますonbeforeunload

window.onbeforeunload = warnUser;
dataIsDirty = false; //Or true, depending on if you want it to show up even if they dont' make changes)

次に、それを使用するには、トリガーしたくないもの(たとえば保存)に「isClean」関数を使用するか、トリガーしたいイベントに「isDirty」をアタッチしてから終了します(たとえば、フォームフィールドの編集)。

于 2009-08-20T20:26:09.897 に答える
1

この宣言をページに追加します。

var upcount = 0;

onclickを次のように変更します。

onclick="++upcount; swfu.startUpload();"

swfuアップロードが完了したときに、が何らかのイベントを提供する場合は、次のように設定します。

--upcount;

そして、このハンドラーを追加します。

window.onbeforeunload = function() {
    if (upcount > 0) {
        return "The upload is still in progress, leaving the page will cancel it.";
    }
}

ブラウザがonbeforeunloadを尊重する場合、それは機能します。そしてそれらのほとんどは、ほとんどの場合そうします。彼らがいないところでは、まあ、あなたは試しました。カウンターを使用すると、複数のアップロードが可能になることに注意してください。

属性を使用するのではなく、イベントをアタッチするために、attachEvent(IE)またはaddEventListener(標準)(または、違いを均等にするPrototypeやjQueryなどのライブラリ)を検討することもできます。属性(別名DOM0ハンドラー)の使用はかなり古風で少し制限があります(要素ごとのイベントごとに1つのハンドラーのみ)。しかし、それでも機能します。

于 2009-08-20T20:35:46.803 に答える
0

onbeforeunloadに依存することは、せいぜい大ざっぱです。スパマーがこの動作を悪用したのと同じように、人々がこれを実行する機能が基本的に削除されたことを示唆しているためです。

ボタンなどをアクティブにしてクローズイベントが発生した場合にのみ、onbeforeunloadに応答できるようになりました。

于 2009-08-20T20:24:04.283 に答える