Event-Handling

  • Themenstarter Themenstarter Benutzer007
  • Beginndatum Beginndatum
Nachtrag: Um ehrlich zu sein: das was Du da machst, ist wirklich nur ein Hack, und wie es meistens mit Hacks ist – sie sind nicht besonders schön. Auch hier würde ich Dich, wenn es nicht anders geht, auf MutationObserver verweisen.
Kann man bei dieser relativ neuen Technologie von Hack sprechen, wenn man den Hack aber ohnehin braucht, wenn man alte Browser unterstützen will?

Javascript:
  var MutationObserver = 
    window.MutationObserver || 
    window.WebKitMutationObserver ||
    window.MozMutationObserver;
http://jsbin.com/ivamoh/53/edit?html,js,output
 
Ich meinte nicht den MutationObserver, als ich von Hack sprach, sondern Dein Skript mit dem Timeout (welcher übrigens auch so mit setInterval() besser gelöst ist).

Nachtrag: Dein Hack in schön, könnte so aussehen:
Javascript:
(function() {
  var callback = function() {
    // do something
  };

  var interval = setInterval(function() {
    if ( typeof( addthis ) === 'object' && $( '.addthis-content-row' ).length < 1 ) {
      clearInterval( interval );
      callback();
    }
  }, 5000);
})();
 
Zuletzt bearbeitet:
Ich meinte nicht den MutationObserver, als ich von Hack sprach,..
Schon klar, mein Gehäck ist der Hack, aber das brauche ich, wenn ältere Browser unterstützt werden sollen, weil MutationObserver relativ neu ist, oder nicht?

Aber warum hat setInterval Vorteile gegenüber setTimeout? Deshalb?
The difference is subtle, I believe the setInterval code executes every 1000ms exactly, while the setTimeout waits 1000ms, runs the function, which takes some ms, then sets another timeout. So the wait period is actually greater than 1000ms.
http://stackoverflow.com/questions/729921/settimeout-or-setinterval
 
Also laut caniuse.com liegt die Browserunterstützung bei über 80%, was für mich ausreichend wäre, um es im Produktiveinsatz zu verwenden.

Was die Sache mit setInterval() betrifft, kann ich nur sagen, dass es schöner ist und vor allem Deinem gewünschten Fall logischer entspricht, da Du letztendlich einen Intervall simulierst, aber eben mit einem Timeout.

Nachtrag: Wenn Dir die 80% aber nicht reichen, kannst Du notfalls auch noch ein Polyfill einbinden.

Nachtrag 2: Es gibt zwei Hauptgruppen von Webentwicklern, was das Thema Unterstützung betrifft: einerseits diejenigen, die gerne noch den Internet Explorer der ersten Generation unterstützen wollen, andererseits Menschen wie mich, die irgendwann nur noch so was in ihren Quelltext schreiben:
Javascript:
if ( !window.MutationObserver ) {
  alert( "Come on guy! Das kann doch nicht Dein Ernst sein! Aktualisiere endlich mal Deinen Browser!" );
  window.location.href = "https://www.google.de/chrome/browser/desktop/";
}
 
Zuletzt bearbeitet:
Muahaha, die Meldung, okay, aber das window.location.href ist schon ein wenig frech ;-)
 
Du kannst es auch gerne mit einem confirm() umsetzen:
Javascript:
if ( !window.MutationObserver ) {
  var ret = confirm( "Come on guy! Das kann doch nicht Dein Ernst sein! Aktualisiere endlich mal Deinen Browser!\n\nBrowser jetzt aktualisieren?" );
  if ( ret ) {
    window.location.href = "https://www.google.de/chrome/browser/desktop/";
  } else {
    alert( "Dann eben nicht!" );
    document.getElementsByTagName("body")[0].innerHTML = "";
  }
}
 
document.getElementsByTagName("body")[0].innerHTML = "";
haha ist das dein Ernst? Benutzt du das irgendwo so?
Ich bin ja auch so ein Webentwickler, der nicht den IE6 noch unterstützen will, aber den IE10 leider schon, deshalb ist MutationObserver nocht nicht zu gebrauchen. Ausserdem würde ich darauf sowieso verzichten wenn es irgendwie geht, lieber dort ansetzen wo der DOM manipuliert wird.

Und anstatt nur Chrome vorschlagen (Auch wenn ich Chrome selbst gerne verwende gibt es Leute die nicht unbedingt alles von Google wollen), lieber sowas hier:
http://browsehappy.com/?locale=de
 
@jeipack : Nein, das benutze ich nicht so. Es war nur als Zeichen dafür gedacht, wie sehr ich dafür bin, dass Menschen mal ihren Browser aktualisieren. Oder besser gesagt, dass es die Administratoren mal machen und nicht den verwirrten Argumenten des Personals in der Verwaltung nachgehen, die unbedingt noch den IE6 brauchen – weil und so.
 
Zurück