【问题标题】:How can I override XMLHttpRequest in my Android WebView subclass so that scripts in head will use my overridden XHR?如何在我的 Android WebView 子类中覆盖 XMLHttpRequest,以便 head 中的脚本使用我覆盖的 XHR?
【发布时间】:2014-12-04 04:39:03
【问题描述】:

我正在研究相当于自定义 android 网络浏览器的内容,并且需要解决 XHR 中的错​​误。 我想使用一个 javascript XHR 包装器来修复这个错误(我已经有了修复)。

如何在加载其他任何内容(包括头部脚本)之前强制在每次页面加载时加载它?

请注意,我无法控制的任意 Web 内容将被加载到我的 webview 中,因此我无法执行任何操作,例如从 html 页面加载我的脚本。我需要做一些事情,比如拦截 head 中的第一个脚本请求并同步注入我的脚本。我不确定这种确切的方法是否可行 - 只是想提供一个可以满足我要求的方法的例子。

我对完全不同的方法持开放态度 - 我只知道如何通过 javascript 包装器修复它。

我需要修复的错误的详细信息并不重要,但以防万一有人好奇,非 android_asset 文件 url 的成功 XMLHttpRequest 将状态设置为 0 并将 statusText 设置为“”。由于某些使用 XHR 的框架将 status!=200 和/或 statusText!="OK" 视为错误,因此我需要覆盖默认行为并返回 status=200 和 statusText="OK" 以获得成功的非 android_asset 文件的 XMLHttpRequests网址。

【问题讨论】:

    标签: android webview xmlhttprequest


    【解决方案1】:

    由于最近有人对此表示赞同并且没有其他人提供任何意见,因此我将分享我最终为解决该问题所做的事情,即使它并没有真正解决我最初的问题。

    在我的情况下,我只加载本地(即,在加载到 webview 之前在本地复制的动态文件)html 文件,在将它们加载到 webview 之前,我可以通过文件系统访问这些文件。因此,我有机会在加载文件之前对其进行修改。由于找不到更好的方法,我只需插入一个脚本标记作为 head 的第一个子项,以确保 XHR 覆盖发生在其他任何事情之前。

    如果您想了解更多详细信息,请随时发表评论 - 我会尽力回答!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-28
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多