2012-11-09 16 views
10

Mi sono imbattuto in questo progetto: https://github.com/termi/ES5-DOM-SHIM che fornisce un supporto ES5 quasi completo in tutti i browser, compresi i vecchi IE.Utilizzo dello stilo ES5 con jquery/mootools/prototype

L'ho usato in progetti JS puri, ma ora I hanno per includere jquery/mootools/prototype in un progetto (che utilizza Grafici elevati).

Anche solo l'inclusione dello script jQuery causa la generazione di errori in IE8 insieme a questo shim. Come posso mantenere il meglio di entrambi i mondi?

La mia testa documento simile al seguente:

<!--[if lte IE 8]> 
<script src="/js/a.ie8.js"></script> 
<![endif]--> 
<script src="/js/a.js"></script> 
<script src="/js/jquery.1.8.2.js"></script> 
<script src="/js/main.js"></script> 
+1

Che cosa sta facendo il file 'main.js'? Dove ricevi un errore e quale? Ho lasciato la mia sfera di cristallo a casa. – Bergi

+0

@Bergi My main.js è vuoto per ora.L'errore è: 'Oggetto non supporta questa proprietà o metodo - a.ie8.js, riga 46 carattere 428' – Greg

+0

Quindi, qual è la riga 46 di quel file (e il suo contesto)? – Bergi

risposta

1

Assicurarsi che si sta utilizzando la struttura html corretto, ad esempio:

<!DOCTYPE html> 
<head> 
    <meta charset="UTF-8"> 
    <!--[if lte IE 8]> 
    <script src="a.ie8.js"></script> 
    <![endif]--> 
    <script src="a.js"></script> 
    <script src="jquery.1.8.2.js"></script> 
    <script src="main.js"></script> 
</head> 
<body> 

</body> 

Quando ho provato la vostra struttura (senza doctype) sono stato anche ottenendo un errore in IE.

1

Questa è una risposta tardiva e probabilmente non affronta il problema principale. Quindi, a rischio di ottenere downvot ...

Finora posso dire dal progetto Github ES5-DOM-SHIM non solo fornisce shim per le funzionalità di ES5, ma cerca anche di eseguire lo shiming delle funzioni DOM che non sono disponibili su IE. Questo è molto utile se desideri programmare direttamente con l'API DOM.

jQuery fornisce anche un livello di compatibilità che esegue il controllo delle funzionalità per colmare le lacune di implementazione (quindi non è necessario un polyfill DOM se il codice utilizza solo jQuery).

miscelazione sia non sembra essere una buona idea perché:

  • si duplica un sacco di logica ovatta in JS.
  • Polyfill ha delle limitazioni, quindi se jQuery pensa che il tuo browser supporta pienamente una funzione quando non è possibile ottenere alcuni errori imprevisti.

Se desideri solo polyfills JavaScript, cercano con https://github.com/kriskowal/es5-shim (nota ES5-DOM-SHIM si basa su di esso)

0

Prima di tutto, assicurarsi di aggiungere un doctype al tuo documento HTML:

<!DOCTYPE html> 

Deve essere sulla prima riga dei file HTML. Ciò fa sì che il vecchio IE funzioni in modalità conforme agli standard ed eviti alcune stranezze.

D'altra parte, ES5-DOM-SHIM sembra cercare di fare troppo e attualmente si desidera utilizzare jQuery, che già spedisce metodi che si occupano di incoerenze DOM attraverso i browser.

Si consiglia di utilizzare solo jQuery e, se è necessario supportare i nuovi elementi HTML5 e/o elementi personalizzati, utilizzare HTML5shiv (il modo defacto per aggiungere il supporto di elementi HTML5 su IE). Se hai veramente bisogno di spessori ES5/6, quindi utilizza librerie con un supporto più ampio dalla comunità, come es5-shim e es6-shim.

Problemi correlati