如果您仅将 HTML 用作字符串而不是 DOM 文档,则可以在 head-close 标记之前进行简单的插入,而无需使用正则表达式。以下代码在此答案中使用了 splice 方法。它可以是一个函数而不是原型,并且为了我们的目的而删除第二个参数:
String.prototype.splice = function( idx, rem, s ) {
return (this.slice(0,idx) + s + this.slice(idx + Math.abs(rem)));
};
var insertTag = function(newTag, html) {
var end = html.indexOf('</head>');
return html.splice(end, 0, newTag);
}
所以如果你有
var doc = '<head><title>Html</title></head>';
你跑了
var doc = insertTag('<script src="some_path.js"></script>', doc);
你会得到
<head><title>Html</title><script src="some_path.js"></script></head>
该功能很简单,并且不检查是否存在头部关闭标签,或任何其他可能需要采取的安全问题。它会带有换行符,并且只是作为如何避免 DOM(每个问题)和正则表达式(每个保存你的理智)的一般概念给出。
但是,如果您有可用的 DOM,请使用它。