Оповещение не появляется из веб-просмотра в Android? - PullRequest
7 голосов
/ 24 июня 2011

Я использую образец, предоставленный Google для демонстрации двусторонней связи между JavaScript и Java,

ref [1]:

http://code.google.com/p/apps-for-android/source/browse/trunk/Samples/WebViewDemo/src/com/google/android/webviewdemo/WebViewDemo.java

Функциональность работает нормально.Я могу вызвать функцию JavaScript из Java и вызвать функцию Java из JavaScript.

Проблема в том, что когда я использую предупреждение внутри функции JavaScript, оно не появляется, но функциональность внутри функции работает правильно.

Почему alert("test") внутри функции JavaScript не отображается в Android.Я загружаю JavaScript в web-view.Когда я нажимаю кнопку в Android, я вызываю функцию, но она не появляется.

Если кто-то знает проблему, выручите меня.

Спасибо

Ответы [ 4 ]

15 голосов
/ 24 июня 2011
setContentView(R.layout.main);
        WebView webview = (WebView) findViewById(R.id.webview);

        WebSettings webSettings = webview.getSettings();

        webSettings.setJavaScriptEnabled(true);

        webSettings.setBuiltInZoomControls(true);

        webview.requestFocusFromTouch();

        webview.setWebViewClient(new WebViewClient());
        webview.setWebChromeClient(new WebChromeClient());    

     webview.loadUrl("file:///android_asset/test.html");

этот код работает отлично и показывает мне окно с предупреждением .. и это мой
test.html

<html>
<head>
<script type="text/javascript">
function show_alert()
{
alert("Hello! I am an alert box!");
}
</script>
</head>
<body>

<input type="button" onclick="show_alert()" value="Show alert box" />

</body>
</html>
1 голос
/ 16 июля 2016

Добавив следующие две строки, мой JavaScript работает:

mWebview.setWebViewClient(new WebViewClient()());
mWebview.setWebChromeClient(new WebChromeClient());
0 голосов
/ 16 февраля 2016

Просто используйте WebChromeClient. Это все сделает.

mWebview.setWebChromeClient(new WebChromeClient());

Это будет работать.

0 голосов
/ 24 августа 2014

Используйте следующий метод,

WebView wv=new WebView(this);   
wv.setWebChromeClient(new WebChromeClient() {
@Override
    public boolean onJsAlert(WebView view, String url, String message,JsResult result) {
    //Required functionality here
    return super.onJsAlert(view, url, message, result);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...