Предупреждение JavaScript не работает в Android WebView

В моем приложении я использую WebView и в том, что я использую метод JavaScript alert( ), но его не работает, всплывающее окно не появляется.

в моем файле манифеста я добавил

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

и в файле активности я добавил

mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("file:///android_asset/demo.html");

В макете xml файла я добавил

<WebView 
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
/>

Любой ключ, как включить полный JavaScript в WebView?


Обновление

Спасибо, знак  метод alert() в файле html теперь работает:).

Теперь в WebView есть две проблемы:
1: Я использую <textarea> в html файле, который я загружаю в WebView, и пытаюсь записать в нем шрифт языка хинди, но когда я пытаюсь написать текст хинди, он отображается как символы (символы прямоугольника, такие как [ ]).

когда я делаю то же самое в браузере Firefox на рабочем столе, он отлично работает. любой ключ, как дать поддержку для нескольких языков в textarea в WebView?

2: Когда я нажимаю кнопку "Отправить" и пытаюсь открыть значение текста в методе alert() в другой java script, это не работает, значит ли это даже после использования WebChromeClient его применимо только для текущей загруженной страницы html, а не javascripts, вызванной с этой страницы?

Ответ 1

Проверьте эту ссылку и последний комментарий. Вы должны использовать WebChromeClient для своей цели.

Ответ 2

Как указывали другие, настройка WebChromeClient необходима для того, чтобы alert() работал. Достаточно просто установить WebChromeClient() по умолчанию:

mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient());

Спасибо за все комментарии ниже. Включая Джона Смита, который указал, что вам нужно включить JavaScript.

Ответ 3

webView.setWebChromeClient(new WebChromeClient() {
    @Override
    public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
        return super.onJsAlert(view, url, message, result);
    }
});

Ответ 4

Следующий код будет работать:

private WebView mWebView;
final Activity activity = this;

// private Button b;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mWebView = (WebView) findViewById(R.id.webview);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setDomStorageEnabled(true);
    mWebView.setWebChromeClient(new WebChromeClient() {
        public void onProgressChanged(WebView view, int progress) {
            activity.setProgress(progress * 1000);
        }
    });

    mWebView.loadUrl("file:///android_asset/raw/NewFile1.html");
}

Ответ 5

Вы можете попробовать с этим, это сработало для меня

WebView wb_previewSurvey=new WebView(this); 


       wb_previewSurvey.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);
        }

    });

Ответ 6

Просто добавь

mWebview.setWebChromeClient(new WebChromeClient());

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