Sweet Alert zur Bestätigung bei Öffnen eines Links
bearbeitet von Rolf BHallo Raffi,
ich gehe mal davon aus, dass Sweet Alert und Konsorten das, was sie sein wollen, eben NICHT sind, nämlich modal. Ein echter modaler Dialog hält die JavaScript-Verarbeitung an und setzt die Ausführung erst fort, wenn der Anwender reagiert hat. Sowas kann man in einem Event-Handler einsetzen und bei "OK" weitermachen, so dass erst dann der Download beginnt.
Die pseudomodalen Dialoge wie Sweet Alert blockieren lediglich den Rest der Webseite, sind aus Sicht der DOM Events aber nicht modal. D.h. der Klick auf den Link läuft weiter und der Download geht los, während der Sweet Alert noch rumsteht. Oder der Sweet Alert kommt gar nicht, weil der Browser ja gerade einen Link woandershin verarbeitet, das weiß ich grad nicht. Ich würde aber das erstere mutmaßen.
D.h. wenn Du etwas wie Sweet Alert verwendest, müsstest Du das über einen Button auslösen, der zunächst einmal den Alert anzeigt, und erst nach Bestätigung musst Du via JavaScript den Downloadlink aktivieren. Was aber wieder Stress gibt, weil dem Browser ein Download aus JavaScript heraus sehr unsympathisch ist.
Heißt: Der erste Klick wird mit JS abgefangen und das Event gecancelled. Im JS öffnest Du einen pseudomodalen Bestätigungsdialog, und in dem befindet sich ein Cancel-Button und ein Duplikat des Downloadlinks, der den Dialog ausgelöst hat. Den klickt der User aktiv an und der Download wird ausgelöst. Du registrierst Dich auf das click Event dieses Links, um damit den Bestätigungsdialog zu schließen. Ob sowas mit Sweetalert möglich ist oder ob Du diesen Dialog selbst bauen musst, weiß ich nicht. Nach Gunnars Hinweisen würde ich sagen: such Dir ein besseres Tool für modale Dialoge.
Bei abgeschaltetem JS geht der Dialog nicht auf und der Download startet sofort. Ggf. kannst Du den Copyright-Text unter dem Link ins HTML einbauen und ihn bei aktivem JavaScript aus dem DOM entfernen oder ausblenden.
_Rolf_
--
sumpsi - posui - clusi