We’d been putting off to decorate Christmas tree this year for quite some time.
We made it yesterday, at last.
Christmas tree makes house bright and cheerful.
But Christmas tree without lights in the evening is also beautiful.
*
* Again: this will **not** prevent inline script, e.g.:
* .
*
* This workaround is possible because Safari supports the non-standard 'beforeload' event.
* This allows us to trap the module and nomodule load.
*
* Note also that `nomodule` is supported in later versions of Safari - it's just 10.1 that
* omits this attribute.
* -->
*/
(function () {
const check = document.createElement('script');
if (!('noModule' in check) && 'onbeforeload' in check) {
let support = false;
document.addEventListener(
'beforeload',
(e) => {
if (e.target === check) {
support = true;
} else if (!e.target.hasAttribute('nomodule') || !support) {
return;
}
e.preventDefault();
},
true,
);
check.type = 'module';
const blob = URL.createObjectURL(
new window.Blob([], { type: 'text/javascript' }),
);
check.src = blob;
check.onload = () => {
URL.revokeObjectURL(blob);
};
document.head.appendChild(check);
check.remove();
}
})();