我的应用程序引擎在WebView中运行。它跨越不同的IFRAMES。 主要应用程序html和iframes html都在android_assets上。 在Android 3.x上没有任何问题。在Chrome浏览器等上也是如此
如果我创建了IFRAME(createElement - > appendChild),则会创建iframe。
当我在其中加载内容时(iframe.src =“url”<> iframe.contentWindow.location.href =“url”)...它取代了主要应用程序!! (而不是加载到iframe中)
已经尝试过:
有类似问题的人吗?或者有人可以帮助我找到有关WebView ICS错误和Honeycomb的文档吗?
还发现了许多其他奇怪的问题...... ICS真的是这辆车吗? :S:S
答案 0 :(得分:2)
先生,我在安卓冰淇淋三明治(4.0.3)中使用Phonegap(Apache Cordova)和IFrame时遇到了同样的问题。
要解决此问题,我必须编辑Apache Cordova源代码。我更改了org.apache.cordova。 CordovaWebViewClient.java 文件,并注释了这部分代码,并包含了最后一行( return false; )。
所以它现在看起来像这样:
// All else
// else {
//
// // If our app or file:, then load into a new Cordova webview container by starting a new instance of our activity.
// // Our app continues to run. When BACK is pressed, our app is redisplayed.
// if (url.startsWith("file://") || url.indexOf(this.ctx.baseUrl) == 0 || ctx.isUrlWhiteListed(url)) {
// this.ctx.loadUrl(url);
// }
//
// // If not our application, let default viewer handle
// else {
// try {
// Intent intent = new Intent(Intent.ACTION_VIEW);
// intent.setData(Uri.parse(url));
// ctx.startActivity(intent);
// } catch (android.content.ActivityNotFoundException e) {
// LOG.e(TAG, "Error loading url "+url, e);
// }
// }
// }
// return true;
return false;
此问题仅发生在Android ICS上,但我更改了所有应用的代码。我还在做测试。
在我的分析中,似乎当您尝试在iFrame中加载页面时,ICS上的Android WebView会将其解释为新的页面请求,并且 IT替换主要应用程序!! ,或换句话说,它在孔父窗口中打开请求的页面。
我没有动摇其余的代码。
我希望它有所帮助,就像它对我一样。
最好的问候。
Alexandre Almeida