Android ICS上的WebView,android_assets的iframe问题

我的应用程序引擎在WebView中运行。 它跨越不同的IFRAMES。 主应用程序html和iframes html都在android_assets上。 在Android 3.x没有问题。 在Chrome浏览器上也是如此

如果我创build一个IFRAME(createElement – > appendChild),则创buildiframe。

当我加载它的东西(iframe.src =“url”<> iframe.contentWindow.location.href =“url”)…它取代主要应用程序! (而不是加载到iframe)

已经尝试:

  • window.setTimeout延迟加载…失败。
  • 在webview中,将X-Frame-Options = SAME_ORIGIN作为标题插入任何加载的页面 – >失败
  • 创buildiframe,设置sandbox = same_origin,allow_scripts – >失败

任何有类似问题的人? 或者有人可以帮我find有关WebView ICS错误vs蜂窝的文档?

还发现了很多其他奇怪的问题…是ICS真的这个越野车? :S:S

先生们,我在使用Phonegap(Apache Cordova)和Android Ice Cream Sandwich(4.0.3)中的IFrame时遇到了同样的问题。

为了解决这个问题,我不得不编辑Apache Cordova源代码。 我改变了org.apache.cordova。 CordovaWebViewClient.java文件,并评论这部分代码,并包含最后一行( 返回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上,但我更改了我的所有应用程序的代码。 我还在做testing。

在我的分析中,似乎当您尝试在iFrame中加载页面时,ICS上的Android WebView将其解释为新的页面请求,并且IT取代主要应用程序! ,或换句话说,它在孔母窗口中打开所请求的页面。

我没有改变其余的代码。

我希望它有帮助,就像它为我做的那样。

最好的祝福。

亚历山大·阿尔梅达