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