misc bug fixes: links without href; imgages without src

This commit is contained in:
alexadam 2016-09-05 12:13:20 +03:00
parent a9624b8df9
commit 523c314374
2 changed files with 24 additions and 5 deletions

View file

@ -19,6 +19,10 @@ function getImageSrc(srcTxt) {
if (!srcTxt) { if (!srcTxt) {
return ''; return '';
} }
srcTxt = srcTxt.trim();
if (srcTxt === '') {
return '';
}
var isB64Img = isBase64Img(srcTxt); var isB64Img = isBase64Img(srcTxt);
var fileExtension = getFileExtension(srcTxt); var fileExtension = getFileExtension(srcTxt);
var newImgFileName = 'img-' + (Math.floor(Math.random()*1000000*Math.random()*100000)) + '.' + fileExtension; var newImgFileName = 'img-' + (Math.floor(Math.random()*1000000*Math.random()*100000)) + '.' + fileExtension;
@ -75,16 +79,26 @@ function force($content, withError) {
var endEl = '</object>'; var endEl = '</object>';
if (withError) { if (withError) {
$content = $(content); $content = $($content);
preProcess($content); preProcess($content);
} }
$content.find('img').each(function (index, elem) { $content.find('img').each(function (index, elem) {
$(elem).replaceWith(startEl + tagOpen + 'img src="' + getImageSrc($(elem).attr('src').trim()) + '"' + tagClose + tagOpen + '/img' + tagClose + endEl); var imgSrc = getImageSrc($(elem).attr('src'));
if (imgSrc === '') {
$(elem).replaceWith('');
} else {
$(elem).replaceWith(startEl + tagOpen + 'img src="' + imgSrc + '"' + tagClose + tagOpen + '/img' + tagClose + endEl);
}
}); });
$content.find('a').each(function (index, elem) { $content.find('a').each(function (index, elem) {
$(elem).replaceWith(startEl + tagOpen + 'a href="' + getHref($(elem).attr('href').trim()) + '"' + tagClose + $(elem).html() + tagOpen + '/a' + tagClose + endEl); var aHref = getHref($(elem).attr('href'));
if (aHref === '') {
$(elem).replaceWith('');
} else {
$(elem).replaceWith(startEl + tagOpen + 'a href="' + aHref + '"' + tagClose + $(elem).html() + tagOpen + '/a' + tagClose + endEl);
}
}); });
if ($('*').length < maxNrOfElements) { if ($('*').length < maxNrOfElements) {
@ -109,6 +123,7 @@ function force($content, withError) {
return contentString; return contentString;
} catch (e) { } catch (e) {
console.log('Error:', e); console.log('Error:', e);
return '';
} }
} }
@ -145,14 +160,14 @@ function sanitize(rawContentString) {
tattrs = attrs.filter(function(attr) { tattrs = attrs.filter(function(attr) {
return attr.name === 'src'; return attr.name === 'src';
}).map(function(attr) { }).map(function(attr) {
return getImageSrc(decodeHtmlEntity(attr.value).trim()); return getImageSrc(decodeHtmlEntity(attr.value));
}); });
lastFragment = tattrs.length === 0 ? '<img></img>' : '<img src="' + tattrs[0] + '" alt=""></img>'; lastFragment = tattrs.length === 0 ? '<img></img>' : '<img src="' + tattrs[0] + '" alt=""></img>';
} else if (tag === 'a') { } else if (tag === 'a') {
tattrs = attrs.filter(function(attr) { tattrs = attrs.filter(function(attr) {
return attr.name === 'href'; return attr.name === 'href';
}).map(function(attr) { }).map(function(attr) {
return getHref(decodeHtmlEntity(attr.value).trim()); return getHref(decodeHtmlEntity(attr.value));
}); });
lastFragment = tattrs.length === 0 ? '<a>' : '<a href="' + tattrs[0] + '">'; lastFragment = tattrs.length === 0 ? '<a>' : '<a href="' + tattrs[0] + '">';
} else { } else {

View file

@ -67,6 +67,10 @@ function getHref(hrefTxt) {
if (!hrefTxt) { if (!hrefTxt) {
return ''; return '';
} }
hrefTxt = hrefTxt.trim();
if (hrefTxt === '') {
return '';
}
if (hrefTxt.indexOf('#') === 0) { if (hrefTxt.indexOf('#') === 0) {
hrefTxt = window.location.href + hrefTxt; hrefTxt = window.location.href + hrefTxt;
} }