为WebView设置怪癖

我有一个包含WebView的应用程序。 如果在HTML页面中未定义 ,则会产生意外错误,因为我运行的片段仅与HTML5兼容

因此,不是每次都写 ,我可以简单地设置默认的quirk(quirk是一个默认的HTML声明,如果没有指定页面的HTML版本,将使用它)。

因此,如果未指定页面的HTML声明,它将自动在HTML5中呈现。

关于如何做到这一点的任何想法? 主流浏览器使用此技术(包括Android版Chrome)

编辑

使用直接嵌入式SVG 我有500多个这样的片段 –

    

这些代码段在其他版本的HTML上运行不佳。 我在每个页面上写实际上没有任何问题,但我担心我的客户可以查看,编辑和修改我的代码段,甚至创建一个新的代码段

我将我的应用程序交给我的朋友进行测试,他们中的许多人都抱怨他们创建的代码段运行不正常,我认为我的客户也会发生同样的事情。

请帮忙

编辑: Chrome for Android不使用WebView [ 来源 ]:

这是否意味着Chrome for Android正在使用WebView?

不,Chrome for Android与WebView是分开的。 它们都基于相同的代码,包括通用的JavaScript引擎和渲染引擎。

因此,他们在常规WebView行为之上添加了此function。 你想要完成的是不可能的。


我认为唯一可行的方法(基于我的搜索)是覆盖WebView行为并执行类似这样的操作:

  1. 抓住预定的url
  2. 使用HttpClient获取页面内容
  3. 检查<!DOCTYPE>标记,如果不存在则添加
  4. 使用WebView.loadDataWithBaseURLWebView呈现HTML并指定在步骤1中捕获的基本URL

显然这是非常hacky我无法确认它是否有效。 所以到目前为止,最好的解决方案是在每个页面上指定一个<!DOCTYPE>标记 。 如果这需要在加载/允许客户端创建它们之前validation片段,那么就这样吧。