xHBBo: Confirm

Hallo,

ein User kann sein Beitrag löschen dieses setzte ich so um

  
onclick="return confirm('Wollen Sie diesen Beitrag wirklich löschen?')"  

funktioniert auch ABER es sieht ehrlich gesagt recht bescheiden aus. Auf immer mehr Internetseiten sehe ich dass das Feld "schön" aussieht. Wie kann ich dieses umsetzten? In diversen Tutorials lese ich dass das Feld vom Browser kommt und man darauf KEIN Einfluss hat, aber scheinbar schon.

  1. onclick="return confirm('Wollen Sie diesen Beitrag wirklich löschen?')"

    funktioniert auch ABER es sieht ehrlich gesagt recht bescheiden aus. Auf immer mehr Internetseiten sehe ich dass das Feld "schön" aussieht. Wie kann ich dieses umsetzten? In diversen Tutorials lese ich dass das Feld vom Browser kommt und man darauf KEIN Einfluss hat, aber scheinbar schon.

    Window.confirm() ist eine in den Browser bzw. Javascript eingebaute Funktion, an der du nichts ändern kannst. Erscheint die Abfrage anders gestaltet, wird statt des echten (betriebssystemseitigen) Fensters von confirm() ein HTML-Element in die Seite eingefügt.
    Schaue auf den entsprechenden Seiten mal genauer in den Javascript-Code bzw. untersuche den Seitencode mit Firebug o.ä., sobald der Dialog eingeblendet wird.

    Davon unabhängig: Solche Sicherheitsabfragen solltest du nicht benutzen, sie sind nahezu wertlos. Jeder hat schon mal auf die Frage "Löschen?" mit "Ja" geantwortet und das fünf Sekunden später bereut. Diese Bewegung ist den Meisten schon in Fleisch und Blut übergegangen, einschließlich eines gelegentlichen dahingeseufzten "Ja doch, nun mach schon, Himmel noch mal …"
    Echte Sicherheit bietet nur eine Funktion zum Rückgängigmachen, etwa der altbekannte Papierkorb. So du also die Möglichkeit hast, solltest du deine Zeit besser "in die Tonne" investieren statt in einen kosmetischen HTML-Ersatz für confirm().

    1. Davon unabhängig: Solche Sicherheitsabfragen solltest du nicht benutzen, sie sind nahezu wertlos.

      Ich bin auch schonmal mit der Maus abgerutscht und hab versehentlich auf einen Link geklickt. Wenn ich damit was gelöscht hätte, wäre das ärgerlich (tatsächlich ist mir das auch schon passiert). Und für jeden solchen Link eine Wiederherstellungsfunktion bereitzustellen, wäre wohl etwas sehr aufwändig. Abgesehen davon, dass ich bei einem Klick auf "Löschen" auch erwarte, dass etwas gelöscht wird. Wenn man es dann wiederherstellen kann, ist es ja offensichtlich gar nicht gelöscht. Fände ich auch doof...

      My 2 cents...

      1. Davon unabhängig: Solche Sicherheitsabfragen solltest du nicht benutzen, sie sind nahezu wertlos.

        Ich bin auch schonmal mit der Maus abgerutscht und hab versehentlich auf einen Link geklickt. Wenn ich damit was gelöscht hätte, wäre das ärgerlich (tatsächlich ist mir das auch schon passiert).

        Deswegen Sicherheitsabfrage _oder_ Wiederherstellungsfunktion. Gar nichts anzubieten habe ich nicht vorgeschlagen.

        Und für jeden solchen Link eine Wiederherstellungsfunktion bereitzustellen, wäre wohl etwas sehr aufwändig.

        Eine Sicherheitsabfrage für jeden solchen Link bereitzustellen ist nicht minder aufwändig. Genau genommen ist die Wiederherstellungsmöglichkeit sogar weniger aufwändig, betrachtet man nur die Benutzeroberfläche:

        Wenn du für jede Zugangsmöglichkeit, um das gleiche Datum zu löschen, eine eigene Löschfunktion geschrieben hast oder von der Benutzeroberfläche direkt auf die zugrundeliegende Datenhaltung zugreifst, hast du da schon ganz grundlegend etwas falsch gemacht.
        Normalerweise sollte es eine zentrale Löschfunktion im Code geben, die von allen "Löschknöpfen" angesprochen wird. Damit ist erstens die Anzahl der Fehlerquellen auf genau eine reduziert und zweitens wird die Datenhaltung von der Benutzeroberfläche abgekoppelt.

        Drittens fällt die Notwendigkeit einer Sicherheitsabfrage bei jedem Link ersatzlos weg, die Benutzeroberfläche wird also einfacher als mit Sicherheitsabfragen an jeder Ecke. Als Ersatz ist nur die eine Wiederstellungsfunktion nötig.
        Selbstverständlich ist auch die Wiederherstellungsfunktion nicht mal eben hingeschrieben, aber dass, wie du oben behauptet hast, "jeden solchen Link eine Wiederherstellungsfunktion bereitzustellen" schlimmer wäre als für jeden solchen Link eine Sicherheitsabfrage, ist nicht richtig.

        Abgesehen davon, dass ich bei einem Klick auf "Löschen" auch erwarte, dass etwas gelöscht wird. Wenn man es dann wiederherstellen kann, ist es ja offensichtlich gar nicht gelöscht. Fände ich auch doof...

        Du kannst mir nicht erzählen, dass du den Punkt "Rückgängig" im Menü wirklich _jedes_ Programms, mit dem sich etwas bearbeiten lässt, von kleinen Texteditoren über Textverarbeitung und Malprogrammen bis hin zu komplizierten CAD-Programmen, noch nie benutzt hättest und doof finden würdest. Und selbst wenn dem so wäre, du würdest damit wohl ziemlich allein auf der Welt sein.

        Ich habe auch nicht geschrieben, dass nie gelöscht werden dürfte, es wird nur nicht sofort gelöscht. Besagter Punkt im Bearbeiten-Menü hebt üblicherweise nur ein paar Dutzend Schritte auf, der Papierkorb fürs Dateisystem löscht bei Erreichen einer eingestellten Größe die ältesten Dateien zuerst - das ist die normale Vorgehensweise für diese Funktion, diese habe ich mal in Gedanken vorausgesetzt.

        1. Eine Sicherheitsabfrage für jeden solchen Link bereitzustellen ist nicht minder aufwändig. Genau genommen ist die Wiederherstellungsmöglichkeit sogar weniger aufwändig, betrachtet man nur die Benutzeroberfläche

          Wieso? Die Abfrage braucht man auch nur einmal als Funktion erstellen und bei jedem Löschlink mit einfügen.

          Du kannst mir nicht erzählen, dass du den Punkt "Rückgängig" im Menü wirklich _jedes_ Programms, mit dem sich etwas bearbeiten lässt, von kleinen Texteditoren über Textverarbeitung und Malprogrammen bis hin zu komplizierten CAD-Programmen, noch nie benutzt hättest und doof finden würdest.

          Wie man von einer JS-Abfrage auf einer Webseite(!) zu komplizierten CAD-Programmen kommt, erschließt sich mir nicht. Ich spreche von ersterem, denn darum geht es dem OP.

          1. Eine Sicherheitsabfrage für jeden solchen Link bereitzustellen ist nicht minder aufwändig. Genau genommen ist die Wiederherstellungsmöglichkeit sogar weniger aufwändig, betrachtet man nur die Benutzeroberfläche

            Wieso? Die Abfrage braucht man auch nur einmal als Funktion erstellen und bei jedem Löschlink mit einfügen.

            Und die Wiederherstellung wird bei keinem einzigen Löschlink eingefügt, die steht nämlich als eigenständiger Papierkorb bereit.

            Davon mal abgesehen hast du vorhin noch bemängelt, …

            für jeden solchen Link [eine Funktion] bereitzustellen, wäre wohl etwas sehr aufwändig.

            Aber bei einer Sicherheitsabfrage soll das Bereitstellen bei jedem Link mit einem Male nicht mehr aufwändig sein? Überlege lieber nochmal. Ich habe das Zitat bewusst gekürzt, vielleicht fällt dir dann der Widerspruch, in dem du dich da verzettelt hast, eher auf.

            Du kannst mir nicht erzählen, dass du den Punkt "Rückgängig" im Menü wirklich _jedes_ Programms, mit dem sich etwas bearbeiten lässt, […] noch nie benutzt hättest und doof finden würdest.

            Wie man von einer JS-Abfrage auf einer Webseite(!) zu komplizierten CAD-Programmen kommt, erschließt sich mir nicht. Ich spreche von ersterem, denn darum geht es dem OP.

            Vielleicht solltest du vor dem Antworten ordentlich lesen und nachdenken, dann erschließt sich dir auch das Wesentliche. Ich habe das Unwesentliche im Zitat, die Beispiele (einschließlich des CAD-Programms), jetzt mal rausgenommen.

            Es geht um die Möglichkeit, eine Handlung rückgängig zu machen. Du findest diese Möglichkeit überall, in jedem halbwegs anständigen Programm, nur auf einer Webseite soll deiner Meinung eine Sicherheitsabfrage vorzuziehen sein.
            Überspitzt gefragt: Soll denn auch bei einer Webseite wie Google Docs der Menüpunkt "Rückgängig" entfallen und durch eine Sicherheitsabfrage ersetzt werden? Es handelt sich ja schließlich um eine Webseite, nicht um ein Programm …

            Um das gleich zu beantworten: Es ist dem Benutzer, der versehentlich etwas gelöscht hat, völlig wurscht, ob er das auf einer Webseite oder in einem Programm verbockt hat - er möchte das Gelöschte wiederhaben. Eine Sicherheitsabfrage hilft ihm da nicht weiter. Der Papierkorb, den er seit etlichen Jahren in der einen oder anderen Form aus so ziemlich jedem Programm kennt, mit dem sich etwas bearbeiten lässt, hingegen schon.

            1. Es geht um die Möglichkeit, eine Handlung rückgängig zu machen. Du findest diese Möglichkeit überall, in jedem halbwegs anständigen Programm, nur auf einer Webseite soll deiner Meinung eine Sicherheitsabfrage vorzuziehen sein.

              Richtig. Nenn mir EINE bekannte(!) Webseite, bei der man nach irgendwelchen Löschfunktionen noch irgendwo einen "Papierkorb" hat, in dem man die Sachen wiederfindet. Und ich meine jetzt kein Webmail oder Google Docs oder CMS, sondern Foren, Social Networks o.ä. bei denen man rein als Nutzer agiert, der ansonsten keine Rechte hat, auf dem Server Dateien zu verwalten.

              Gelöscht ist gelöscht. I.d.R. gibt es vorher noch eine Frage "Wollen Sie wirklich?". Es ist in diesem Bereich schlichtweg nicht üblich, einen Papierkorb zu verwenden. Und deshalb würde es wohl auch niemand erwarten. Ich zumindest nicht. Und ich hab schon viel gelöscht auf diversesten Webseiten - ohne dass es jemals einen "Papierkorb" gegeben hätte. Ich halte Dich aber natürlich nicht davon ab, das auf Deinen Webseiten anders zu handhaben, wenn Dir das besser gefällt. Aber wie auch schon der OP geschrieben hat - mich würde eher "beunruhigen", dass Du offenbar (zunächst) nicht wirklich löschst, obwohl ich das i.d.R. bewusst angefordert habe...

              Überspitzt gefragt: Soll denn auch bei einer Webseite wie Google Docs der Menüpunkt "Rückgängig" entfallen und durch eine Sicherheitsabfrage ersetzt werden? Es handelt sich ja schließlich um eine Webseite, nicht um ein Programm …

              Nein, es handelt sich um die Online-Imitation eines Programmes, das auch die gewohnten Funktionen eines Programmes widerspiegeln soll. Ich bezweifle stark, dass der OP ein Programm imitieren will. Er nennt es in seiner Beispielfunktion "Wollen Sie diesen Beitrag wirklich löschen?". Das klingt eher nach Forum o.ä. - und da habe ich noch NIE einen "Papierkorb" gesehen und würde das auch nicht erwarten. Im Gegenteil.

              Du vergleichst daher Äpfel mit Birnen...

              Um das gleich zu beantworten: Es ist dem Benutzer, der versehentlich etwas gelöscht hat, völlig wurscht, ob er das auf einer Webseite oder in einem Programm verbockt hat - er möchte das Gelöschte wiederhaben.

              Nein, i.d.R. möchte er das gelöschte gelöscht haben, deshalb hat er es ja gelöscht. Und damit er das nicht versehentlich tut, gibt's eine Sicherheitsabfrage. Tut er es absichtlich, will er normalerweise auch, dass es weg ist. Zumindest, was Forenbeiträge, Kommentare, Fotouploads und andere typische Webseiten-Aktionen betrifft. Du redes von UNDO-Funktionen von Programmen und deren Online-Imitationen. Das ist IMHO was ganz anderes...

              Gruß,
              Meinereiner

    2. Guten Abend,

      Davon unabhängig: Solche Sicherheitsabfragen solltest du nicht benutzen, sie sind nahezu wertlos. Jeder hat schon mal auf die Frage "Löschen?" mit "Ja" geantwortet und das fünf Sekunden später bereut. Diese Bewegung ist den Meisten schon in Fleisch und Blut übergegangen, einschließlich eines gelegentlichen dahingeseufzten "Ja doch, nun mach schon, Himmel noch mal …"
      Echte Sicherheit bietet nur eine Funktion zum Rückgängigmachen, etwa der altbekannte Papierkorb. So du also die Möglichkeit hast, solltest du deine Zeit besser "in die Tonne" investieren statt in einen kosmetischen HTML-Ersatz für confirm().

      Wenn ich eine Option einbauen würde „Löschen rückgängig machen“ dann wäre es meiner Meinung nach kein richtiges Löschen und ich würde meine User verunsichern. Außerdem ist mir dieses ehrlich gesagt viel zu viel Arbeit für jetzt, da ich nicht weiß ob die Seite überhaupt angenommen wird.

      Beschäftige mich gerade etwas mit dem Dialogfenster von jQuery UI damit soll dieses vorhaben möglich sein.

      1. Om nah hoo pez nyeetz, xHBBo!

        Wenn ich eine Option einbauen würde „Löschen rückgängig machen“ …

        Du solltest das vielleicht in deiner Datenbank (?) gleich mal vorsehen. Es ist u. U. einfacher dem Datensatz ein Feld "sichtbar" zu geben und dieses zu ändern, als tatsächlich zu löschen, weil es Probleme mit referetieller Integrität geben könnte.

        Matthias

        --
        Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Lebensmittel und Lebensmittelpunkt.

        1. Guten Abend Matthias,

          Du solltest das vielleicht in deiner Datenbank (?) gleich mal vorsehen. Es ist u. U. einfacher dem Datensatz ein Feld "sichtbar" zu geben und dieses zu ändern, als tatsächlich zu löschen, weil es Probleme mit referetieller Integrität geben könnte.

          Ok das wäre natürlich eine Option! Würde dann aber bedeuten ich darf nicht nur den Datensatz ausblenden sondern muss auch dafür sorgen dass sämtliche Bilder die zum Artikel gehören umbenannten werden um sicher zu gehen dass diese Bilder nicht mehr direkt aufgerufen werden können, sollte ein User sich ein Link weggespeichert haben.

          So kann ich natürlich auch mein Webspace mit unnötigen Daten / Bildern füllen ;) Muss mir also genau überlegen was für ein Vorteil es hat die Einträge nicht wirklich zu löschen. Mir fällt derzeit nur ein Grund ein, sollte es um rechtliche Sachen gehen wie z.B. einer Urheberrechtsverletzung.

          1. Ok das wäre natürlich eine Option! Würde dann aber bedeuten ich darf nicht nur den Datensatz ausblenden sondern muss auch dafür sorgen dass sämtliche Bilder die zum Artikel gehören umbenannten werden um sicher zu gehen dass diese Bilder nicht mehr direkt aufgerufen werden können, sollte ein User sich ein Link weggespeichert haben.

            Meiner Ansicht nach solltest du solche Sachen eh nicht direkt zugängig machen. Du hast die Artikel in einer Datenbank und nicht als Datei auf der Platte liegen; halte genauso die Bilder bzw. zumindest den Zugang zu ihnen (d.h. die Verknüpfung URL -> Dateipfad) ebenfalls in der Datenbank.

            Auf diesem Wege lassen sich auch Zusatzfunktionen für Bilder einbauen, automatische Skalierung über die URL beispielsweise (à la /bild.jpg/120, für eine 120 Pixel breite Version von bild.jpg). Die skalierte Version wird ausgegeben und zwischengespeichert, beim nächsten Aufruf kann gleich die zwischengespeicherte Version gesendet werden.
            Ich benutze sowas hier für die Artikelbebilderung, die Bilder werden an verschiedenen Stellen in verschiedenen Größen benutzt, dazu kommt noch die Ausgabe für kleine Bildschirme (Telefone). Aus meiner Sicht brauche ich mich nur um das Originalbild zu kümmern, alles andere macht der Server sozusagen auf Zuruf alleine. Mir sind die Vorschaubilder an jener Stelle zu klein? Ich brauche nur die eine Seitenvorlage zu ändern, die passende Bildergröße bei aberhunderten Artikeln kommt von selbst.

            Muss mir also genau überlegen was für ein Vorteil es hat die Einträge nicht wirklich zu löschen. Mir fällt derzeit nur ein Grund ein, sollte es um rechtliche Sachen gehen wie z.B. einer Urheberrechtsverletzung.

            Du bist nicht verpflichtet, sämtliche Daten wegen möglicher Rechtsansprüche auf alle Ewigkeit vorzuhalten. Dementsprechend kann dir auch niemand einen Strick daraus drehen, hast du im Falle eines Falles nichts mehr vorliegen.
            Dieser Vorteil, von dem du sprichst, wäre also lediglich deine ganz persönliche Befriedigung, jemandem bei der Klärung einer Urheberrechtsverletzung behilflich gewesen zu sein. Nicht, dass es schlimm wäre, jemandem bei sowas zu helfen, aber das ist halt auch alles; insbesondere hast du keinerlei Nachteile zu erwarten.

            Der wesentliche Vorteil, Einträge nicht sofort zu löschen, sondern nur verzögert, ist wirklich der für deine Benutzer, die sich nicht mit lästigen Sicherheitsabfragen rumärgern müssen.

      2. Wenn ich eine Option einbauen würde „Löschen rückgängig machen“ dann wäre es meiner Meinung nach kein richtiges Löschen und ich würde meine User verunsichern.

        Jeder deiner Benutzer kennt den Papierkorb auf seinem Bildschirm und den Menüpunkt Wiederherstellen im Bearbeiten-Menü - und jeder hat diese Funktionen schon ungezählte Male benutzt. Verunsichern wirst du damit garantiert niemanden.

        Es ging mir, davon abgesehen, auch nicht darum, dass überhaupt nicht mehr gelöscht wird. Es sollte nur statt der kaum Sicherheit bietenden Sicherheitsabfrage die Möglichkeit geben, die letzten paar Schritte rückgängig zu machen - so, wie bei besagtem Papierkorb auch. Irgendwann können die Sachen ja gerne zur digitalen Müllabfuhr, nur halt nicht innerhalb der zweieinhalb Sekunden, die Otto Normalbenutzer selbst im Tiefschlaf das "Ok"-Feld findet und anklickt.

        Außerdem ist mir dieses ehrlich gesagt viel zu viel Arbeit für jetzt, da ich nicht weiß ob die Seite überhaupt angenommen wird.

        Ein still und leise funktionierendes Sicherheitsnetz in Form eines Papierkorbs könntest du natürlich als Pluspunkt für deine Seite ansehen …

        Aber wie ich schon schrieb: Wenn's zu viel Arbeit ist und in die bestehende Struktur nicht mehr reinpasst, muss es halt bei der Abfrage bleiben, keine Frage.