Manque: Meldung für 1 sec zeigen

Hallo,

ich möchte für ca. 1 sec eine Meldung zeigen, aber nicht die Verarbeitung anhalten mit alert().

Kann man die alert- Fläche wieder verschwinden lassen, einen Klick of OK simulieren?

Gruß, Manque

  1. Hi,

    ich möchte für ca. 1 sec eine Meldung zeigen, aber nicht die Verarbeitung anhalten mit alert().

    schön, tu das. ;-)

    Kann man die alert- Fläche wieder verschwinden lassen, einen Klick of OK simulieren?

    Nein. Du kannst aber ein anderes Element absolut positionieren, so dass es den Rest der Seite überlagert, dieses Element per CSS ausblenden (mit display:none), und per Javascript kurzzeitig wieder einblenden.

    Ciao,
     Martin

    --
    Der Afrika-Forscher wird gefragt: "Stimmt es, dass man nicht von Löwen angefallen wird, wenn man eine Fackel trägt?" - "Kommt drauf an. Man muss die Fackel sehr schnell tragen."
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  2. Moin!

    "Der Martin" hat Dir schon das wichtigste beschrieben. Das noch offene Geheimnis liegt in der Methode http://de.selfhtml.org/javascript/objekte/window.htm#set_timeout@title=window.setTimeout

    <div id="meldung" style="display_none; position:absolute; top:30%; left:30%; width:30%; z-index:99; background-color:#faa"></div>  
    <input type="button" value="KlickMich" onclick="MeldungAnzeigen('Danke sehr!')" />  
    <script type="text/javascript">
    
    function MeldungAnzeigen(str) {  
       document.getElementById('Meldung').innerHTML=str;  
       document.getElementById('Meldung').style.display="block";  
       window.setTimeout("MeldungAusblenden()", 1000);  
    }  
      
    function MeldungAusblenden() {  
       document.getElementById('Meldung').style.display="none";  
    }
    

    </script>

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix

    1. Om nah hoo pez nyeetz, fastix®!

      ich darf dich auf einen Fehler und eine Ungeschicktheit hinweisen:

      <div id="_m_eldung"

      document.getElementById('_M_eldung')

      document.getElementById('_M_eldung')

      function MeldungAusblenden() {
         document.getElementById('_M_eldung').style.display="none";
      }

        
      <insider>War das nicht vor langer Zeit bei dir schon mal so?</insider>  
        
      Es ist sicherlich nicht günstig, das DOM per getElement... mehrmals zu durchsuchen. Besser ist es wohl eine Variable zu definieren  
        
      `var Meldung = document.getElementById('meldung');`{:.language-javascript}  
        
      Matthias
      
      -- 
      1/z ist kein Blatt Papier.  
      ![](http://www.billiger-im-urlaub.de/kreis_sw.gif)  
      
      
      1. Moin!

        Om nah hoo pez nyeetz, fastix®!

        ich darf dich auf einen Fehler und eine Ungeschicktheit hinweisen:

        Ok. Das groß/klein ist natürlich ein klassischer Typo und mein Fehler.

        Es ist sicherlich nicht günstig, das DOM per getElement... mehrmals zu durchsuchen.

        Aber wenn, dann machen wir das ganz richtig:

        <div id="meldung" style="display_none; position:absolute; top:30%; left:30%; width:30%; z-index:99; background-color:#faa;"></div>  
        <input type="button" value="KlickMich" onclick="MeldungAnzeigen('Danke sehr!')" />  
          
        <!--Das Skript muss mit der Änderung aber unter dem HTML, jedenfalls nach dem div mit der ID 'meldung'  notiert werden, weil die Ziele 1 sonst nur zu einer Fehlermeldung führt. -->  
          
        <script type="text/javascript">
        
        var oMeldung=document.getElementById('meldung');  
          
        function MeldungAnzeigen(str) {  
           oMeldung.innerHTML=str;  
           oMeldung.style.display="block";  
           window.setTimeout("MeldungAusblenden()", 1000);  
        }  
          
        function MeldungAusblenden() {  
           oMeldung.style.display="none";  
        }
        

        </script>

        Was macht Dich eigentlich so sicher, dass der Zugriff auf ein mit einer ID versehenes Element zu einem "Durchsuchen" führt? Ich würde eher denken der Zugriff erfolgt wahlfrei und geht demnach sehr schnell. Wissen können das natürlich nur die Autoren des jeweiligen Javascript-Interpreters.

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix

        1. Om nah hoo pez nyeetz, fastix®!

          Was macht Dich eigentlich so sicher, dass der Zugriff auf ein mit einer ID versehenes Element zu einem "Durchsuchen" führt? Ich würde eher denken der Zugriff erfolgt wahlfrei und geht demnach sehr schnell.

          Schreib doch mal ein Script und teste es aus ;-)

          Matthias

          --
          1/z ist kein Blatt Papier.

        2. Hallo,

          Aber wenn, dann machen wir das ganz richtig:

          Besser wäre Unobtrusive JavaScript – also u.a. das Registrieren der Event-Handler mit JavaScript.

          var oMeldung=document.getElementById('meldung');

          Wie gesagt, als globale Variable ist diese überflüssig, man sollte sie zumindest als lokale Variable z.B. in eine [link:http://molily.de/js/organisation-module.html#scope@title=Selbstausführende Funktion] kapseln. Oder man gruppiert die zwei Methoden und das Element mit einem [link:http://molily.de/js/organisation-module.html#object-literal@title=Object-Literal], dann wird nur eine globale window-Eigenschaft erzeugt. Beispiel:

          [code lang=javascript]var meldung = {
            init: function () {},
            element: function () {},
            zeige: function () {},
            verstecke: function () {}
          };

            
          Idealerweise startet man die Initialisierung [beim load-Ereignis oder DOM-ready](http://molily.de/js/event-handling-onload.html).  
            
          Siehe auch  
          <http://aktuell.de.selfhtml.org/artikel/javascript/fader-framework/>  
            
          
          >    window.setTimeout("MeldungAusblenden()", 1000);  
            
          Das Übergeben eines Strings ist unnötig, man kann auch direkt die Funktion übergeben, wie an allen Stellen in JavaScript, wo man Funktionen als Callbacks oder Handler einsetzt.  
            
          `window.setTimeout(MeldungAusblenden, 1000);`{:.language-javascript}  
          bzw. in obigem Beispiel  
          `window.setTimeout(meldung.verstecke, 1000);`{:.language-javascript}  
            
          Mathias
          
      2. Es ist sicherlich nicht günstig, das DOM per getElement... mehrmals zu durchsuchen. Besser ist es wohl eine Variable zu definieren

        var Meldung = document.getElementById('meldung');

        Es ist noch ungünstiger, eine globale Variable dafür anzulegen. Im Übrigen existiert schon eine, die heißt so, wie die ID des Elements lautet.

        Mathias

        1. Om nah hoo pez nyeetz, molily!

          var Meldung = document.getElementById('meldung');

          Es ist noch ungünstiger, eine globale Variable dafür anzulegen. Im Übrigen existiert schon eine, die heißt so, wie die ID des Elements lautet.

          mit welcher Browserunterstützung?

          Matthias

          --
          1/z ist kein Blatt Papier.

          1. Im Übrigen existiert schon eine, die heißt so, wie die ID des Elements lautet.

            mit welcher Browserunterstützung?

            Alle großen aktuellen. Das ist, wie vieles in HTML5, nichts neues, sondern nur dem Verhalten des IEs nachgebaut, welches die anderen Browser übernommen haben.

            Firefox erlaubt, wie es die Spezifikation auch erlaubt, den Zugriff nur im Quirks-Modus und hat das Feature ein wenig versteckt. window.foo geht nicht, nur der direkte Zugriff über foo. Zudem wirft Firefox eine Deprecated-Warnung »Ein Element wurde im globalen Geltungsbereich per ID/Name referenziert. Verwenden Sie den W3C-Standard document.getElementById() stattdessen.« Konsequent ist das nicht, denn auch Firefox im Standard-Modus schleppt einige dieser Shortcuts mit z.B. bei Frames und Iframes, und bei document sowieso.

            Dass dieses Verhalten existiert, heißt nicht unbedingt, dass man das nutzen sollte – es ist noch nicht browserübergreifend gleich implementiert und der Algorithmus macht ohnehin etwas anderes als ein einfaches, eindeutiges getElementById –, man sollte sich vor allem darüber im Klaren sein, dass bereits eine globale Variable mit einem Namen wie die ID des Elements existieren kann. Vor allem wenn man meint, eine weitere für denselben Zweck anlegen zu müssen. Insbesondere var meldung = document.getElementById('meldung'), was im IE zu einer Exception führen kann.

            Mathias

        2. @@molily:

          nuqneH

          Im Übrigen existiert schon eine, die heißt so, wie die ID des Elements lautet.

          Sollte der Microsoft-Kram Standard werden?

          “It is possible that this will change.” Hm.

          “Browser vendors are considering limiting this behaviour to quirks mode.” Aha.

          Qapla'

          --
          Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
          (Mark Twain)
          1. Sollte der Microsoft-Kram Standard werden?

            Er sollte, weil er browserübergreifend implementiert ist, spezifiziert werden, ja.

            Mathias