从webview中删除iframe不会清除文档元素

时间:2015-01-22 10:17:22

标签: javascript android iframe webview

我正在构建一个混合Android应用程序,打开一个webview,在其中创建和删除iframe。

作为内存优化的一部分,我只隔离了iframe的创建和删除,发现iframe没有在webview中发布,而在浏览器中它运行良好。

我做了两次以下测试。 首先,在Chrome浏览器(Chrome v39)上。 其次,在谷歌Nexus 4(KitKat 4.4)上。

测试:

  1. 按照jsbin:http://jsbin.com/yubuvokawa/1/
  2. 中的说明运行html
  3. 在devtools中开始录制时间表。
  4. 点击“创建”。
  5. 点击删除。
  6. 垃圾收集。
  7. 停止录制。
  8. 这些是 Chrome浏览器

    中显示的结果

    创建并销毁iframe并恢复正常(除了额外的JS堆)

    http://i.imgur.com/NWf4sPv.png

    这些是 Nexus 4 webview

    中显示的结果

    正如您所看到的,当iframe被释放时,文档仍处于活动状态(红线)以及一些未发布的节点

    http://i.stack.imgur.com/Qnt8d.png

    这是我用来打开网页视图的一段代码:

    webView = (WebView) findViewById(R.id.webView);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.setWebViewClient(new MyWebViewClient());
    
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        WebView.setWebContentsDebuggingEnabled(true);
    }
    
    String url = getIntent().getExtras().getString("url");
    Log.w(getClass().getSimpleName(), "Loading url: " + url);
    webView.loadUrl(url);
    

    导致差异的原因是什么?我应该如何从webview中清除iframe?

0 个答案:

没有答案