Frage

Ich habe

<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>

Und ich will es machen, so dass, wenn Sie diese Taste drücken, ist es auch eine Variable setzt, die es macht, so dass, wenn Sie versuchen, die Seite zu verlassen, ist es einer von denen Pop-up wird „Bist Du sicher Sie wollen verlassen diese Seite“warnt Menschen zu verhindern, dass versehentlich verlassen, während es ein Upload ist los.

Keine Sorge über die Variable nach dem Upload beendet unsetting, ich hinzufügen, dass würde, ich brauche nur eine von Ihnen Smart-Programmierer mir macht einen Rahmen.

Danke!

War es hilfreich?

Lösung

Fügen Sie diese Erklärung auf der Seite:

var upcount = 0;

Ändern Sie Ihre Onclick an:

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

Wenn die swfu gibt Ihnen eine Art von Ereignis, wenn es das Hochladen fertig ist, setzen Sie dieses auf sie:

--upcount;

Und fügen Sie diese Prozedur:

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

Wo Browser die onbeforeunload respektieren, das wird funktionieren. Und die meisten von ihnen tun, die meiste Zeit. Wo sie es nicht tun, na ja, Sie versucht. Beachten Sie, dass durch einen Zähler verwenden, Sie ermöglichen für mehrere Uploads.

Sie sollten erwägen attachEvent (IE) oder addEventListener (Standard) (oder eine Bibliothek wie Prototype oder jQuery, die die Unterschiede für Sie ausgleicht) für Ihre Veranstaltungen Anbringen anstatt mithilfe von Attributen. Attribute verwenden (auch bekannt als Dom0-Handler) ist ziemlich altmodisch und ein wenig (nur ein Handler pro Ereignis pro Element) zu begrenzen. Aber es ist immer noch funktionieren.

Andere Tipps

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;
}

Dann Sie es verwenden, wie auf dem onbeforeunload Ereignisse.

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

Dann, es zu benutzen, verwenden Sie einfach die ‚isClean‘ Funktion alles, was Sie wollen es nicht auslösen (Speichern, zum Beispiel), oder Sie können anhängen ‚isDirty‘ auf jeden Fall wollen Sie es auslösen, bevor sie verlassen (sagen wir, Bearbeiten eines Formularfeld).

auf onbeforeunload Unter Berufung ist bestenfalls lückenhaft. Da Spammer das Verhalten in der gleichen Art und Weise missbraucht haben werden Sie die Möglichkeit, was darauf hindeutet, für die Menschen, dies zu tun im Grunde entfernt wurde.

Sie können nun reagieren nur, wenn das Ereignis close einen Knopf von der Aktivierung oder solche abgefeuert Onbeforeunload wurde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top