0

良い一日、

AndroidのwebView内にログインの詳細を自動的に入力しようとしています。

これまでのところ、ウェブビューにウェブサイトをロードしました。使用したのは次のとおりです。

webView.loadUrl("http://blabla");

次に、ログインの詳細を入力する必要があります。私は次のコードでそうしようとしました:

webView.loadUrl("javascript: {"
                    + " var y=document.getElementsByTagName('input');"
                    + " document.write('0:' + y[0].value + '<br>')"
                    + " y[0].value = '" + username + "';"
                    + " y[1].value = '" + password + "';}");

しかし、それは機能していません。そのため、より簡単なタスクを試して、JavaScript が機能していることを確認しました。だから私はこれを実行しました:

   webView.loadUrl("javascript:alert('hello');");

しかし、それを実行しても何もしません。

WebView の JavaScript を有効にしました。

    WebSettings webSet = webView.getSettings();
    webSet.setJavaScriptEnabled(true); // enable java script

私は何を間違っていますか?ありがとう

4

2 に答える 2

0

Web ビューに Web サイトがロードされたら、JS を実行する必要があります。この回答で私が行った例を見てください。

private final static String HOST = "...";
private WebView wb;

@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_home);
    wb = (WebView) findViewById(R.id.home_webview);
    WebSettings webSettings = wb.getSettings();
    webSettings.setJavaScriptEnabled(true);
    wb.setWebViewClient(new WebViewClient(){
        public void onPageFinished(WebView view, String url){
                        //Inject JS code here
                        wb.loadUrl("javascript:(function(){...})()");
        }           
    });     
    wb.loadUrl("http://"+HOST);
}

onPageFinishedロード/終了後に実行されます

于 2013-06-25T12:47:33.973 に答える
0

JavaScript を有効にして、WebChromeClient を追加しましたか?

また、ページの読み込み後に JavaScript を実行する必要があるため、JavaScript を WebViewClient-onPageFinished 内に配置する必要があります。

これがサンプルです。

public void onCreate(Bundle savedInstanceState)    {
    super.onCreate(savedInstanceState);

    WebView wv = new WebView(this);
    wv.getSettings().setJavaScriptEnabled(true);
    wv.loadUrl("http://www.google.com");
    wv.setWebChromeClient(new WebChromeClient());
    wv.setWebViewClient(new WebViewClient(){
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            view.loadUrl("javascript:alert('hello');");
        }
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }

    });

    setContentView(wv);
}
于 2013-06-25T12:52:41.577 に答える