dedlfix: modale Fenster

Beitrag lesen

Tach!

Was ist der Unterschied zwischen Cancel und Abort?

Frage: Sind Sie ein guter Mensch?

|              [X]|  
|   [Ja] [Nein]   |

Hier sehe ich drei Möglichkeiten. Das "Nein" entspricht dem "Abbrechen". Natürlich ist von der natürlich Sprache ein "Abbrechen" mit einem "Schließen" gleich zu setzen. Wenn nun aber die beiden Buttons als Ja/Nein-Frage benutzt werden, ist ein "nein" nicht automatisch auch ein "abgebrochen"...

Auch ein Ja schließt den Dialog. Somit kann er durch jede der drei Möglichkeiten geschlossen werden. Das ist also nicht das Kriterium, das zur Entscheidung zwischen resolve und reject führen kann. In dem Fall sehe ich Ja und Nein als gültige Antworten, die resolve() aufrufen sollten. Das Ja gibt in dem Fall dem resolve() dann ein true mit auf den Weg, das Nein ein false. Der X-Button oder Esc oder Klick auf den Backdrop sind keine gültigen Antworten und landen auf reject().

Wir wollen das nicht zu einem Tutorial über Promises machen.

Einverstanden. Der Denkanstoß ist angekommen. Danke dafür.

Es soll lediglich gezeigt werden, wie durch die Verwendung von Promises der Verwender seinen Code besser strukturieren kann.

Es sei denn, er baut sich etwas ähnliches, das das auch leistet.

Eine Verbesserung könnte sein: In deinem Code prüfst du, ob die Callbacks Funktionen sind, bevor du sie aufrufst.

Du meinst also anstelle von

dialog.setCallback = function (key, f) {
  callBacks[key] = f;
};

sollte da besser stehen:

dialog.setCallback = function (key, f) {
  if (typeof f == "function") {
    callBacks[key] = f;
  }
};

Nein, ich meinte anstelle von

if (typeof OK == "function") {
      dialog.setCallback("ok", function () {
        OK();
        dialog.setCallback("ok", function () {});
      });
    }

braucht es nur

dialog.setCallback("ok", function () {
  resolve();
});

// in dem Fall auch noch kürzer
// dialog.setCallback("ok", resolve);

Abgesehen davon kann man sich wohl auch im obigen Code das Setzen des Callbacks auf eine Funktion sparen. Zum einen wäre null kürzer und du testest im Dialog-Polyfill sowieso dass der Callback eine Funktion ist. Zum anderen dürfte es auch egal sein, ob da nach dem OK noch irgendwas dem Callback zugewiesen wird, weil eh kein HTML-Element mehr da/sichtbar ist, dass zu einem Aufruf führen könnte.

dedlfix.

0 48

modale Fenster

JSKid
  • javascript
  1. 0
    Christian Kruse
  2. 0
    dedlfix
    1. 0
      JSKid
      1. 0
        Auge
        • html
        • javascript
        • programmiertechnik
        1. 0
          JSKid
          1. 0
            dedlfix
          2. 0
            Auge
          3. 0
            Felix Riesterer
      2. 0
        dedlfix
  3. 4
    Felix Riesterer
    1. 0
      Matthias Scharwies
    2. 1
      JürgenB
      1. 1
        Christian Kruse
        1. 1
          JürgenB
          1. 0
            Christian Kruse
            1. 0
              Felix Riesterer
              1. 0
                Felix Riesterer
          2. 0
            Felix Riesterer
            1. 0
              Christian Kruse
      2. 0
        Felix Riesterer
        1. 0
          JürgenB
          1. 0
            dedlfix
            1. 0
              JürgenB
    3. 1
      dedlfix
      1. 0
        Felix Riesterer
        1. 0
          dedlfix
          1. 0
            Felix Riesterer
            1. 0
              dedlfix
              1. 0
                Felix Riesterer
                1. 0
                  dedlfix
                  1. 0
                    Felix Riesterer
                    1. 1
                      Felix Riesterer
    4. 0
      1unitedpower
      1. 0
        JürgenB
      2. 0
        Felix Riesterer
        1. 1
          1unitedpower
          1. 0
            JürgenB
            1. 0
              1unitedpower
          2. 0
            Felix Riesterer
            1. 0
              1unitedpower
    5. 0
      Felix Riesterer
      1. 0
        dedlfix
        1. 0
          Felix Riesterer
          1. 1
            dedlfix
            1. 0
              Felix Riesterer
              1. 0
                dedlfix
              2. 1
                dedlfix