javascript - 使用什么代替 document.all

标签 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 为 document.all 返回 false 所以上面的代码不再有效,但我需要它适用于早期版本的 IE 以及 IE 11 和其他浏览器。

我怎样才能做到这一点?早期版本的 IE 不理解 table-row 所以我必须能够区分。

最佳答案

不要——使用特征检测。

正如您所发现的,尝试使用间接测试(例如检查 document.all)来检测浏览器是非常不可靠的。最佳做法是 use feature detection, not browser detection .

相反,如果您想知道是否支持 table-row,您可以直接检查。这使您的代码更具可移植性,因为它不会将其绑定(bind)到特定版本。这是您可以根据 Modernizr display test for table layout 执行此操作的一种方法:

function isTableRowSupported() {
    try {
        var style = document.createElement("div").style;
        style.display = 'table-row';
        return style.display == 'table-row';
    } catch (e) {
        return false;
    }
}

jsFiddle demo

关于javascript - 使用什么代替 document.all,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20992387/

相关文章:

javascript - div 元素被添加到 body 之外

javascript - 有人知道如何计算文档尺寸,而不是 Javascript 中的视口(viewport)尺寸吗?

javascript - 具有相同 url 的已更改图像不会在 IE 中重新加载

javascript - 有没有更短的方法来编写canvas html代码?我想尽可能避免使用图像

javascript - Wordpress/Gravity Forms - 如何根据选中的复选框显示/隐藏单个 <ul> 列表中的元素?

CSS:在 Firefox、IE 中替换 -webkit-line-clamp

css - IE 8/9 的转换矩阵问题

html - 显示 :flex for the Inernet explorer? 的最佳替代方案是什么

css - - 跨浏览器的 webkit 支持

javascript - 如何在没有回调的情况下获取有关元素的信息