IE6-IE9_javascript 기술에서 JSON 및 table.innerHTML을 사용하여 발생하는 문제

WBOY
풀어 주다: 2016-05-16 15:24:12
원래의
1086명이 탐색했습니다.

1. IE 호환 모드 및 IE 커널과의 브라우저 호환 모드에서 jQuery의 JSON 기능을 사용할 때 "JSON undefine"이 표시되지만 브라우저 고속 모드로 전환하면 정상적으로 표시됩니다

해결책:

1. 사용 중인 페이지에 json2.js를 직접 도입합니다(https://github.com/douglascrockford/JSON-js/blob/master/json2.js). 자세히 설명하지 않습니다.

2. 페이지의 공개 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을 사용하여 발생하는 문제를 편집자가 공유한 내용입니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿