相当于 Chrome 中的 onbeforescriptexecute

eve*_*Guy 3 javascript

Chrome 中是否有与 onbeforescriptexecute 或 beforescript execute 事件等效的事件?我想拦截并打印出在页面上的任何 javascript 加载之前正在执行的 javascript 代码。这应该包括脚本标签中的 Javascript 和其他属性,如 onblur 等。
谢谢

Mar*_*edi 5

这是onbeforescriptexecute事件的 polyfill :https : //gist.github.com/jspenguin2017/cd568a50128c71e515738413cd09a890

它适用于 Chrome 和 Edge,但具有讽刺意味的是不适用于 Firefox。

要打印脚本内容,只需console.log(e.script.textContent);在事件处理程序中执行即可。您可以调用e.replacePayload(payload);以更改要运行的脚本,或e.preventDefault()阻止脚本。

e.preventDefault();优先于e.replacePayload(...);,如果e.replacePayload(...);被多次调用,最后一次调用将覆盖之前的所有调用。你可以打电话e.stopPropagation();以确保您的新有效负载得到注册。

不幸的是,textContent对于大型脚本并不总是正常工作。调试应该没问题。此外,它仅适用于“硬编码”内联脚本,不适用于从其他脚本动态注入的脚本。您仍然可以监视这些脚本,但不能干扰它们的执行。

对于 来说有点棘手onblur,您可能必须使用自定义观察者来扫描它。