2012-02-20 16 views
9

I file javascript esterni vengono caricati nella mia pagina principale.Perché a volte JavaScript non viene caricato in IE8

A volte in IE8 i miei file javascript non vengono caricati correttamente e il browser genera una serie di errori che dicono che l'oggetto non è riconosciuto.

Se aggiorno la pagina, allora tutto è ok. Se clicco su un link, il problema si ripresenta a volte.

Ho meta tag nella mia intestazione per cancellare la cache su ogni richiesta.

Inoltre sto usando head.load per caricare i miei file js in parallelo.

Lo script head.load si trova nella mia intestazione e quindi i file esterni si trovano alla fine del mio corpo.

Si prega di ricordare che questo problema si verifica solo in IE8. Quindi la mia domanda è ... c'è un trucco che posso usare per assicurarmi che i miei file javascript siano caricati correttamente ogni volta che la pagina viene caricata per IE8?

Qualsiasi aiuto sarebbe molto apprezzato.

Aggiornato come richiesto

<head runat="server"> 
    <meta http-equiv="CACHE-CONTROL" content="NO-CACHE" /> 
    <meta http-equiv="PRAGMA" content="NO-CACHE" /> 
    <meta http-equiv="EXPIRES" content="-1" /> 

    <script type="text/javascript" src="scripts/js/head.load.min.js"></script> 
</head> 
<body> 
<script type="text/javascript"> 
    head.js("scripts/js/jquery-1.6.2.min.js"); 
     head.js("scripts/js/jquery.cookie.js"); 
    head.js("lib/gritter/jquery.gritter.min.js"); 
    head.js("lib/fancybox/jquery.easing-1.3.pack.js"); 
    head.js("lib/fancybox/jquery.fancybox-1.3.4.pack.js"); 
    head.js("scripts/js/jquery.microaccordion.js"); 
    head.js("scripts/js/jquery.stickyPanel.js"); 
    head.js("scripts/js/guidely.js"); 
    head.js("scripts/js/pto.js"); 
</script> 
</body> 
+0

Probabilmente è necessario citare il codice 'head.load'. –

+0

'getta un sacco di errori dicendo che la specificità dell'oggetto non riconosciuto 'sarebbe d'aiuto. – Shad

+0

@damaniel, tu dici che questo codice fallisce solo in IE8. Quali sono gli altri browser su cui l'hai provato? Hai provato un IE8 su un'altra macchina? È possibile riprodurre il problema in modalità provvisoria (opzione della riga di comando '-extoff')? –

risposta

2

Ok i problemi sembra essere come il file head.load carica i miei esterni in IE8. Se carico jquery prima di caricare il mio file head.load e quindi caricare i miei esterni in parallelo alla fine della pagina, quindi non ci sono errori nella pagina.

Questa è sicuramente una soluzione ma vorrei che anche jQuery possa essere caricato nella testa senza errori javascript in IE. Sono sicuro che questo non sarà un errore nelle ultime versioni.

Grazie a tutti per l'input.

@ frederic - Lavoro in un'azienda con 188.000 dipendenti. Se hanno installato nel browser un componente aggiuntivo che causa il crash della mia pagina, non posso fare nulla al riguardo. Inoltre, non penso che questo problema sia causato da eventuali aggiunte. Penso che sia proprio come head.load viene gestito in IE8.

@Shard - Non penso che tu capisca cosa stavo chiedendo e se questo è il caso, mi dispiace per non essere più chiaro. Ad ogni modo ho trovato una soluzione quindi grazie per il tuo contributo.

<head runat="server"> 
    <meta http-equiv="CACHE-CONTROL" content="NO-CACHE" /> 
    <meta http-equiv="PRAGMA" content="NO-CACHE" /> 
    <meta http-equiv="EXPIRES" content="-1" /> 
    <script type="text/javascript" src="scripts/js/jquery.min.js"></script> 
    <script type="text/javascript" src="scripts/js/head.load.min.js"></script> 
</head> 

<script type="text/javascript"> 
    head.js("scripts/js/jquery.cookie.js"); 
    head.js("lib/gritter/jquery.gritter.min.js"); 
    head.js("lib/fancybox/jquery.easing-1.3.pack.js"); 
    head.js("lib/fancybox/jquery.fancybox-1.3.4.pack.js"); 
    head.js("scripts/js/jquery.microaccordion.js"); 
    head.js("scripts/js/jquery.stickyPanel.js"); 
    head.js("scripts/js/guidely.js"); 
    head.js("scripts/js/pto.js"); 
</script> 
+1

Ciao, non voglio essere scortese, ma la tua risposta potrebbe aiutarti con il tuo problema particolare, ma in realtà non risolve il problema generale su deps con headjs, considera di leggere la mia risposta e magari metti un tuo commento. –

0

Guardate la pagina di http://headjs.com/ nell'uso sezione potrete vedere esattamente ciò che è sbagliato con il codice:

// file vengono caricati in parallelo e eseguiti in ordine arrivano head.js (" file1.js "); head.js ("file2.js"); head.js ("file3.js");

Gli script sono state caricando in parallelo e sono eseguite in orario di arrivo, che è abbastanza male per i dipendenze su jQuery, se si desidera che vengano eseguiti al fine di utilizzare questo:

head.js("scripts/js/jquery-1.6.2.min.js", 
     "scripts/js/jquery.cookie.js", 
     "lib/gritter/jquery.gritter.min.js"), 
     "lib/fancybox/jquery.easing-1.3.pack.js", 
     "lib/fancybox/jquery.fancybox-1.3.4.pack.js", 
     "scripts/js/jquery.microaccordion.js", 
     "scripts/js/jquery.stickyPanel.js", 
     "scripts/js/guidely.js", 
     "scripts/js/pto.js"); 

è necessario chiamare js con un elenco di risorse da caricare, non solo chiamare più volte js.

+0

La documentazione di cui parli non era disponibile un anno fa quando ho effettivamente riscontrato questo problema e sono abbastanza sicuro che il caricamento di file esterni separati da virgole non fosse una caratteristica di headjs .... ma è piuttosto interessante che tu possa farlo ora ... grazie per l'input – damaniel

Problemi correlati