Domanda

Un sito su cui sto lavorando visualizza un errore di runtime intermittente ma solo in IE7 e 8. Questo errore verrà visualizzato in modo quasi casuale (come, potrebbe comparire una volta al caricamento della pagina iniziale o potrebbe non comparire fino all'ennesima pagina caricare). L'errore dice che si è verificato alla riga: 0 e l'errore è " Oggetto richiesto " ;. Sto usando jQuery in tutto il sito, ma disabilitandolo a pezzi (cioè i vari plugin e quant'altro) non ha risolto il problema. Ci sto ancora lavorando, ma voglio ottenere questo " Aiuto! & Quot; su stackoverflow nel caso in cui qualcuno abbia già affrontato qualcosa del genere prima.

L'intermittenza è ciò che mi sta davvero inseguendo.

È stato utile?

Soluzione

Dalla tua risposta, immagino che l'elemento con un id di 'header-section' sia nella parte superiore della pagina e, occasionalmente, la regola css viene applicata prima che il resto della pagina venga caricato. Ciò significa che l'espressione cerca di valutare offsetHeight di 'content-section' prima che quell'elemento esista.

Ho un paio di suggerimenti su come gestirlo, ma dovresti provarli per valutarne l'utilità.

1 / Invece di rendere la regola basata sull'id della "sezione di intestazione", rendila basata sulla sezione di intestazione della classe. Non aggiungere questa classe al markup, ma aggiungila al completamento del caricamento del documento, tramite jquery: lascia l'ID dell'elemento così com'è ...

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

2 / Rendi la regola più tollerante rispetto alla 'sezione contenuto' non trovata - non sono sicuro di quanto spesso viene valutata l'espressione, poiché non ho mai sentito la necessità di usare l'espressione nelle regole CSS, quindi potrebbe non funzionare .

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

Fammi sapere come vai avanti.

P.S. Non ho idea di cosa la regola stia cercando di raggiungere: ho deriso una pagina con quello che presumo sia lo stesso layout e tutto ciò che fa è spostare un sacco di contenuti dalla parte superiore della pagina, in un modo che impedisce da sempre essere visto.

Altri suggerimenti

Sembra che il tuo script stia tentando di accedere a un oggetto prima che il DOM sia stato completamente creato. Ti sei assicurato che la tua funzione sia all'interno della funzione jQuery ready?

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

   });

L'ho capito. Esistono due espressioni utilizzate in un file CSS solo IE. Eccone uno per esempio:

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

Commentando entrambe le istanze che usano queste espressioni risolve il problema. Non so perché questo accada esattamente (e non ho scritto il CSS che lo sta facendo, quindi non avevo idea di nemmeno guardare quel file CSS).

Non può essere un conflitto con altri JS perché c'erano almeno 2 posti in cui questo veniva usato dove nessun altro JS veniva caricato ma l'errore si è ancora verificato. Forse gli ID (sezione contenuto o sezione intestazione) non sono stati trovati per qualche motivo? Non proprio sicuro ... soprattutto perché il comportamento era così incoerente. Hmmm ...

Grazie per la soluzione belugabob

Ho riscontrato lo stesso errore con Oggetto richiesto sulla riga 0. La tua correzione con l'espressione ...? ...: 0 nel CSS per il foglio di stile ie ha fatto il lavoro.

Il motivo per cui viene utilizzato questo tipo di codice, spostando la navigazione / le intestazioni verso l'alto, è legato al SEO. Desideri i tuoi contenuti in alto e la navigazione saggia SE meno importante al di sotto di essi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top