Alert Notification erscheint 2 mal statt 1 mal

olgagilow

Neues Mitglied
Hallo liebe Java Community,

da ich überhaupt keine Ahnung von Javascript oder generell Programmiersprachen habe, wollte ich mich an euch wenden und schauen ob mir hier jemand helfen kann.
Ich weiß auch nicht in welche Kategorie meine Anfrage kommt, daher poste ich sie hier.

Ich habe in meinem Shopify Onlineshop 2 Checkboxen beim Warenkorb, die ich mit dieser Anleitung gemacht habe:

jQuery einbinden​

Starten Sie, indem Sie den folgenden Code zwischen die Head-Tags (<head>…</head>) der theme.liquid-Datei einfügen:

Code:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>


Eine Warenkorb-Checkbox hinzufügen
Fügen Sie den folgenden HTML-Code zur zur main-cart-footer.liquid (Zeile 53/54) und cart-notification.liquid (Zeile 24) hinzu und ändern Sie ggf. den Text ab.

HTML:
<p>
<input type="checkbox" id="agree">
<label for="agree">
Ich willige der <a href="/policies/privacy-policy">Datenschutzerklärung</a>, den <a href="/policies/terms-of-service">AGB</a> sowie der <a href="/policies/refund-policy">Widerrufsbelehrung</a> wissentlich ein.
</label>
</p>


JavaScript einfügen
Fügen Sie den folgenden JavaScript-Code ans Ende der cart.js und cart-notification.js ein.
Java:
$(document).ready(function() {
$('body').on('click', '[name="checkout"], [name="goto_pp"], [name="goto_gc"]', function() {
if ($('#agree').is(':checked')) {
$(this).submit();
}
else {
alert("Bitte willigen Sie unseren Rechtstexten ein, um fortzufahren.");
return false;
}
});
});



Ich habe alles bis auf das jQuery doppelt angelegt und dann eben nur den Text verändert für die jeweils unterschiedlichen Checkboxen.
Für die "id" im HTML Code, habe ich für die eine Checkbox "agree1" und die andere "agree2" genommen.
Beim javateil habe ich das hier eingefügt:

Java:
$(document).ready(function() {
$('body').on('click', '[name="checkout"], [name="goto_pp"], [name="goto_gc"]', function(event) {
event.stopPropagation();
if ($('#agree1').is(':checked')&&$('#agree2').is(':checked')) {
$(this).submit();
}
else {
alert("Bitte willigen Sie unseren Rechtstexten ein, um fortzufahren.");
return false;
}
});
})

Beim Ausprobieren habe ich dann eine Checkbox nicht angeklickt und habe dann wie erwartet das Alert-Fenster "Bitte willigen Sie unseren Rechtstexten ein, um fortzufahren." erhalten. Allerdings kommt es immer 2 mal anstatt nur einmal. Das bedeutet ich muss zweimal das Alert-Fenster wegklicken anstatt nur einmal.

Kann man anhand des Codes oben sehen, woran das liegt?

Wäre froh wenn ihr mir hier als experten weiterhelfen könnt.

Danke für die Antworten!
Cheers,
Lola
 
Zuletzt bearbeitet:

Oneixee5

Top Contributor
Du hast bestimmt ein paar mal rumprobiert. Als erstes solltest du den Browsercache löschen und/oder die Entwicklertools öffnen und so einstellen, dass der Browsercache umgangen wird. Danach kannst du das noch einmal prüfen. Sollte das Problem weiterhin bestehen, findest du mit den Entwicklertools im Browser die Auslöser des Events.
Zusätzlich kannst du:
event.stopPropagation();
durch
event.stopImmediatePropagation() event.preventDefault()
ersetzen.

Die Einbindung von https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js ist ziemlich problematisch bei einem Webshop. Beim öffnen kommt bestimmt eine DSGVO-Abfrage. Mit der nachträglichen Einbindung von https://ajax.googleapis.com... umgehst du diese evtl. teilweise und ignorierst die Nutzereingaben. Du könntest dir damit eine Abmahnung einhandeln. Für den wenigen JavaScript-Code benötigst du JQuery auch nicht wirklich.

Der nächste Punkt wäre "alert" - das kann einfach vom Nutzer unterdrückt werden und ist daher keine sinnvolle Lösung. Es ist allgemein Konsens, dass alert nur zu Debugging-Zwecken eingesetzt werden soll. Sicherheitstools bemängeln das normalerweise auch als Sicherheitslücke - da diese davon ausgehen, das Debugmeldungen angezeigt werden. Das dürfte deinem Google-Rang ziemlich schaden.
 

Ähnliche Java Themen


Oben