如何定位特定脚本并使用 jQuery 延迟它?

How do I target a specific script and defer it using jQuery?


问题:
我有一个特定的脚本 below,我希望将其附加到我的代码底部或在它能够加载之前将其完全删除。我能够输入的代码在加载此脚本之前运行。这导致延迟方法在文档 html 上没有出现更改。有没有办法在加载之前添加 "defer"?

目标:
我为什么要达到这个目的?我希望防止在我的目标网页上呈现阻塞 JavaScript。不幸的是,我无法控制将它插入页面的系统。

问题:
那么是否可以在完全加载(或添加"defer")之前找到此脚本并将其删除,或者是否有其他方法可以做到这一点?我愿意接受任何建议,感谢您的宝贵时间!

<script type="text/javascript" src="https://img.en25.com/i/livevalidation_standalone.compressed.js"></script>

您可以将其推迟为:

<script src="script-to-be-defered.js" defer></script>

简短的回答是否定的。回答有点长,但实际上会使问题变得更糟。

由于 html 被加载到 DOM,当它找到脚本时,它会停止解析 html,同时下载并运行脚本,然后继续解析 html。这意味着当您的脚本运行时,其他脚本将不存在于 DOM 中。您的脚本将是 DOM 中的最后一项。并且没有事件可以中断脚本加载。

我确实看到一个解决方案,其中有人使用 html 注释有效地注释掉页面,允许页面 "load",然后使用正则表达式更改内容,然后再次取消注释页面。然而,这实际上会减慢渲染速度,如果您在页面的其他地方确实有评论,就会出现错误。

除了defer或者async,或者把所有的脚本都移到页面底部之外,还有这个解决方案[https://varvy.com/pagespeed/defer-loading-javascript.html],但是真的没有很好的解决方案