【问题标题】:How to add meta tag in JavaScript如何在 JavaScript 中添加元标记
【发布时间】:2013-09-29 16:56:11
【问题描述】:

我想为特定页面添加<meta http-equiv="X-UA-Compatible" content="IE=edge">

但我的页面是在一个HTML 标记内呈现的。单击不同的模板时,只有内容会发生变化。所以我不能在<HEAD> 部分添加<meta>

有什么方法可以使用 javascript 添加 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 吗?

【问题讨论】:

  • 你不能用 JavaScript 做元标记。您可以将标签添加到模板中,也可以从 HTTP 服务器设置标头。
  • 我相信这里已经回答了这个问题:stackoverflow.com/questions/7063863/…
  • @Dontfeedthecode 我严重怀疑这个答案是否真的有效。
  • @Dontfeedthecode:并且依赖于jQuery,这个问题没有提到。

标签: javascript meta-tags


【解决方案1】:

你可以添加它:

var meta = document.createElement('meta');
meta.httpEquiv = "X-UA-Compatible";
meta.content = "IE=edge";
document.getElementsByTagName('head')[0].appendChild(meta);

...但如果在运行时,浏览器已经决定如何呈现页面,我不会感到惊讶。

这里真正的答案必须是首先从服务器输出正确的标签。 (遗憾的是,如果你需要支持 IE,你不能只是没有标签。:-|)

【讨论】:

  • 我可以确认动态添加元标记在 IE8 中不起作用。
  • 我已经能够通过使用document.write 替换整个文档内容来强制Quirks 而不是IE 7 标准。也许有一种方法可以在 IE8 中创建一个新的文档对象并将当前文档替换为该新文档,这有望触发对文档模式的重新评估。 createDocument 函数在 IE8 中不可用,但我想我们可以依靠 iframe 来创建一个新的文档实例。
  • IE 糟透了。在 IE 中不使用此功能,因为一旦页面渲染开始,n 就指定了内容或存在冲突,IE 支持死人,即 IE7。
  • 我可以改用document.head.appendChild()吗?
  • @marcellothearcane - 如果您的浏览器支持,可以。我认为所有现代人都这样做。
【解决方案2】:
$('head').append('<meta http-equiv="X-UA-Compatible" content="IE=Edge" />');

var meta = document.createElement('meta');
meta.httpEquiv = "X-UA-Compatible";
meta.content = "IE=edge";
document.getElementsByTagName('head')[0].appendChild(meta);

虽然我不确定它是否会产生影响,因为它会在页面加载后生成

如果您想为页面描述添加元数据标签,请使用 设置您的 DNN 页面以添加描述和关键字。超过 也就是说,修改 HEAD 时最好的方法是动态 通过第三方模块将代码注入 HEAD。

发现于http://www.dotnetnuke.com/Resources/Forums/forumid/7/threadid/298385/scope/posts.aspx

如果幸运的话,这可能允许其他元标记

额外的 HEAD 标签可以放在页面设置 > 高级 设置 > 页眉标签。

发现于http://www.dotnetnuke.com/Resources/Forums/forumid/-1/postid/223250/scope/posts.aspx

【讨论】:

    【解决方案3】:

    像这样?

    <script>
    var meta = document.createElement('meta');
    meta.setAttribute('http-equiv', 'X-UA-Compatible');
    meta.setAttribute('content', 'IE=Edge');
    document.getElementsByTagName('head')[0].appendChild(meta);
    </script>
    

    【讨论】:

    • 你不需要setAttributehttpEquivcontent都是reflected
    【解决方案4】:

    试试

    document.head.innerHTML += '&lt;meta http-equiv="X-UA-..." content="IE=edge"&gt;'

    【讨论】:

      【解决方案5】:

      @marcellothearcane 指定,对于现代浏览器,您还可以使用:

      var meta = document.createElement('meta');
      meta.httpEquiv = "X-UA-Compatible";
      meta.content = "IE=edge";
      document.head.appendChild(meta);
      

      此处支持的浏览器:document.head

      【讨论】:

        猜你喜欢
        • 2013-05-29
        • 2023-03-25
        • 2012-01-26
        • 2012-01-25
        • 1970-01-01
        • 1970-01-01
        • 2021-09-03
        • 1970-01-01
        • 2020-04-10
        相关资源
        最近更新 更多