一、在IE相容模式中以及各具有IE核心的瀏覽器相容模式中使用 jQuery 中的JSON函數時出現「JSON未定義」 而切換到瀏覽器高速模式則正常顯示
解 :
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文件所在路径 }
二、使用ajax時,常需要動態產生頁面元素,而使用element上屬性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所引發的問題,希望大家會喜歡。