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和其他浏览器工作 我怎样才能做到

我有一些JavaScript函数,包括以下代码:

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;
    }
}