在我的角應用程序使用所見即所得之一我可以插入鏈接沒有協議。這很不好:javascript:閱讀純html字符串和使用DOMparser更改鏈接路徑
我需要解析字符串和更改所有鏈接的
,我嘗試這樣做(如果大公沒有協議http://..):
var content = '<p>7</p><p>77</p><p><br></p><p><a href="http://example.com" rel="nofollow">http://example.com</a></p><p><br></p><p><a href="example.com" target="_blank">example.com</a></p><p><br></p><p><a href="ftp://localhost">ftp://localhost</a></p><p><br></p><p><a href="localhost">localhost</a><br></p>';
var addProtocolToLinks = function(URL){
var protocols = ['http', 'https', 'ftp', 'sftp', 'ssh', 'smtp'];
var withProtocol = false;
if (URL.length > 0){
protocols.forEach(function(el) {
if (URL.slice(0,4).indexOf(el) > -1){
withProtocol = true;
}
});
var newURL = URL;
if (!withProtocol){
newURL = 'http://' + URL;
}
console.log(newURL + ' ' + URL);
return newURL;
}
};
var parser = new DOMParser();
var doc = parser.parseFromString(content, "text/html");
var links = doc.getElementsByTagName("a");
for(var i=0; i<links.length; i++) {
links[i].setAttribute('href', addProtocolToLinks(links[i].href));
console.log('result: ' + links[i].getAttribute('href'));
}
console.log('result html: ');
console.log(doc); // also i need to fetch only my var content part, without html, body etc
但由於某些原因,它無法正常工作。我做錯了什麼?
))確保大公我的內容是動態的,我不僅可以將其更改爲''
)...取不這樣做) – brabertaser19那麼你可以創建你的函數內的容器 - 我編輯我的答案。 –