[javascript] Android WebView에서 JavaScript 경고가 작동하지 않음

내 응용 프로그램 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"
/>

전체를 활성화하는 방법에 대한 단서 JavaScriptWebView있습니까?


최신 정보

감사 합니다 파일
alert()방법 html이 지금 작동하고 있습니다 :).

이제이 두 가지 문제가 있습니다 WebView:
1 : 내가 사용하고 <textarea>난에서로드 오전 HTML 파일에서 WebView, 그 안에 힌디어 글꼴에 쓰기를 시도,하지만 난 그것을 기호로 표시 (사각형 기호와 같은 힌디어 텍스트를 작성하려고 할 때 [])

데스크탑의 firefox 브라우저에서 똑같이하면 잘 작동합니다. 에서 여러 언어를 지원하는 방법에 대한 단서 textareaWebView있습니까?

2 : 제출을 클릭 alert()하고 다른 자바 스크립트 에서 메소드 의 텍스트 값을 열려고 할 때 작동하지 않습니다. WebChromeClient
현재로드 된 html 페이지에만 적용 javascripts되고 해당 페이지에서 호출 되지 않은 경우에도 의미 합니까?



답변

링크를 확인 하고 마지막 코멘트, 당신은 WebChromeClient당신의 목적 을 위해 사용해야 합니다.


답변

다른 사람들이 지적했듯이 WebChromeClient를 설정 alert()해야 작동합니다. 기본 WebChromeClient ()를 설정하는 것으로 충분합니다.

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

아래의 모든 의견에 감사드립니다. JavaScript를 활성화해야한다고 언급 한 John Smith를 포함합니다.


답변

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


답변

다음 코드가 작동합니다.

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


답변

이것으로 시도해 볼 수 있습니다.

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

    });


답변

사용자로부터 URL을 숨기려면 아래와 같이 AlertDialog를 표시합니다.

myWebView.setWebChromeClient(new WebChromeClient() {

            @Override
            public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                Log.d(TAG, "onJsAlert url: " + url + "; message: " + message);
                AlertDialog.Builder builder = new AlertDialog.Builder(
                        mContext);
                builder.setMessage(message)
                        .setNeutralButton("OK", new OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int arg1) {
                                dialog.dismiss();
                            }
                        }).show();
                result.cancel();
                return true;
            }
    }


답변