最近改了一些IE11下一些功能無法實現的項目,發現了有一些IE8下的方法 ,在IE11下被取消或者替代了,如下:
1.JavaScript 運行時錯誤: 對象不支持“attachEvent”屬性或方法;
attachEvent 這個方法在IE11下改成了addEventListener ,所以我這里加了瀏覽器版本判斷 才得以實現了IE8 和IE11下都好用
if (navigator.appName == "Microsoft Internet Explorer" && (navigator.appVersion.match(/8./i) == "8." || navigator.userAgent.indexOf("MSIE 8.0") > 0 || navigator.appVersion.match(/7./i) == "7.")) {
window.attachEvent("onload", OverrideBaseFunction);
} else {
window.addEventListener("onload", OverrideBaseFunction);
}
2.無法獲取未定義或 null 引用的屬性“tags”
因為這里引用了Jquery,但是在下面沒有用到
源代碼: var radios=document.body.all.tags("INPUT");
for(var i=0;i<radios.length;i++)
{
if(radios[i].type=="radio")
{
if(radios[i].checked)
{
type=radios[i].value;
break;
}
}
}
改成:
type =$('input:radio[name*="type"]:checked').val(); 因為引用的是Jquery但是沒有使用到,所用用Jquery寫一句話
var inputs=document.getElementById("cblProcess").all.tags("INPUT");
var isOne=false;
for(var i=0;i<inputs.length;i++)
{
if(inputs[i].type=="checkbox"&&inputs[i].checked)
{
isOne=true;
break;
}
}
3.JavaScript 運行時錯誤: 無法獲取未定義或 null 引用的屬性“tags”
源代碼: var tds=tr.all.tags("TD");
var result="";
for(var i=0;i<tds.length;i++)
{
var tdText=tds[i].innerText;
if(i>0)
result+=";"+tdText;
else
result+=tdText;
}
改成:var result ="";
$(tr).each(function(){
$(this).children("TD").text(function(i,text){
if(i>0 && text !="")
{
return ";" + text;
}
});
result = $(this).children("TD").text();
$(this).children("TD").text(function(i,text){
if(i>0 && text !="")
{
return text.substr(1);
}
});
});