如何在Android 4.4(kitkat)上的trigger.io应用程序中的ajax请求中使用相对URL?

时间:2013-12-09 11:30:02

标签: ajax jquery-mobile android-webview trigger.io android-4.4-kitkat

我的trigger.io-bundled jquery-mobile应用程序在android< 4.4和iOS设备,但一旦jquery移动加载,拒绝加载android 4.4上的任何相关页面,脚本等。 Afaik,jqm将所有链接转换为ajax请求,这表明ajax请求被破坏。 WebView已更改为基于Chromium 30的kitkat,迁移指南提到URL处理是一个突破性变化的区域(下面的第二个链接)。

https://developer.android.com/about/versions/android-4.4.html https://developer.android.com/guide/webapps/migrating.html#URLs

在android 4.4上至少还有一个人使用了破坏的jqm / trigger.io应用程序,请参阅https://github.com/jquery/jquery-mobile/issues/6746。我已经整理了一个可以用来验证问题的小应用:https://github.com/mnacos/jqm-kitkat

如何在android 4.4上再次获取针对相对网址的ajax请求?有没有办法在为Android 4.4(kitkat)构建trigger.io应用程序时控制targetSdkVersion?是否有一个自定义方案在trigger.io webview / browser中定义,可以帮助相关链接?

1 个答案:

答案 0 :(得分:1)

不幸的是,对于非标准[a]方案,Android 4.4 WebView的URL canonicalization/normalization逻辑更为保守。这是因为标准方案的规范化假设它可以将URL更改为小写,执行%编码等等,这会破坏content://个URL。如果您查看已链接的错误,似乎问题的根本问题是jqm将网址重写为content:////而不是content://

我认为它不可能解决4个斜线与WebView中的紧急修复条件(如果你不同意,欢迎你提出这个问题),所以恕我直言最好的(也许是最快的)方式地址这将是与jqm团队合作(或提交拉取请求),以使jqm不向URI添加额外的2斜杠。

[a] Chromium列出了硬编码的“标准”方案。这些包括http,https,ftp等,它本质上是已知与规范化算法兼容的方案列表。

编辑:遗憾的是,在这种情况下,更改targetSdkVersion对你没有帮助。