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

时间:2014-12-04 04:39:04

标签: android webview xmlhttprequest

我正在研究什么是自定义的Android网络浏览器,需要解决XHR中的错误。 我想使用一个修复bug的javascript XHR包装器(我已经有了修复)。

如何在加载任何其他内容之前强制将其加载到每个页面加载上,包括头部中的脚本?

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

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

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

1 个答案:

答案 0 :(得分:0)

由于最近有人投票支持并没有其他人提供任何意见,我将分享我最终解决问题的方法,即使它没有真正解决我原来的问题。

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

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