Auch hier wieder
herzlichen Dank für die Hintergrundinfos. Dadurch konnte ich ein Script erstellen, das einen Abbrechen-Button mit unterschiedlichen Funktionen, nämlich von der jeweiligen Situation abhängig, erzeugt. Dazu werte ich den Browserverlauf aus. Ist dieser leer (E-Mail-Link, "in neuem Fenster öffnen" usw.), wird das aktuelle Fenster mit Klick auf den Button "Abbrechen" einfach wieder geschlossen. Ist aber ein Browserverlauf vorhanden, wird mit Klick auf den Button "Abbrechen" die vorhergehende letzte Seite aufgerufen. Diesen Button füge ich direkt vor den 'Submit'-Button des Formulars ein. Das funktioniert zuverlässig mit allen von mir getesteten Browsern. Hier der Code für 'Formular' in den Frontend Webassets:
Code:
jQuery(document).ready(function() {
console.log('FEWA script loaded');
// Erstelle einen Abbrechen/Schließen Button
var backButton = document.createElement("button");
backButton.className = "btn btn-secondary col-auto";
backButton.innerHTML = "Abbrechen";
if (window.history.length === 1) {
// console.log("Der Browserverlauf existiert nicht:");
// Hinzufügen eines Event Listeners, um beim Klicken auf den Button das aktuelle Fenster zu schließen
backButton.addEventListener("click", function() {
window.close();
});
} else {
// console.log("Der Browserverlauf existiert:");
// Hinzufügen eines Event Listeners, um beim Klicken auf den Button die letzte Seite des Browserverlaufs aufzurufen
backButton.addEventListener("click", function() {
window.history.back();
});
}
// Finde das bereits vorhandene Input-Element vom Typ 'submit'
var submitButton = document.querySelector("input[type='submit']");
// Füge den Abbrechen-Button vor dem vorhandenen Submit-Button ein
submitButton.parentNode.insertBefore(backButton, submitButton);
});
Nachtrag:
Scheinbar wird mit
aber trotzdem das Formular validiert und abgesendet (falls Validierung erfolgreich). Ich müsste also die Formularbearbeitung noch zusätzlich abbrechen. Wie kann ich das mit JavaScript erreichen? Auf PHP-Ebene ist mir das klar.
Oder liegt dieses ungewollte Verhalten nur daran, dass ich den Button falsch platziert habe?