ホームページ  >  記事  >  ウェブフロントエンド  >  IE6-IE9_javascript スキルでの JSON および table.innerHTML の使用によって引き起こされる問題

IE6-IE9_javascript スキルでの JSON および table.innerHTML の使用によって引き起こされる問題

WBOY
WBOYオリジナル
2016-05-16 15:24:121047ブラウズ

1. IE互換モードおよびIEカーネルによるブラウザ互換モードでjQueryのJSON関数を使用すると「JSON未定義」と表示されますが、ブラウザ高速モードに切り替えると正常に表示されます

解決策:

1. json2.jsを使用しているページ(https://github.com/douglascrockford/JSON-js/blob/master/json2.js)に直接導入します。詳しくは説明しない。

2. ページの public js メソッドで決定します

  if(typeof JSON == 'undefined'){ 
  $('head').append($("<script type='text/javascript' src='.../json2.js'>")); //此处的位置为该js文件所在路径
  }

2. ajax を使用する場合、多くの場合、ページ要素を動的に生成し、その要素の innerHTML 属性を使用してページの HTML を埋める必要があります。ただし、使用中に table 要素の innerHTML に値が割り当てられていることが判明した場合、Firefox では問題ありませんが、IE 互換モードでは不明なランタイム エラーが発生します。エラーの例は次のとおりです:


IE6 ~ IE9 では、次の要素 table、thead、tfoot、tbody、tr、col、colgroup、html、title、style、frameset の innerHTML 属性が読み取り専用であることが判明しました。

解決策: 次の js メソッドを呼び出します

function setTableInnerHTML(table, html) {//table 为table对象,html为生成的html字符串
  if (navigator && navigator.userAgent.match(/msie/i)) {
    var temp = table.ownerDocument.createElement('div');
    temp.innerHTML = '<table>' + html + '</table>';//注意此处传进来的html变量包含“<tbody></tbody>”标签  如果HTML变量中没有 则为 '<table><tbody>' + html + '</tbody></table>'
    table.replaceChild(temp.firstChild.firstChild, table.tBodies[0]);//用生成的div中table的tbody替换原table中的tbody
  } else {
    table.innerHTML = html;
  }
}

上記の内容は、IE6 ~ IE9 での JSON と table.innerHTML の使用によって発生する問題をエディターで共有したものです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。