【问题标题】:Listening to HTML content change inside a WebView监听 WebView 中的 HTML 内容变化
【发布时间】:2016-01-21 08:36:52
【问题描述】:

我正在 Android 中构建一个适用于 WebView 并分析其性能的第 3 方库。

从目前所做的工作中,我发现一些广告服务器会调出横幅广告 WebView,并每 X 秒自动刷新一次广告。

在自动刷新期间,我注意到他们用新广告替换 HTML 内容,而不是创建新的 WebView 实例。

我需要在不干扰 JS 注入的情况下捕获这些重新加载。

我希望有某种 setOnDomChangedEventListener 方法,但我找不到。

我可以使用什么技术来捕捉这些事件?

【问题讨论】:

  • 你找到解决办法了吗?

标签: android android-webview mopub


【解决方案1】:

首先,重新加载和 DOM 更改是不同的事情。页面可以在不加载任何内容的情况下更改 DOM。页面的重新加载从头开始重新初始化 DOM 和 JS 上下文,因此它与 DOM 树的动态更新不同。

如果要监听网络负载,需要在WebView中使用WebViewClient.shouldInterceptRequest回调。

无法通过 WebView Java API 监听 DOM 更改。一种方法是将代码注入页面并使用MutationObserver(doc)。请注意,如果页面重新加载,您将需要重新注入代码。

一种侵入性较小但涉及更多的方法是使用远程 Web 调试。 WebView 使用的调试协议支持DOM breakpoints。实际上,如果你正在构建一个性能分析框架,这可能是一个好方法,因为它可以让你测量和监控很多事情。但请注意,出于安全考虑,为了让 Android 应用程序连接到远程调试套接字,它需要以shell 用户(adb)身份运行,或者使用与目标相同的密钥进行签名应用程序。

【讨论】:

    猜你喜欢
    • 2014-12-20
    • 2012-10-02
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    相关资源
    最近更新 更多