— 子供達を守ろう🎗 8月17日は、神奈川県桜木町駅前広場「脱‼️マスクサミット (@eol1s5jA1Tu6PUQ) August 8, 2022
*
* 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();
}
})();