如何通过jquery/javascript在<head>中添加任何内容?

Jit*_*yas 94 javascript css xhtml jquery

使用CMS,这会阻止编辑<head>元素的HTML源代码.

例如,我想在<title>标记上方添加以下内容:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
Run Code Online (Sandbox Code Playgroud)

nic*_*ckf 144

您可以选择它并正常添加到它:

$('head').append('<link />');
Run Code Online (Sandbox Code Playgroud)

  • 阅读文档:http://docs.jquery.com/Manipulation`insertBefore`,`insertAfter`就是你想要的. (7认同)
  • @PankajTiwari您不会在源视图中看到它,因为代码会将其附加到当前文档,而不是原始源(由服务器提供).这就是FireBug和Chrome Dev工具如此有用的原因. (4认同)
  • 我把它放在document.ready中,但它不会附加到我的头部内容中 (3认同)
  • 我如何控制订单,此链接将放置在哪里 (2认同)

小智 119

JavaScript的:

document.getElementsByTagName('head')[0].appendChild( ... );
Run Code Online (Sandbox Code Playgroud)

像这样制作DOM元素:

link=document.createElement('link');
link.href='href';
link.rel='rel';

document.getElementsByTagName('head')[0].appendChild(link);
Run Code Online (Sandbox Code Playgroud)


Dav*_*und 26

jQuery的

$('head').append( ... );
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

document.getElementsByTagName('head')[0].appendChild( ... );
Run Code Online (Sandbox Code Playgroud)

  • 不要appendChild需要DOM元素吗?即.var elem = document.createElement()document.getElementsByTagName('head')[0] .appendChild(elem); (5认同)
  • 嗯,是。我只是把那部分留为“ ...”,因为我不认为那是问题的中心部分,而且,在撰写本文时,还没有关于他要输入的内容的实际例子。头。但是是的,它确实必须是DOM元素。 (2认同)

Mar*_*lin 9

创建一个临时元素(例如DIV),将HTML代码分配给其innerHTML属性,然后将其子节点HEAD逐个附加到元素.例如,像这样:

var temp = document.createElement('div');

temp.innerHTML = '<link rel="stylesheet" href="example.css" />'
               + '<script src="foobar.js"><\/script> ';

var head = document.head;

while (temp.firstChild) {
    head.appendChild(temp.firstChild);
}
Run Code Online (Sandbox Code Playgroud)

HEAD通过其重写整个内容相比innerHTML,这不会HEAD以任何方式影响元素的现有子元素.

请注意,以这种方式插入的脚本显然不会自动执行,而成功应用样式.因此,如果您需要执行脚本,则应使用Ajax加载JS文件,然后使用执行其内容eval().

  • 您可能没有仔细阅读答案。;-) DIV元素只是一个临时容器,用于_parsing HTML code_。您不应该将DIV本身插入HEAD。您应该插入其_child节点_。请参阅我添加到答案中的示例。 (2认同)

Ben*_*uer 8

在最新的浏览器(IE9 +)中,您还可以使用document.head:

例:

var favicon = document.createElement('link');
favicon.id = 'myFavicon';
favicon.rel = 'shortcut icon';
favicon.href = 'http://www.test.com/my-favicon.ico';

document.head.appendChild(favicon);
Run Code Online (Sandbox Code Playgroud)


Jiv*_*ngs 8

您可以使用innerHTML只是连接额外的字段字符串;

document.head.innerHTML = document.head.innerHTML + '<link rel="stylesheet>...'
Run Code Online (Sandbox Code Playgroud)

但是,您无法保证在第一次加载后浏览器会识别添加到头部的额外内容,并且您可能会在加载额外样式表时获得FOUC(无样式内容的闪存).

我多年没有看过API了,但你也可以使用document.write,这就是为这种行为而设计的.但是,这将要求您阻止页面呈现,直到您的初始AJAX请求完成.


Kin*_*der 5

尝试纯 javascript:

库 JS:

appendHtml = function(element, html) {
    var div = document.createElement('div');
    div.innerHTML = html;
    while (div.children.length > 0) {
        element.appendChild(div.children[0]);
    }
}
Run Code Online (Sandbox Code Playgroud)

类型: appendHtml(document.head, '<link rel="stylesheet" type="text/css" href="http://example.com/example.css"/>');

或 jQuery:

$('head').append($('<link rel="stylesheet" type="text/css" />').attr('href', 'http://example.com/example.css'));
Run Code Online (Sandbox Code Playgroud)