我正在尝试对Safari进行扩展,以使用户可以使用新的API阻止每个站点的javascript。该API可让您注入一个javascript文件,该文件将在任何内容之前加载到网站上,其功能不如常规javascript,就好像它在HTML页面上运行一样。有没有一种方法可以使用javascript阻止所有javascript?
API含糊地告诉我,“注入的脚本是在网页完全加载之前执行的,因此,当资源添加到网页时,您可以采取措施。”我是否可以挂入一些事件来捕获正在加载的资源并阻止它们?
有一种方法可以阻止most Javascript:在页面加载的最开始处附加一个MutationObserver,并且每当文档更改时,如果找到<script>
标签,请将其删除:
<script>
new MutationObserver((m) => {
console.log('Mutation observer running...');
document.body.querySelectorAll('script').forEach(scr => scr.remove());
})
.observe(document.documentElement, { childList: true, subtree: true });
</script>
<script>
console.log('hi');
</script>