如何在 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>
【讨论】:
你不需要setAttribute
,httpEquiv
和content
都是reflected。【参考方案4】:
试试
document.head.innerHTML += '<meta http-equiv="X-UA-..." content="IE=edge">'
【讨论】:
【参考方案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 的情况下插入元标记?