JavaScript, не работающий в Android Webview?

Я пытаюсь сделать версию Android relativly простого приложения для iOS, которое использует webview, некоторые кнопки и затем полагается на вызовы JavaScript к CMS.

Но я застреваю в довольно ранней точке разработки: webview не функционирует с JavaScript. Я прочитал много сообщений о том, как включить JS в Android webview, но никакую удачу до сих пор.

Ниже часть моего кода:

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)");
}

Что я делаю неправильно здесь? URL работает отлично в моем приложении для iOS, и в браузере. Но не в моем приложении!

Скажите мне, что это - что-то очевидное...

59
задан 15 January 2014 в 18:26

2 ответа

Если Вы находитесь в Kotlin, можно использовать это методы для получения работы JavaScript:

webView.apply {
     loadUrl(
         "file:///android_asset/frm/my_html_landing_page_here.html"
     )

     settings.javaScriptEnabled = true
     settings.domStorageEnabled = true
 }

Также удостоверяются, что Ваша вся папка в папке Assets (это включает HTML, JavaScript и другой необходимый файл)

Аплодисменты.

0
ответ дан 1 November 2019 в 11:32

Если ничто выше попытки, которой помогают, добавить задержку слушателя WebViewClient.onPageFinished

override fun onPageFinished(view: WebView?, url: String?) {
            Handler().postDelayed({
                //update your view with js here
                super.onPageFinished(view, url)
            }, 1000)
        }
0
ответ дан 1 November 2019 в 11:32

Другие вопросы по тегам:

Похожие вопросы: