【问题标题】:fix html5 tags IE8 not working when loading at bottom of page修复html5标签IE8在页面底部加载时不起作用
【发布时间】:2013-09-01 15:32:12
【问题描述】:

为了修复 html5 标签(文章、旁白、页脚、页眉、hgroup、导航、部分)与 IE8 的兼容性,我通常添加以下 javascript:

document.createElement("article");
document.createElement("aside");
document.createElement("footer");
document.createElement("header");
document.createElement("hgroup");
document.createElement("nav");
document.createElement("section");

在css文件中

article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, ection, summary {
    display: block;
}

如果我在“head”中加载 JS,它可以正常工作,但现在我在页面底部加载所有 JS(在关闭“body”之前)不起作用。

有什么想法吗?

谢谢

【问题讨论】:

  • 元素在首次出现之前必须是“已知的”。顺便说一句,你为什么不为此使用html5shiv.js
  • 值得一提的是,您在这里使用的代码只处理了一部分问题(加载带有 HTML5 元素的页面)。但是还有更多的错误可能会抓住您或您的访客。例如,如果您在页面上有动态内容或者您想打印该页面,您的修复将是不够的。您应该使用完整的 html5shiv 来正确解决问题,而不是半途而废。
  • 感谢 Andreas 和 Spudley 提供的信息,我会考虑这两个建议。
  • 请不要使用“修复”标签,除非您在谈论 FIX 协议。

标签: javascript html internet-explorer-8


【解决方案1】:

您应该在 ie8 应该知道的 html5 标签之前加载修复 javascript。否则 ie8 会将这些标签视为 HTMLUnknownElement。 所以,那个js应该在head标签中。顺便说一句,下面的代码不是更小吗? =)

var tags='article|aside|footer|header|hgroup|nav|section'.split('|'), i=0, max=tags.length;
for(;i<max;i++) {
    document.createElement(tags[i]);
}

【讨论】:

    猜你喜欢
    • 2011-10-18
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多