我正在开发一个 iOS (swift) 安全浏览器
项目。我需要实现一项功能,我们可以向用户显示当前 WKWebView
中正在运行的跟踪脚本数量以及停止这些跟踪脚本的能力。 (就像 Ghostery 隐私浏览器
)
我能够跟踪和列出网页中嵌入的脚本(我在扫描已加载到代理中的内容后执行此操作,调用了 didfinishload)。但我不确定如何阻止它们。
为了获取网页中的所有脚本,我正在读取 innerHTML
中的所有脚本标签。
请帮助我停止在 WKWebView
中执行某些脚本。
提前致谢
最佳答案
我不认为读取所有脚本标签是检测网页加载脚本的方法,因为它很容易出错。
对于您的任务,您最好使用旧的 UIWebView 并实现自定义 NSURLProtocol 来进行阻止/过滤。拦截 WKWebView 发出的所有请求是不可能的(因为它是在进程外加载的,并且您获得的回调与 Apple 在 WKNavigationDelegate 中实现的回调一样多)。相反,您可以通过简单的自定义 NSURLProtocol 实现来控制 UIWebView 加载的所有内容。
关于javascript - WKWebView 在加载任何 URL 时阻止某些脚本(阻止任何网站中的跟踪或广告),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41543638/