Frage

Eine Seite, die ich auf Displays einen intermittierenden Laufzeitfehler arbeite aber nur in IE7 und 8. Diesem Fehler wird fast zufällig erscheinen (wie es bei dem ersten Seite zu laden einmal auftauchen kann oder nicht bis zum n-ten Seite Pop-up Belastung). Der Fehler sagt es in Zeile aufgetreten: 0 und der Fehler „Objekt erforderlich“. Ich bin mit dem gesamten Website jQuery aber deaktivieren, dass in Stücken (das heißt die verschiedenen Plugins und so weiter) haben das Problem nicht gelöst. Ich bin Ankurbeln noch auf, aber wollen diese bekommen „Help!“ out auf Stackoverflow, falls jemand mit so etwas wie dies vor behandelt.

Die intermittency davon ist, was wirklich mein Arsch ist Aufspringen.

War es hilfreich?

Lösung

Aus Ihrer Antwort, würde ich vermuten, dass das Element mit der ID ‚Kopfschnitt‘ ist am oberen Rand der Seite und gelegentlich wird die CSS-Regel, bevor der Rest der Seite geladen angewendet wird. Dies bedeutet, dass der Ausdruck versucht, den offset ‚Content-Bereich‘ zu bewerten, bevor das Element vorhanden ist.

Ich habe ein paar Vorschläge, wie damit umzugehen, aber man würde sie, um zu versuchen, um ihre Nützlichkeit zu bewerten.

1 / Statt die Regel machen auf die ID der ‚Kopfschnitt‘ basiert, ist es auf die Klasse ‚Kopfschnitt basiert. Verpassen Sie nicht diese Klasse das Markup hinzufügen, aber es nach Abschluss der Dokumentlade hinzufügen, über jquery - lassen Sie die ID des Elements, wie es ist ...

$(document).ready(function(){
  $("#header-section").addClass("header-section");
});

2 / Make die Regel tolerant des ‚content-Bereichs‘ nicht gefunden werden - nicht sicher, wie oft der Ausdruck ausgewertet wird, da ich nie die Notwendigkeit Ausdruck zu verwenden, in CSS-Regeln gefühlt habe, so kann dies nicht funktionieren .

#header-section {margin-top: expression((0 - (this.offsetHeight + (document.getElementById("content-section") ? document.getElementById("content-section").offsetHeight : 0))) + "px");}

Lassen Sie mich wissen, wie Sie erhalten.

P. S. Ich habe keine Ahnung, was die Regel zu erreichen versucht - ich verspottet eine Seite mit dem, was ich nehme an, das gleiche Layout, und alle es tut, ist eine Menge des Inhalts aus der Spitze von der Seite zu bewegen, in einer Weise, die verhindert es jemals gesehen zu werden.

Andere Tipps

Es scheint, wie Ihr Skript ein Objekt zuzugreifen versucht sein könnte, bevor das DOM vollständig erstellt wurde. Haben Sie stellen sicher, dass Sie Funktion innerhalb der jQuery-Ready-Funktion ist?

   $(document).ready(function() {
          // put all your jQuery goodness in here.

   });

ich es herausgefunden. Es gibt zwei Ausdrücke in einem IE nur CSS-Datei verwendet wird. Hier ist ein Beispiel:

#header-section {margin-top: expression((0 - (this.offsetHeight + document.getElementById("content-section").offsetHeight)) + "px");}

beide Instanzen, die diese Ausdrücke verwenden, kommentierte heraus löst das Problem. Nicht sicher, warum dies genau geschieht (und ich habe nicht die CSS schreiben, das so tut, ich hatte keine Ahnung, um auch in dieser CSS-Datei anschauen).

Es kann nicht um einen Konflikt mit anderen JS sein, weil es mindestens 2 Plätze waren diese benutzt wurde, in denen keine anderen JS überhaupt geladen noch der Fehler immer noch aufgetreten. Vielleicht ist die IDs (Content-Abschnitt oder Kopfteil) können aus irgendeinem Grunde nicht gefunden werden? Nicht wirklich sicher ... vor allem, wie sich das Verhalten so widersprüchlich war. Hmmm ...

Danke für die Lösung belugabob

erleben ich den gleichen Fehler mit erforderlichem Objekt auf der Leitung 0. Ihr fix mit dem Ausdruck ... ...:. 0 in der CSS für das dh Sheet hat den Job

Der Grund, warum diese Art von Code verwendet wird, das Bewegen der Navigation / Header nach oben, ist SEO verwendet. Sie möchten Ihre Inhalte auf der Oberseite, und die weniger wichtigen SE weise Navigation darunter.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top