bra*_*r19 14 html javascript jquery domparser
在我使用WYSIWYG之一的角度应用程序中,我可以插入没有协议的链接.这很糟糕:
我需要解析字符串并更改所有链接(如果没有协议到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
Run Code Online (Sandbox Code Playgroud)
但由于某些原因,它无法正常工作.我做错了什么?
如果我完全理解你的问题,这应该可行......
function jsF_addHTTP( url )
{
if (url !== "")
{
// Insert HTTP if it doesn't exist.
if ( !url.match("^(http|https|ftp|sftp|ssh|smtp)://") )
{
url = "http://" + url;
}
}
return url;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
837 次 |
| 最近记录: |