android - 我如何在我的 Android WebView 子类中覆盖 XMLHttpRequest 以便 head 中的脚本将使用我覆盖的 XHR?

标签 android webview xmlhttprequest

我正在研究一个相当于自定义 android 网络浏览器的东西,需要解决 XHR 中的一个错误。 我想使用修复该错误的 javascript XHR 包装器(我已经有了修复程序)。

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

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

我愿意接受一种完全不同的方法 - 我只知道如何通过 javascript 包装器修复它。

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

最佳答案

由于最近有人对此进行了投票并且没有其他人提供任何意见,我将分享我最终为解决该问题所做的工作,即使它并没有真正解决我最初的问题。

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

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

关于android - 我如何在我的 Android WebView 子类中覆盖 XMLHttpRequest 以便 head 中的脚本将使用我覆盖的 XHR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27286398/

相关文章:

Android 禁用 webview 滚动但不是内部 ScrollView

javascript - 如何在 Jest 中测试异步 XMLHttpRequest 回调?

javascript - ajax的onreadystatechange事件返回Json对象

javascript - 如何设置 "CSRFprotect"参数防止AJAX劫持?

android - 检测导航组件中的弹出

android - 应用程序在 Eclipse 模拟器上运行良好,但在手机上运行错误 - FroYo

java - 处理具有空对象响应的 Web 服务

android - webview 中 base64 图片分辨率低

java - 如何根据用户在一个 Activity 中单击的按钮(三个中的一个)来更改单个 WebView (Android) 的内容?

从 Android 远程控制的 JavaFX 程序