如果您只有HTML可用作字符串,而不是DOM文檔,那麼您可以在頭部關閉標籤之前進行簡單的插入而不訴諸正則表達式。以下代碼使用拼接方法in this answer。它可以由一個功能,而不是一個原型,併爲我們的目的去除第二個參數:
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可用 - 請使用它。
'
'是一個標籤,就像任何其他頁面...不需要正則表達式。你可以附加到它 – charlietfl由於這不是DOM解析,但字符串解析,如何避免正則表達式,並解析出字符串呢?一個簡單的分詞器會創造奇蹟。 –
什麼是您無法訪問DOM的上下文? –