Dav*_*d K 60 javascript android webview
我正在尝试制作Android版本的相对简单的iOS应用程序,它使用webview,一些按钮然后依赖于对CMS的javascript调用.
但我很早就陷入了困境:webview无法使用javascript.我已经阅读了很多关于如何在Android webview中启用JS的帖子,但到目前为止还没有运气.
以下是我的一些代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.setWebViewClient(new HelloWebViewClient()
{
@Override
public void onPageFinished(WebView view, String url)
{
//Calling an init method that tells the website, we're ready
mWebView.loadUrl("javascript:m2Init()");
page1(mWebView);
}
});
mWebView.loadUrl("http://my_url/mobile/iphone//app.php");
}
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
public void page11(View view)
{
mWebView.loadUrl("javascript:m2LoadPage(1)");
}
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?该URL在我的iOS应用程序和浏览器中运行良好.但不是在我的应用程序!
请告诉我这是显而易见的......
Dav*_*d K 105
固定!在错误的刺激下,我发现我需要设置setDomStorageEnabled(true)
webview设置.
谢谢你的帮助斯蒂芬:)
com*_*eak 34
如果在Android上使用WebView的东西不起作用,我总是试图确保我设置这些疯狂的标志,如,
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setUseWideViewPort(true);
webSettings.setBuiltInZoomControls(true);
webSettings.setDisplayZoomControls(false);
webSettings.setSupportZoom(true);
webSettings.setDefaultTextEncodingName("utf-8");
Run Code Online (Sandbox Code Playgroud)
我想知道为什么这些不是默认设置的,谁会期望现在没有javascript内容的网页,以及什么是在DOM不可用时启用javascript的用法,除非指定.希望有人将此作为错误或改进/功能请求提交,并且猴子正在努力.
然后有一些被弃用的东西在某处腐烂,像这样:
webView.getSettings().setPluginState(PluginState.ON);
Run Code Online (Sandbox Code Playgroud)
这一切都是为了在app中加载网页.
在iOS上,它如此简单 - Swift 3.0
private func openURLWithInAppBrowser(urlString:String) {
guard let url = URL(string:urlString) else {
return
}
let sfSafari = SFSafariViewController(url:url)
present(sfSafari, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
在webview中加载javascript
webView.getSettings().setDomStorageEnabled(true);
Run Code Online (Sandbox Code Playgroud)
在 MainActivity.java 中添加以下代码行
它帮助我启用了 js
webSetting.setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient());
Run Code Online (Sandbox Code Playgroud)
不要忘记 AndroidManifest 文件中的这个权限。
<uses-permission Android:name="Android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)
主要是,这三行足以让 Javascipt 在 webView 中工作......
webSetting.setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient());
Run Code Online (Sandbox Code Playgroud)
如果在那之后它也不起作用,那么也添加下面的行。
webSettings.setDomStorageEnabled(true);
Run Code Online (Sandbox Code Playgroud)
实际上,您需要 setJavaScriptEnabled() 和 setWebChromeClient(new WebChromeClient()) 才能使 JavaScript 工作。如果你只使用 webSetting.setJavaScriptEnabled(true); 那么它就行不通了。
| 归档时间: |
|
| 查看次数: |
64544 次 |
| 最近记录: |