jQuery .css("margin-top", Wert) nicht aktualisieren im IE 8 (Standard-Modus)

Baue ich ein auto-follow div, die gebunden ist an die $(window).scroll () - Ereignis. Hier ist mein JavaScript.

var alert_top = 0;
var alert_margin_top = 0;

$(function() {
  alert_top = $("#ActionBox").offset().top;
  alert_margin_top = parseInt($("#ActionBox").css("margin-top"));

  $(window).scroll(function () {
    var scroll_top = $(window).scrollTop();
    if(scroll_top > alert_top) {
      $("#ActionBox").css("margin-top", ((scroll_top-alert_top)+(alert_margin_top*2))+"px");
      console.log("Setting margin-top to "+$("#ActionBox").css("margin-top"));
    } else {
      $("#ActionBox").css("margin-top", alert_margin_top+"px");
    };
  });
});

Diesem code wird davon ausgegangen, dass es diese CSS-Regel in Kraft

#ActionBox {
  margin-top: 15px;
}

Und es nimmt ein element mit der id "ActionBox" (in diesem Fall ein div). Das div-Element positioniert ist, in ein linksbündiges Menü, das nach unten läuft die Seite, so ist es Startoffset rund 200 px). Das Ziel ist, starten Sie das hinzufügen, um den margin-top Wert, wenn der Anwender bereits gescrollt hat über den Punkt, wo die div beginnen zu verschwinden aus der Spitze des browser-viewport (ja ich weiß, wenn er auf position: fixed würde das gleiche tun, aber dann würde es verdecken den Inhalt unter die ActionBox, aber immer noch im Menü).

Nun die Konsole.Protokoll zeigt an, dass das Ereignis ausgelöst jedes mal, wenn es sollte, und es ist die Einstellung des richtigen Wertes. Aber in einigen Seiten in meinem web-app die div nicht neu gezeichnet. Dies ist besonders seltsam, weil in den anderen Seiten (im IE) der code wie erwartet funktioniert (und es funktioniert jedes mal in FF, Opera und WebKit). Alle Seiten bewerten (0 Fehler und 0 Warnungen gemäß der W3C-validator und der FireFox HTMLTidy Validator), und keine JS-Fehler ausgelöst werden (nach der IE-Developer-Toolbar und Firebug). Einen anderen Teil auf dieses Geheimnis, wenn ich deaktivieren Sie die #ActionBox margin-top in der Regel in den HTML-Style-explorer in den IE-Developer-Tools dann die div springt sofort wieder zurück in die neu justiert Ort, den es haben sollte, wenn das scroll-Ereignis ausgelöst hatten einen redraw. Auch wenn ich force IE8 in den Quirks-Modus oder compatibility-Modus dann auch ein update ausgelöst.

Eine Weitere Sache, es funktioniert wie erwartet im IE7 und IE 6 (Dank der wunderbaren IETester)

InformationsquelleAutor der Frage Jason Sperske | 2010-02-23

Schreibe einen Kommentar