Justifies p and textarea tags unless they (or their parents) are centered.
// ==UserScript==
// @name Smart Text Justifier
// @namespace http://tampermonkey.net/
// @version 1.3
// @description Justifies p and textarea tags unless they (or their parents) are centered.
// @author Ȼaptain Jøhn “Søap” MacTavish
// @license CC-BY-NC-SA-4.0
// @match *://*/*
// @grant none
// ==/UserScript==
(
function()
{
'use strict';
const JustifyTargetElements = () =>
{
const TargetNodes = document.querySelectorAll('p, textarea');
TargetNodes.forEach
(
Element =>
{
// Check the actual computed alignment from CSS or attributes
const ComputedAlignment = window.getComputedStyle(Element).textAlign;
// Only apply justification if the element is NOT centered
if (ComputedAlignment !== 'center')
{
Element.style.setProperty('text-align', 'justify', 'important');
Element.style.setProperty('text-justify', 'inter-word', 'important');
}
}
);
};
const InitializeObserver = () =>
{
// Initial run
JustifyTargetElements();
// Observe the body for dynamically loaded content (AJAX, infinite scroll)
const ContentObserver = new MutationObserver
(
() =>
{
JustifyTargetElements();
}
);
ContentObserver.observe
(
document.body,
{
childList: true,
subtree: true
}
);
};
// Run the script once the window is stable
if (document.readyState === 'complete')
{
InitializeObserver();
}
else
{
window.addEventListener('load', InitializeObserver);
}
}
)();