我被迫使用为IE6编写的网络应用程序(十多年前我猜),并且只适用于IE(怪癖模式下的新版本)。我已经能够使用Safari扩展修复一些更恶劣的javascript,这些扩展注入脚本以分离事件处理程序并用DOM兼容版本替换它们。
我现在把注意力转向烦恼而不是彻头彻尾的破碎。大量使用警报来告知用户进度是痛苦的。我认为用我的扩展来覆盖带有一些css弹出窗口的window.alert函数是一个相当不错的补充,但我遇到的挑战是在http帖子后发回的页面,他们做的第一件事就是显示成功(或失败)警报。
根据this Apple documentation“在创建文档时但在解析网页之前执行启动脚本”。我原以为如果页面没有被解析,页面主体的脚本标签中的脚本就不会运行,但这不是我看到的行为。相反,似乎在我的启动脚本加载之前,从post响应返回的页面中的任何脚本都会执行。
为了测试这个,我有一个非常简单的启动脚本,它记录到控制台location.href并尝试用console.log替换window.alert。
注入的启动脚本:
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之前执行警报。
我的问题 -
虽然这似乎应该是相当直接的,但到目前为止,我还没能通过阅读文档,搜索或试验找到解决问题的方法。我希望别人能解决类似问题。
答案 0 :(得分:0)
<head>
<script>
(function() {
console.log(window.location.href + "loaded killAlert.js") ;
window.alert=function(str) { console.log(str) ; }
})();
</script>
</head>
尝试匿名调用它,它会在创建后立即执行脚本。希望它有所帮助。