// ==UserScript== // @name HTML for Gmail // @namespace https://github.com/DeathHackz/HTML-for-Gmail // @version 1.0.0 // @description Send HTML Formatted Emails With Gmail // @match https://mail.google.com/* // @author DeathHackz // @copyright 2019 DeathHackz // @license MIT // @homepageURL https://deathhackz.github.io/HTML-for-Gmail // @supportURL https://github.com/DeathHackz/HTML-for-Gmail/issues // @icon https://raw.githubusercontent.com/DeathHackz/HTML-for-Gmail/master/iocn.png // @updateURL https://raw.githubusercontent.com/DeathHackz/HTML-for-Gmail/master/src/HTML-for-Gmail.meta.js // @downloadURL https://raw.githubusercontent.com/DeathHackz/HTML-for-Gmail/master/src/HTML-for-Gmail.user.js // @run-at document-body // ==/UserScript== document.addEventListener( 'click', event => { if (document.querySelectorAll('td.a8X.gU')) { const buttonHtml = `
 
`; document.querySelectorAll('td.a8X.gU').forEach(element => { if (element.childNodes[0].id != 'convertText') { element.childNodes[0].insertAdjacentHTML('beforebegin', buttonHtml); element.childNodes[0].addEventListener( 'click', event => { let editor; try { editor = element.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[1].childNodes[0].childNodes[0].childNodes[1].childNodes[0].childNodes[0].childNodes[1].childNodes[1].childNodes[0]; } catch (error) { editor = element.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.childNodes[0].childNodes[0].childNodes[0].childNodes[1].childNodes[0].childNodes[0].childNodes[1].childNodes[0].childNodes[0].childNodes[1].childNodes[1].childNodes[0]; } const classListLength = editor.classList.length; if (editor.classList[classListLength - 1] != 'HTML') { editor.classList.add('HTML'); element.childNodes[0].dataset.tooltip = 'Convert to Text'; element.childNodes[0].setAttribute('aria-label', 'Convert to Text'); element.childNodes[0].childNodes[1].childNodes[1].childNodes[1].style.backgroundImage = 'url("https://www.gstatic.com/images/icons/material/system/1x/title_black_20dp.png")'; const rawText = editor.innerText; editor.innerHTML = rawText; } else { editor.classList.remove('HTML'); element.childNodes[0].dataset.tooltip = 'Convert to HTML'; element.childNodes[0].setAttribute('aria-label', 'Convert to HTML'); element.childNodes[0].childNodes[1].childNodes[1].childNodes[1].style.backgroundImage = 'url("https://www.gstatic.com/images/icons/material/system/1x/code_black_20dp.png")'; const htmlText = editor.innerHTML; editor.innerText = htmlText; } }, false ); } }); } }, false );