Linuchs: Abbruch-Behandlung für Javascript prompt fehlt

Moin,

ich experimentiere, Cookie-Inhalte mit Javascript zu ändern. Dazu nutze ich prompt:

var cookie_value = prompt( "neuer Wert für Cookie " + arr_cookie[0].trim() + " (wenn leer, wird Cookie gelöscht):", arr_cookie[1].replace(/%40/g, "@") );
if ( cookie_value ) {
  // Cookie aendern
} else {
  // Cookie loeschen
}

Wenn die prompt-Meldung abgebrochen wird, wird the cookie gelöscht, das ist nicht gewollt. Ich vermute, cookie_value hat dann den Wert FALSE, ich teste ...

ja, so führt der Abbruch zur Nicht-Bearbeitung:

if ( cookie_value.length > 0 && cookie_value !== false ) {
  // Cookie aendern
} else if ( cookie_value.length == 0 && cookie_value !== false ) {
  // Cookie loeschen
}

Gruß, Linuchs

  1. Hallo,

    ich experimentiere, Cookie-Inhalte mit Javascript zu ändern. Dazu nutze ich prompt:

    jaja, soweit okay.

    Wenn die prompt-Meldung abgebrochen wird, wird the cookie gelöscht, das ist nicht gewollt. Ich vermute, cookie_value hat dann den Wert FALSE

    Genau.

    Und was möchtest du jetzt eigentlich wissen?

    Live long and pros healthy,
     Martin

    --
    Klein φ macht auch Mist.
    1. Und was möchtest du jetzt eigentlich wissen?

      Hinweis, den wiki zu ergänzen, es fehlt der Rückgabewert bei Abbruch.

      1. n'Abend Kalle,

        Und was möchtest du jetzt eigentlich wissen?

        Hinweis, den wiki zu ergänzen, es fehlt der Rückgabewert bei Abbruch.

        ah, verstehe. Danke, ist ergänzt.
        Hättest du auch selbst tun können - es ist ein Wiki. 😉

        Live long and pros healthy,
         Martin

        --
        Klein φ macht auch Mist.
        1. Hättest du auch selbst tun können - es ist ein Wiki.

          Bei Sachen, bei denen ich nicht ganz sicher bin, lass ich lieber nochmal jemanden Korrektur lesen. Vorsicht hat sich ausgezahlt, false war falsch ;-)

  2. Hallo Linuchs und Martin,

    ich wage zu widersprechen.

    Abbrechen von prompt() ergibt bei mir nicht FALSE, sondern NULL. Und das schreibt auch die HTML Spec (8.8.1 Simple Dialogs).

    If the user cancels the prompt, then returns null instead.

    Bitte prüft euren Versuchsaufbau. Kam da wirklich false?

    let ergebnis = prompt("What is six multiplied by nine", "42");
    console.log("Typ von Ergebnis ist " + (typeof ergebnis));
    if (ergebnis === null) 
       console.log("Ergebnis ist null");
    else if (ergebnis === false) 
       console.log("Ergebnis ist false");
    else 
       console.log("Ergebnis ist " + ergebnis);
    

    Der ausgegebene Typ sollte object sein (weil das der Typ von null ist), und nicht boolean.

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Hallo Rolf,

      ich wage zu widersprechen.

      und womit? Mit Recht.

      Abbrechen von prompt() ergibt bei mir nicht FALSE, sondern NULL. Und das schreibt auch die HTML Spec (8.8.1 Simple Dialogs).

      Und auch die MDM-Doku, die ich selbst verlinkt habe.

      Bitte prüft euren Versuchsaufbau.

      Was für'n Versuchsaufbau? Ich habe nur aufgrund von Aussagen argumentiert.
      Ich bin halt eher ein C-Programmierer, und da ist 0, false oder NULL einfach dasselbe.

      Live long and pros healthy,
       Martin

      --
      Klein φ macht auch Mist.
      1. printf('Hallo %s!', ['Du', 'ihr', 'Welt', 'zusammen'][rand(0, 3)]);

        Was für'n Versuchsaufbau? Ich habe nur aufgrund von Aussagen argumentiert.
        Ich bin halt eher ein C-Programmierer, und da ist 0, false oder NULL einfach dasselbe.

        • Du bist 'ne NULL, McFly
        • Du bist 'ne 0, McFly
        • Du bist false, McFly

        Seltsame Sprache 😜

        /K

        --
        Klingonen sind doof. Sie rufen ständig nach einem Kaplan und wollen nach dem Tod im Styropor® sein.
        1. Hallo kai345,

          in der JavaScript-Erweiterung dann noch

          • Du bist 'ne "", McFly
          • Du bist 'ne undefined, McFly

          Armer Biff, das kapiert er nie.

          Rolf

          --
          sumpsi - posui - obstruxi