Offset (). Top gibt einen Fehler in IE7: offset (). Top ist null oder nicht ein Objekt
-
25-10-2019 - |
Frage
Ich benutze das folgende Code, um die Position eines Divs zu beheben, wenn ich nach unten gescrollt wird (damit er im Fenster bleibt). Es funktioniert vollkommen in Ordnung, aber in IE7 bekomme ich den Fehler: offset().top is null or not an object.
$(document).ready(function(){
var msie6 = $.browser == 'msie' && $.browser.version < 7;
if (!msie6) {
var top = $('#comment').offset().top - parseFloat($('#comment').css('margin-top').replace(/auto/, 0));
$(window).scroll(function (event) {
// what the y position of the scroll is
var y = $(this).scrollTop();
// whether that's below the form
if (y >= top) {
// if so, ad the fixed class
$('#comment').addClass('fixed');
} else {
// otherwise remove it
$('#comment').removeClass('fixed');
}
});
}
});
Googeln Ich habe das gefunden (siehe unterer Post von Earl Jenkins) http://api.jquery.com/offset/In dem er diesen speziellen Fehler löst. Aber JQuery & JavaScript -Anfänger, ich weiß nicht, wie ich diese Korrektur implementieren soll, denn in seinem Beitrag verwendet er einen festen Wert (100), und im obigen Code nicht.
Ich habe versucht, dies zu beheben:
var fix = $('#comment').offset();
var top = fix.top - parseFloat($('#comment').css('margin-top').replace(/auto/, 0));
Aber es tut nicht den Trick. Danke für Ihre Hilfe!
Lösung
Ich denke, dass das Problem, auf das Sie geraten sind top
Eigentum des window
Objekt, wenn Ihr #comment
Div war nicht vorhanden.
Dieses Problem ist nicht gut dokumentiert, aber ich bin schon einmal darauf getroffen. Ich fand eine vage Erklärung der Ursache bei Dottoro.com Verweis auf das Fensterobjekt.
Das
window
Objekt ist von überall im JavaScript -Code von überall zugänglich. Verwenden Sie daher keine Variablen mit den gleichen Namen wie die Mitglieder derwindow
Objekt (wenn Sie eine Variable mit demselben Namen wie jedes Mitglied der deklarierenwindow
Objekt das Mitglied derwindow
Objekt bleibt über die zugänglichwindow
Objekt).
Das Kern ist, dass, wenn Sie Ihren variablen Namen von oben in etwas anderes geändert hätten, das Problem verschwunden wäre.
Andere Tipps
Das Problem herausgefunden.
Dieses JavaScript wurde im Kopf jeder Seite geladen, aber auf einer Seite existiert das Div '#Coment'. Irgendwie macht dies im modernen Browser keinen Fehler, aber IE7 hat Probleme mit dem Umgang mit ihm. Jetzt lasse ich dieses Stück Code nur auf dieser bestimmten Seite ausgeführt, auf der #Coment existierte und der Fehler weg ist!