iframe没有加载到webview android

时间:2016-01-19 08:24:07

标签: javascript android iframe android-webview

我有一个webview。一切都运行正常,但当我打开一个有iframe的页面时,iframe不可见。是否需要任何特定设置?

5 个答案:

答案 0 :(得分:1)

首先添加Hardware Acceleration并将以下行添加到您的webView

webView.setWebChromeClient(new WebChromeClient());

编辑1

很难确定问题,但尝试添加WebChromeClientWebViewClient,也不要忘记在加载URL之前启用javascript

webView= (WebView) findViewById(R.id.webview); 
webView.setWebChromeClient(new WebChromeClient()); 
webView.setWebViewClient(new WebViewClient()); 
webView.getSettings().setJavaScriptEnabled(true);

编辑2

如果您确实需要加载iframe的内容,请尝试使用Jsoup加载html页面,但您必须找到iframe并手动获取内容。

Document doc=...
Element iframe1 = doc.select("#iframe1").first();

if (iframe1!=null) {
   Document iframeContent = Jsoup.connect(iframe1.attr("src")).get();

  }

其中iframe1是您iframe的ID。

答案 1 :(得分:0)

你能检查一下吗

android:hardwareAccelerated="true"

在您的AndroidManifest文件中,该活动的<application>标记。

答案 2 :(得分:0)

以下hack为我在webview中加载iframe工作。希望有人仍然觉得它很有用

 String webContent="your data to be loaded in webview";

if(webContent.contains("iframe")){
                Matcher matcher = Pattern.compile("src=\"([^\"]+)\"").matcher(webContent);
                matcher.find();
                String src = matcher.group(1);
                webContent=src;

            try {
                URL myURL = new URL(src);
                webView.loadUrl(src);

            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
        }else {

            webView.loadDataWithBaseURL(null, "<style>img{display: inline;height: auto;max-width: 100%;}</style>" + webContent, "text/html", "UTF-8", null);}

    }
}

另外,请不要忘记在清单文件中添加Internet权限。

<uses-permission android:name="android.permission.INTERNET" />

答案 3 :(得分:0)

这可能为时已晚! 我希望它能对某人有所帮助。

只需尝试为您的Webview设置桌面用户代理

String DESKTOP_USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36";
webView.getSettings().setUserAgentString(DESKTOP_USER_AGENT);

答案 4 :(得分:0)

如果您修改WebView配置并使用loadData函数加载iframe,则某些iframe在Webview中将无法使用。因此,对于该解决方案,我已经实现了 AdvancedWebView 库。

https://github.com/delight-im/Android-AdvancedWebView

在此网络视图中使用loadHtml(URL)方法,您可以在参数中传递URL,然后就可以在网络视图中查看iframe。