2012-11-09 8 views
10

私はこのプロジェクトを見つけました:https://github.com/termi/ES5-DOM-SHIMこれは古いIEを含むすべてのブラウザでほぼ完全なES5をサポートしています。jquery/mootools/prototypeでES5 shimを使用

私は純粋なJSのプロジェクトでそれを使用してきたが、今私はプロジェクト(つまり、ハイチャートを使用しています)にjqueryの/ MooToolsの/プロトタイプを含めるようにを持っている

jqueryスクリプトを含めても、このシムとともにIE8にエラーがスローされます。どのように私は両方の世界の最高を保つことができますか?

マイドキュメントヘッドは次のようになります。

<!--[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

あなたの 'main.js'ファイルは何をしていますか?どこでエラーが発生するのですか?私はクリスタルボールを自宅に残しました。 – Bergi

+0

@Bergi私のmain.jsは今のところ空です。エラーは次のとおりです: 'オブジェクトはこのプロパティまたはメソッドをサポートしていません - a.ie8.js、行46文字428' – Greg

+0

したがって、そのファイル(およびそのコンテキスト)の46行目は何ですか? – Bergi

答えて

1

例えば、あなたは正しいHTML構造を使用していることを確認してください:

<!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> 

私は(DOCTYPEなし)あなたの構造をテストしたときに私もいましたIEでエラーが発生しました。

1

これは遅れての回答で、主な問題は解決していない可能性があります。だから私はGithubプロジェクトのES5-DOM-SHIMからも分かりますが、ES5機能のシムを提供するだけでなく、IEで利用できないDOM機能をシムしようとしています。これは、DOM APIを使用して直接プログラムする場合に非常に便利です。

jQueryは、実装のギャップを埋めるために機能チェックを行う互換レイヤーも提供しています(したがって、コードではjQueryのみを使用する場合はDOMポリフィルが必要ありません)。

の両方があるため良いアイデアではないようですミキシング:あなたは、あなたのJSにポリフィルロジックの多くを複製している

  • Polyfillには制限があるため、jQueryがブラウザが完全に機能をサポートしていないと思われる場合は、予期しないエラーが発生する可能性があります。

あなただけのJavaScript polyfillsをしたい場合は、https://github.com/kriskowal/es5-shimと試みるが(ES5-DOM-SHIMが、それに基づいています注意してください)

0

まず第一に、あなたのHTML文書にDOCTYPEを追加してください:

<!DOCTYPE html> 

HTMLファイルの最初の行にある必要があります。これは、古いIEを標準に準拠したモードで動作させ、いくつかの欠点を回避します。

一方、ES5-DOM-SHIMは多すぎるように見えますが、現在はjQueryを使用したいと考えています。既に、ブラウザ間でDOMの不一致を処理するメソッドが用意されています。

jQueryを使用し、新しいHTML5要素やカスタム要素をサポートする必要がある場合は、HTML5shiv(IEのHTML5要素サポートを追加する方法)を使用することをおすすめします。 ES5/6シムが本当に必要な場合は、es5-shimes6-shimのようなコミュニティからのより広いサポートを持つライブラリを使用してください。

関連する問題