gpt4 book ai didi

javascript - 扩展脚本可以在页面脚本之前触发吗?

转载 作者:行者123 更新时间:2023-11-28 08:39:58 24 4
gpt4 key购买 nike

我被迫使用为 IE6 编写的 Web 应用程序(我猜是十多年前),并且仅适用于 IE(怪异模式下的较新版本)。我已经能够使用 Safari 扩展修复一些更严重的 javascript,该扩展可以注入(inject)脚本来分离事件处理程序并将其替换为 DOM 兼容版本。

我现在把注意力转向烦恼,而不是彻底崩溃的事情。大量使用警报来通知用户进度是痛苦的。我认为用一些 css 弹出窗口覆盖 window.alert 函数对我的扩展来说是一个相当不错的补充,但我面临的挑战是在 http post 之后发回的页面,它们所做的第一件事是显示成功(或失败)警报。

根据this Apple documentation “启动脚本在创建文档时但在解析网页之前执行”。我本以为如果页面没有被解析,页面主体脚本标记中的脚本将不会运行,但这不是我看到的行为。相反,从发布响应返回的页面中的任何脚本似乎在我的启动脚本加载之前就执行了。

为了测试这一点,我有一个非常简单的启动脚本,它记录到控制台 location.href 并尝试用 console.log 替换 window.alert。

注入(inject)的启动脚本:

console.log(window.location.href + "loaded killAlert.js") ;
window.alert=function(str) { console.log(str) ; }

测试网页:

<html><head></head>
<body>
<script>alert("this is an alert message") ;</script>
nothing to see here... move along.
</body>
</html>

发生的情况是,当加载嵌入脚本的测试页时,警报会在将任何内容写入 console.log 之前执行。

我的问题—

  • 启动脚本实际上什么时候被调用?
  • 有什么方法可以让它们在页面上的任何脚本之前执行?

虽然这看起来应该是相当简单的,但到目前为止我还无法通过阅读文档、搜索或实验找到解决该问题的方法。我希望其他人已经解决了类似的问题。

最佳答案

 <head>
<script>
(function() {
console.log(window.location.href + "loaded killAlert.js") ;
window.alert=function(str) { console.log(str) ; }
})();
</script>
</head>

尝试匿名调用它,它会在创建后立即执行脚本。希望对您有所帮助。

关于javascript - 扩展脚本可以在页面脚本之前触发吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20629293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com