如何在 JavaScript 中添加元标记

Posted

技术标签:

【中文标题】如何在 JavaScript 中添加元标记【英文标题】:How to add meta tag in 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 服务器设置标头。 我相信这里已经回答了这个问题:***.com/questions/7063863/… @Dontfeedthecode 我严重怀疑这个答案是否真的有效。 @Dontfeedthecode:并且依赖于jQuery,这个问题没有提到。 【参考方案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

【讨论】:

以上是关于如何在 JavaScript 中添加元标记的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHP 或 JavaScript 在网页正文中显示描述元标记的内容?

如何使用 JavaScript 将脚本、链接和元标记附加到头部?

如何在不使用 jquery append 的情况下插入元标记?

仅使用 Javascript 从 HTML 字符串中提取元标记

如何在 python 编程中查看和编辑元标记

使用 MVC-5 在查看页面中添加元标记