2016-05-26 8 views
1

私はこのコードをChrome、IE 11で完全に動作させていますが、IE8ではなく、古いもので置き換えようとしましたが、Chromeと同じ結果が得られませんでした。JSコードをIE8で動作させるには?

まあ、これは作業スクリプトです:

jsfiddle.net

私は以下の機能がIE8でサポートされていませんWICH置き換え:

のgetElementsByClassName() のaddEventListener() oninput イベントは、(トリム) firstElementChild textContent

これはコードは、私がプロパティを読み取ることができませんのようなエラーを持っている私が得た問題がここに

//Array.prototype.push.apply(grps, this.contener.getElementsByClassName('categorieDesAptitudes')); 
Array.prototype.push.apply(grps, this.contener.querySelectorAll('.categorieDesAptitudes')); 

// Code 

//while (html = grp.contener.firstElementChild) { 
while (html = (grp.contener.firstElementChild || grp.contener.children[0] || {})) { 
    // data = html.getElementsByClassName('item-search')[0].textContent; 
    data = (html.querySelectorAll('.item-search')[0].textContent || html.querySelectorAll('.item-search')[0].innerText); 
    grp.items.push(this.addItem(html, data, idx_g)); 
} 

です:(

jsfiddle.net

を動作しません「firstElementChild」

は誰がどのようにアイデアを持っていこれを解決する?事前にありがとう

+1

スクロールバーの長さを見た。いいえ、それに対処していません。 –

+0

これらの機能のポリフィルを探します。 – Jerry

+0

エラーは私のクロムのコンソールに従っていますプロパティ 'firstElementChild'を読み取ることができません: 'while(html =(grp.contener.firstElementChild || grp.contener.children [0] ||))){ data =(html.querySelectorAll( '。item-search')[0] .textContent || html.querySelectorAll( '。item-search')[0] .innerText); grp.items.push(this.addItem(html、data、idx_g)); } ' – Chinovski

答えて

1

私はあなたのコードを有効なjsに変換するのに役立つかもしれない唯一の提案は、つまりjavascriptの互換性がある可能性があります。 JavaScriptはEcma標準に基づいていますが、ie8はes5またはes6ではなくes3にのみ準拠しています。私が考えることができる最善の方法は、typescriptからes3までのルールを使用することです。

ので、コンパイルオプションに私はES3にallowjs真のターゲットを設定します。私はあなたのide/textのedittorエクステンションにjslintツールを使用し、ターゲットをes3に再度設定して、それが存在しないなどのことを教えてくれます...これは大規模なプロジェクトでも素晴らしいですが、そこに気をつけてくださいes3は16年前と同じようにファイナライズされていますが、私は2000/99年頃に問題を抱えていて、最後の提案としてes5環境用にpolyfillsを使用しています。

関連する問題