Sonic: Explorer - Ja, Mozilla - Nein

Hallo,

ich habe folgende JS-Funktion, die leider nur im Explorer geht.

function delete(id) {
 if (id=="") {
  return false;
 }
 frage = confirm("Löschen?")
 if (frage == true) {
   document.location.href="delete.asp?id="+id;
 }
}

Weiß jemand warum Mozilla Probleme mit dieser Lösung hat?
Danke

  1. function delete(id) {
    if (id=="") {
      return false;
    }
    frage = confirm("Löschen?")
    if (frage == true) {
       document.location.href="delete.asp?id="+id;
    }
    }

    Mozilla hat Probleme mit "top/parent/document.location.href". Aber wie mache ich es anders?

    1. Hi,

      Mozilla hat Probleme mit "top/parent/document.location.href". Aber wie mache ich es anders?

      Vielleicht. Mit "top/parent/window.location.href" jedoch nicht. Dein Problem liegt woanders.

      Gruß, Cybaer

      --
      Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
    2. Mozilla hat Probleme mit "top/parent/document.location.href". Aber wie mache ich es anders?

      Nein, Mozilla hat keine Probleme mit top oder parent. Dein Beispiel mit window.location funktoniert einwandfrei in allen Browser die JS können.

      Struppi.

  2. Hallo,

    ich habe folgende JS-Funktion, die leider nur im Explorer geht.

    function delete(id) {
    if (id=="") {
      return false;
    }
    frage = confirm("Löschen?")
    if (frage == true) {
       document.location.href="delete.asp?id="+id;
    }
    }

    Weiß jemand warum Mozilla Probleme mit dieser Lösung hat?
    Danke

    Was für eine Meldung liefert die JavaScript-Konsole?

    1. Was für eine Meldung liefert die JavaScript-Konsole?

      leider gar nichts

  3. Hallo,

    Weiß jemand warum Mozilla Probleme mit dieser Lösung hat?

    weil location ein Objekt von window ist, nicht von document (http://de.selfhtml.org/javascript/objekte/location.htm).
    Aber das hat Dir bestimmt auch die Javascript-Konsole von Mozilla gesagt (unter "Tools").
    ;)

    Ciao,
    Andreas

    --
    "Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)
    1. weil location ein Objekt von window ist, nicht von document (http://de.selfhtml.org/javascript/objekte/location.htm).
      Aber das hat Dir bestimmt auch die Javascript-Konsole von Mozilla gesagt (unter "Tools").
      ;)

      mit window.location.href geht es auch nicht

      1. Hallo,

        hm, also in mehreren Admin-Oberflächen, die ich gebaut habe, verwende Links mit onclick="if(confirm('Soll ... tatsächlich gelöscht werden?')) window.location.href = 'functions.php?deleteId=...'", und das klappt ohne Probleme.
        Hast Du schon mal versucht, Dich per Test-Alerts an die Fehlerquelle heranzutasten?

        Ciao,
        Andreas

        --
        "Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)
        1. Hallo,

          hm, also in mehreren Admin-Oberflächen, die ich gebaut habe, verwende Links mit onclick="if(confirm('Soll ... tatsächlich gelöscht werden?')) window.location.href = 'functions.php?deleteId=...'", und das klappt ohne Probleme.
          Hast Du schon mal versucht, Dich per Test-Alerts an die Fehlerquelle heranzutasten?

          Ciao,
          Andreas

          Das ist im Prinzip das Gleiche. Funktionieren deine Funktionen auch im Firefox?
          Ja, ich habe nach der Fehlerquelle mit Test-Alerts gesucht. Wenn ich den href-String in eine Variable schreibe und sie ausgebe, wird das Richtige angezeigt.

          Das Problem liegt eindeutig bei "window.location.href". Ich benutze übrigens Mozilla in der Version 1.0.7.
          Die JS-Konsole zeigt keine Fehler an.

          1. Hallo,

            ähm, übrigens: wenn ich Deine Funktion bei mir mal in eine Testseite einbaue, dann zeigt meine Javascript-Konsole sehr wohl einenFehler an.
            Der Fehler liegt in der Zeile, in der Du Deine Funktion deklarierst.
            Und da syntaktisch alles OK ist, schrillten bei mir die Alarmglocken bezüglich des Namens Deiner Funktion. Bei solchen Begriffen wie "delete" besteht immer die Gefahr, daß es sich um geschützte Namen handelt.
            Also habe ich die Methode mal umbenannt in deleteTest(id) - und siehe da: der Fehler ist behoben, und das Script läuft!

            Ein Blick auf http://www.javascriptkit.com/jsref/reserved.shtml schafft dann auch Gewißheit.
            ;)

            Ciao,
            Andreas

            --
            "Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)
            1. Ein Blick auf http://www.javascriptkit.com/jsref/reserved.shtml schafft dann auch Gewißheit.
              ;)

              Danke, habe was dazugelernt, aber mit einem anderen func-Namen geht es auch nicht. Wird bei deiner Testseite auch zu der gewünschten Seite gewechselt?

              1. Hallo,

                Danke, habe was dazugelernt, aber mit einem anderen func-Namen geht es auch nicht. Wird bei deiner Testseite auch zu der gewünschten Seite gewechselt?

                Ja, bei mir klappt das mit dieser Mini-Testseite:
                <html>
                <head>
                 <title>Untitled</title>
                 <script type="text/javascript">
                 function deleteTest(id) {
                  if (id=="") { return false; }
                  frage = confirm("Löschen?");
                  if (frage == true) {
                   document.location.href="http://www.google.de?id="+id;
                  }
                 }
                 </script>
                </head>
                <body>
                 <a href="#" onclick="deleteTest(1);">Test</a>
                </body>
                </html>

                Ciao,
                Andreas

                --
                "Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)
                1. Oh, das geht bei mir. Und das liegt nicht an der Funktion, sondern an dem Aufruf.

                  Du hast <a href=...onClick=...>Test</a>

                  Ich habe einen Button <input type="submit" value="Löschen" onClick=...>

                  Wie gesagt, das geht im IE ohne Probleme. Firefox braucht ein "<a href"??? warum??? Das ist doch ganz normaler Funktionsaufruf!

                  1. Hallo,

                    Wie gesagt, das geht im IE ohne Probleme. Firefox braucht ein "<a href"??? warum??? Das ist doch ganz normaler Funktionsaufruf!

                    Nein, der Firefox kommt natürlich auch mit dem INPUT-Element klar (siehe http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onclick).

                    Aber Du mußt bei diesem Submit-Button etwas anderes beachten. Er sitzt ja hoffentlich in einem FORM-Element. Wenn Du ihn nun anklickst, so wird neben dem click-Event auch der submit-Event gefeuert. Sprich: wenn Du es nicht verhinderst, so wird das Formular versendet, was Du in diesem Fall ja nicht willst.
                    Du mußt daher Folgendes schreiben:
                    <form ....>
                    ...
                     <input type="submit" onClick="deleteTest(1);return false;" value="Test" />
                    ...
                    </form>

                    Dein click-Handler muß FALSE zurückgeben, um jede weitere Verwertung des Mausklicks und damit auch das Absenden des Formulars zu unterbinden.

                    Ciao,
                    Andreas

                    --
                    "Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)
                    1. JAAA!!! DAS IST ES! DANKE!!! DANKE!!!

                      PS: wieso geht es bei IE doch?

                      1. Hallo,

                        PS: wieso geht es bei IE doch?

                        der IE geht bei der Verarbeitung der Events anders vor als Mozilla (Stichwort "Bubbling"). Wenn Du Dich dafür interessierst, findest Du gute Informationen und Beispiele bei quirksmode.org.

                        Ciao,
                        Andreas

                        --
                        "Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)
                      2. JAAA!!! DAS IST ES! DANKE!!! DANKE!!!

                        Ein submit button :-(

                        Da war nie die Rede von und das ganze läßt sich in einem ganz normalen Formular einbauen:

                        <form action="delete.php"
                        onsubmit="return confirm('sicher'?);">
                        <input type="hidden" id="..">
                        <input type="submit" id="löschen">
                        </form>

                        und wenn man wirklich JS einsetzen will/muss

                        <form action="delete.php"
                        onsubmit="return confirm('sicher'?);">
                        <input type="hidden" id="..">
                        <input type="submit" id="löschen 1" onclick="this.form.id.value=1">
                        <input type="submit" id="löschen 2" onclick="this.form.id.value=2">
                        </form>

                        Struppi.

        2. hm, also in mehreren Admin-Oberflächen, die ich gebaut habe, verwende Links mit onclick="if(confirm('Soll ... tatsächlich gelöscht werden?')) window.location.href = 'functions.php?deleteId=...'", und das klappt ohne Probleme.

          u.U. kann es ok sein auf JS zu setzen, ich würde es aber davon unabhängig machen (was natürlich eine zusätzliche Confirm abfrage auf dem Server vorrausetzt)

          <a href="index.htm?deleteId=xxx"
           onclick=" if(confirm('Sicher?')) { this.href += '&confirm=1'; return true; } else return false;">

          Struppi.

  4. Hallo Sonic,

    Weiß jemand warum Mozilla Probleme mit dieser Lösung hat?

    Ich weiß nicht, wieso der Mozilla hier Probleme bereitet.
    Ich weiß nur, dass ich damals allein mit location.href = "url"; gut arbeiten konnte, und dass dies AFAIK auch im IE funktioniert hat.

    Grüße

    Marc Reichelt || http://www.marcreichelt.de/

    --
    Linux is like a wigwam - no windows, no gates and an Apache inside!
    Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
    http://emmanuel.dammerer.at/selfcode.html
    1. Ich weiß nicht, wieso der Mozilla hier Probleme bereitet.
      Ich weiß nur, dass ich damals allein mit location.href = "url"; gut arbeiten konnte, und dass dies AFAIK auch im IE funktioniert hat.

      Es handelt sich um Mozilla Firefox. Die Sache ist, dass es bei mir irgendwie nicht geht. Ich habe auch gegoogelt und ein Paar Beträgen zu diesem Thema gefunden. Aber leider hatte keiner eine Lösung für.

  5. Tag Sonic.

    Weiß jemand warum Mozilla Probleme mit dieser Lösung hat?

    Da die JS-Konsole stumm bleibt und alle vorgeschlagenen Lösungen nicht funktionieren, obwohl sie es sollten, schau doch mal nach mal, ob du überhaupt Javascript aktiviert hast (Extras - Einstellungen - Inhalt - Javascript aktivieren).

    Siechfred

    1. Tag Sonic.

      Weiß jemand warum Mozilla Probleme mit dieser Lösung hat?

      Da die JS-Konsole stumm bleibt und alle vorgeschlagenen Lösungen nicht funktionieren, obwohl sie es sollten, schau doch mal nach mal, ob du überhaupt Javascript aktiviert hast (Extras - Einstellungen - Inhalt - Javascript aktivieren).

      Siechfred

      Ist aktiviert :)
      ___________________________
      Hier ist nochmal meine Funktion:

      function loeschen(id) {
       if (id=="") {
        return false;
       }
       frage = confirm("Löschen?");
       if (frage == true) {
         window.location.href="delete.asp?id="+id;
       }
      }

      1. Hier ist nochmal meine Funktion:

        und die wird aufgerufen wie?

        Struppi.

        1. Hier ist nochmal meine Funktion:

          und die wird aufgerufen wie?

          Struppi.

          ausprobiert mit:

          onClick="loeschen('1')"

          onClick="return loeschen('1')"

          onClick="javascript:loeschen('1')"

          onClick="javascript: return loeschen('1')"

          alles geht nicht.

          1. alles geht nicht.

            So jetzt mal in "ganzen sätzen", das folgende geht bei dir nicht?

            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"  
                   "http://www.w3.org/TR/REC-html40/strict.dtd">  
            <HTML>  
            <HEAD>  
              <title>onclick Test </title>  
               <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">  
            <style type="text/css">  
            </style>  
            <script type="text/javaScript">  
            function loeschen(id) {  
             if (id=="") {  
              return false;  
             }  
             frage = confirm("Löschen?");  
             if (frage == true) {  
               window.location.href="delete.asp?id="+id;  
             }  
            }  
            </script>  
            </head>  
            <body>  
            <div onclick="loeschen(1);">klick</div>  
            </body>  
            </html>
            

            Dann ist dein browser kaputt.

            Struppi.

            1. alles geht nicht.

              So jetzt mal in "ganzen sätzen", das folgende geht bei dir nicht?

              <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"

              "http://www.w3.org/TR/REC-html40/strict.dtd">
              <HTML>
              <HEAD>
                <title>onclick Test </title>
                 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
              <style type="text/css">
              </style>
              <script type="text/javaScript">
              function loeschen(id) {
              if (id=="") {
                return false;
              }
              frage = confirm("Löschen?");
              if (frage == true) {
                 window.location.href="delete.asp?id="+id;
              }
              }
              </script>
              </head>
              <body>
              <div onclick="loeschen(1);">klick</div>
              </body>
              </html>

              
              >   
              
              Das würde gehen, aber nicht wenn ich die Funktion mit einem Button aufrufe. 
              
              1. Das würde gehen, aber nicht wenn ich die Funktion mit einem Button aufrufe.

                Koönntest du, bevor du solche Aussagen postest, diese überprüfen?

                  
                <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"  
                       "http://www.w3.org/TR/REC-html40/strict.dtd">  
                <HTML>  
                <HEAD>  
                  <title>onclick Test </title>  
                   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">  
                <style type="text/css">  
                </style>  
                <script type="text/javaScript">  
                function loeschen(id) {  
                 if (id=="") {  
                  return false;  
                 }  
                 frage = confirm("Löschen?");  
                 if (frage == true) {  
                   window.location.href="delete.asp?id="+id;  
                 }  
                }  
                </script>  
                </head>  
                <body>  
                <form action="#">  
                <input type="button" onclick="loeschen(1);" value="klick">  
                </form>  
                </body>  
                </html>  
                
                

                Struppi.

                1. <html>
                  <head>
                   <title>Untitled</title>
                   <script type="text/javascript">
                   function deleteTest(id) {
                    if (id=="") { return false; }
                    frage = confirm("Löschen?");
                    if (frage == true) {
                     document.location.href="http://www.google.de?id="+id;
                    }
                   }
                   </script>
                  </head>
                  <body>
                   <a href="#" onclick="deleteTest(1);">Test</a>
                  </body>
                  </html>

                  <html>
                  <head>
                   <title>Untitled</title>
                   <script type="text/javascript">
                   function deleteTest(id) {
                    if (id=="") { return false; }
                    frage = confirm("Löschen?");
                    if (frage == true) {
                     document.location.href="http://www.google.de?id="+id;
                    }
                   }
                   </script>
                  </head>
                  <body>
                   <input type="submit" value="Löschen" onclick="deleteTest(1);">
                  </body>
                  </html>

                  Diese beiden Varianten funktionieren bei mir. Das Problem bei mir liegt daran, dass der Button in einem Formular drin ist. Und das geht bei Firefox nicht.

                  1. Diese beiden Varianten funktionieren bei mir. Das Problem bei mir liegt daran, dass der Button in einem Formular drin ist. Und das geht bei Firefox nicht.

                    Du hast nicht das Beispiel von mir ausprobiert wo der Button in einem Formular ist?

                    Tut mir leid, ich hab langsam keine Lust mehr!
                    Permanent behauptest du was, ohne es zu belegen, wie soll dir da jemand helfen, wenn keiner weiß was du wirklich tust?

                    Struppi.

                    1. Diese beiden Varianten funktionieren bei mir. Das Problem bei mir liegt daran, dass der Button in einem Formular drin ist. Und das geht bei Firefox nicht.

                      Du hast nicht das Beispiel von mir ausprobiert wo der Button in einem Formular ist?

                      Tut mir leid, ich hab langsam keine Lust mehr!
                      Permanent behauptest du was, ohne es zu belegen, wie soll dir da jemand helfen, wenn keiner weiß was du wirklich tust?

                      Struppi.

                      Dein Beispiel funktioniert. Die Lösung wurde ja schon gefunden.
                      Danke

                      1. Dein Beispiel funktioniert. Die Lösung wurde ja schon gefunden.

                        Ja nach 4 Stunden rumraten, weil du nicht mit code rausrücken wolltest, der deine Behauptungen Belegt hätte.

                        Struppi.