如何通过jQuery / JavaScript添加任何内容<head>?
使用CMS来防止为<head>
元素编辑HTML源代码。
例如,我想在<title>
标签上添加以下内容:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
你可以select它并像往常一样添加到它:
$('head').append('<link />');
JavaScript的:
document.getElementsByTagName('head')[0].appendChild( ... );
使DOM元素如下所示:
link=document.createElement('link'); link.href='href'; link.rel='rel'; document.getElementsByTagName('head')[0].appendChild(link);
jQuery的
$('head').append( ... );
JavaScript的:
document.getElementsByTagName('head')[0].appendChild( ... );
在最新的浏览器(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);
您可以使用innerHTML
来连接额外的字段string;
document.head.innerHTML = document.head.innerHTML + '<link rel="stylesheet>...'
但是,您不能保证添加到头部的额外内容在第一次加载后将被浏览器识别,并且可能会在加载额外样式表时获得FOUC(未格式化内容的闪光)。
我几年没有看过这个API,但是也可以使用document.write
,这是为这种行为devise的。 但是,这将需要你阻止页面渲染,直到你的初始AJAX请求完成。
创build一个临时元素(例如DIV
),将HTML代码(通过Ajax接收)分配给它的innerHTML
属性,然后将其子节点逐个添加到HEAD
元素。 例如,像这样:
var code = '<link rel="stylesheet" href="example.css" />' + '<script src="foobar.js"><\/script> '; var temp = document.createElement('div'); temp.innerHTML = code; var head = document.head; while (temp.firstChild) { head.appendChild(temp.firstChild); }
与仅通过innerHTML
重写整个HEAD
内容相比,这不会以任何方式影响HEAD
元素的现有子元素。
请注意,以这种方式插入的脚本显然不会自动执行,而样式已成功应用。 所以如果你需要执行脚本,你应该使用Ajax加载JS文件,然后使用eval()
来执行它们的内容。
尝试一个JavaScript纯粹:
图书馆JS:
appendHtml = function(element, html) { var div = document.createElement('div'); div.innerHTML = html; while (div.children.length > 0) { element.appendChild(div.children[0]); } }
types: 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'));
与jQuery的你有其他select:
$('head').html($('head').html() + '...');
无论如何它正在工作。 别人说的JavaScript选项也是正确的。