diff --git a/src/routes/api/clipper.js b/src/routes/api/clipper.js index 1735d0eba..bcab106ba 100644 --- a/src/routes/api/clipper.js +++ b/src/routes/api/clipper.js @@ -14,6 +14,8 @@ const path = require('path'); const BAttribute = require('../../becca/entities/battribute'); const htmlSanitizer = require('../../services/html_sanitizer'); const {formatAttrForSearch} = require("../../services/attribute_formatter"); +const jsdom = require("jsdom"); +const { JSDOM } = jsdom; function findClippingNote(clipperInboxNote, pageUrl, clipType) { //Avoid searching for empty of browser pages like about:blank @@ -83,7 +85,7 @@ function addClipping(req) { const existingContent = clippingNote.getContent(); - clippingNote.setContent(`${existingContent}${existingContent.trim() ? "
" : ""}${rewrittenContent}`); + clippingNote.setContent(`${existingContent}${existingContent.trim() ? "
" : ""}${rewrittenContent}`); if (clippingNote.parentNoteId != dailyNote.noteId){ cloneService.cloneNoteToParentNote(clippingNote.noteId, dailyNote.noteId); @@ -188,6 +190,15 @@ function processContent(images, note, content) { // fallback if parsing/downloading images fails for some reason on the extension side ( rewrittenContent = noteService.downloadImages(note.noteId, rewrittenContent); + // Check if rewrittenContent contains at least one HTML tag + if (!/<.+?>/.test(rewrittenContent)) { + rewrittenContent = '

'+rewrittenContent + '

'; + } + // Create a JSDOM object from the existing HTML content + let dom = new JSDOM(rewrittenContent); + + // Get the content inside the body tag and serialize it + rewrittenContent = dom.window.document.body.innerHTML; return rewrittenContent; }