Javascript 使用什么代替文档。全部
我有一些JavaScript函数,包括以下代码:Javascript 使用什么代替文档。全部,javascript,internet-explorer,cross-browser,Javascript,Internet Explorer,Cross Browser,我有一些JavaScript函数,包括以下代码: if (document.all) { document.getElementById('subrow').style.display = 'block'; } else { document.getElementById('subrow').style.display = 'table-row'; } 对于文档,IE 11返回false。所有的,因此上面的代码不再工作,但我需要它来为IE的早期版本以及IE 11和其他浏览器工作 我怎样才能做到
if (document.all)
{ document.getElementById('subrow').style.display = 'block'; }
else
{ document.getElementById('subrow').style.display = 'table-row'; }
对于文档,IE 11返回false
。所有的,因此上面的代码不再工作,但我需要它来为IE的早期版本以及IE 11和其他浏览器工作
我怎样才能做到这一点?IE的早期版本不理解表行
,因此我必须能够进行区分。您可以在窗口
中使用并选中“ActiveXObject”,它将应用于所有IE版本
文档。所有的都是(!)一个快速检查,看看它是否是IE
因此:
如果要检查IE,请按以下方式进行,而不是document.all:
if(/msie|trident/i.test(navigator.userAgent)){
document.getElementById('subrow').style.display = 'block';
} else {
document.getElementById('subrow').style.display = 'table-row';
}
注意:Trident是IE的渲染引擎,适用于所有版本的IE。请勿使用功能检测。
试图通过诸如检查文档之类的间接测试来检测浏览器。正如您所发现的,所有的都是非常不可靠的。最佳做法是
相反,如果您想知道是否支持表行
,可以直接进行检查。这使您的代码更具可移植性,因为它不会将其绑定到特定版本。以下是一种基于以下条件的方法:
我对IE7及更高版本不感兴趣。IE7不理解“表行”,IE8+理解display:table-row
…这似乎破坏了Firefox的功能。IE7和IE11起作用-行变为可见。但是Firefox已经不能用了,我很抱歉。我(在我的网站上)的表格行中有一个输入错误。与使用if(/msie/I.test(navigator.userAgent))相比,您的解决方案有什么优点/缺点吗?@martin(!)对IE7有效的更快。它不适用于IE11或Firefox。我很抱歉。我在表格行中有一个输入错误。与使用if(“窗口中的ActiveXObject”)相比,您的解决方案有什么优点/缺点吗?请尝试搜索IE的渲染引擎Trident。我想知道IE11是否会对表格行应用“block”—或者是否已改为使用“表格行”。
if(/msie|trident/i.test(navigator.userAgent)){
document.getElementById('subrow').style.display = 'block';
} else {
document.getElementById('subrow').style.display = 'table-row';
}
function isTableRowSupported() {
try {
var style = document.createElement("div").style;
style.display = 'table-row';
return style.display == 'table-row';
} catch (e) {
return false;
}
}