webview 加载网页,但一些内容在加载后消失 (Android Studio)
webview loads webpage, but some contents get vanished after loading (Android Studio)
我试图在网络视图中查看 http://artikelweb.com。 网页显示得很好。但是,每当我从 "Popular Authors" 部分 转到 任何作者 link 时,网页就会出现,但是在加载后, 引号是' t 显示。
在Google Chrome 浏览器(移动)中加载后出现引号,
但是,在我的应用程序中,引号没有显示在网络视图中。
代码片段:
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web);
myWebView = (WebView)findViewById(R.id.webView);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.loadUrl("http://www.artikelweb.com");
myWebView.setWebViewClient(new WebViewClient());
}
@Override
public void onBackPressed() {
if(myWebView.canGoBack()) {
myWebView.goBack();
} else {
super.onBackPressed();
}
}
将 UserAgent 设置为您的 Webview 设置并尝试
webSettings.setUserAgentString("Mozilla/5.0 (Linux; <Android Version>; <Build Tag etc.>) AppleWebKit/<WebKit Rev> (KHTML, like Gecko) Chrome/<Chrome Rev> Mobile Safari/<WebKit Rev>");
在您的特定情况下,您必须启用 DOM 存储 API
webSettings.setDomStorageEnabled(true);
所以你的代码必须变成:
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web);
myWebView = (WebView)findViewById(R.id.webView);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
myWebView.loadUrl("http://www.artikelweb.com");
myWebView.setWebViewClient(new WebViewClient());
}
因为使用您正在访问的网站的 javascript 在其 javascript 中需要它。
当然你可以利用第三方库,但你还是不知道为什么这个确切的案例在第三方库中有效,而不是在默认的 webview 中。
您正在使用的库具有以下初始设置:
final WebSettings webSettings = getSettings();
webSettings.setAllowFileAccess(false);
setAllowAccessFromFileUrls(webSettings, false);
webSettings.setBuiltInZoomControls(false);
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
if (Build.VERSION.SDK_INT < 18) {
webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
}
webSettings.setDatabaseEnabled(true);
if (Build.VERSION.SDK_INT < 19) {
webSettings.setDatabasePath(databaseDir);
}
setMixedContentAllowed(webSettings, true);
setThirdPartyCookiesEnabled(true);
默认启用许多默认 webview 出于安全原因禁用的选项。
我试图在网络视图中查看 http://artikelweb.com。 网页显示得很好。但是,每当我从 "Popular Authors" 部分 转到 任何作者 link 时,网页就会出现,但是在加载后, 引号是' t 显示。
在Google Chrome 浏览器(移动)中加载后出现引号,
但是,在我的应用程序中,引号没有显示在网络视图中。
代码片段:
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web);
myWebView = (WebView)findViewById(R.id.webView);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.loadUrl("http://www.artikelweb.com");
myWebView.setWebViewClient(new WebViewClient());
}
@Override
public void onBackPressed() {
if(myWebView.canGoBack()) {
myWebView.goBack();
} else {
super.onBackPressed();
}
}
将 UserAgent 设置为您的 Webview 设置并尝试
webSettings.setUserAgentString("Mozilla/5.0 (Linux; <Android Version>; <Build Tag etc.>) AppleWebKit/<WebKit Rev> (KHTML, like Gecko) Chrome/<Chrome Rev> Mobile Safari/<WebKit Rev>");
在您的特定情况下,您必须启用 DOM 存储 API
webSettings.setDomStorageEnabled(true);
所以你的代码必须变成:
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web);
myWebView = (WebView)findViewById(R.id.webView);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
myWebView.loadUrl("http://www.artikelweb.com");
myWebView.setWebViewClient(new WebViewClient());
}
因为使用您正在访问的网站的 javascript 在其 javascript 中需要它。
当然你可以利用第三方库,但你还是不知道为什么这个确切的案例在第三方库中有效,而不是在默认的 webview 中。
您正在使用的库具有以下初始设置:
final WebSettings webSettings = getSettings();
webSettings.setAllowFileAccess(false);
setAllowAccessFromFileUrls(webSettings, false);
webSettings.setBuiltInZoomControls(false);
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
if (Build.VERSION.SDK_INT < 18) {
webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
}
webSettings.setDatabaseEnabled(true);
if (Build.VERSION.SDK_INT < 19) {
webSettings.setDatabasePath(databaseDir);
}
setMixedContentAllowed(webSettings, true);
setThirdPartyCookiesEnabled(true);
默认启用许多默认 webview 出于安全原因禁用的选项。