0

Android 4.4 で新しい evaluateJavascript メソッドを使用しようとしていますが、この JavaScript コードを評価しようとすると

browser.evaluateJavascript("(function() { document.getElementById('login').value='"+username+"'; document.getElementById('password').value='"+password+"'; document.getElementsByTagName('input')[2].click(); return '';})();",new ValueCallback<String>() {
    @Override public void onReceiveValue(String s) {

    } 
});

アプリがクラッシュして次のように返されます。

Fatal signal 6 (SIGABRT) at 0x00006225 (code=-6), thread 25125

古い方法ではJavaScriptコードは正しいです

browser.loadUrl("javascript:(function() { ...

できます。

いくつかのテストを行ったところ、問題はいつ関数が実行されるかであることがわかりました

 document.getElementsByTagName('input')[2].click();

入力は、フォームを送信する送信ボタンです。

フォームに入力して送信するにはどうすればよいですか?

4

1 に答える 1

0

Trigger form submit in chrome javascript console question によると、フォームで呼び出す方が簡単かもしれませんsubmit()。私はあなたの問題を再現しようとしましたが、クラッシュはしませんでしたclick().送信ボタンとsubmit()フォームの両方を使用するとうまくいきました.

見た目はSIGABRTかなり悪いですが、UI スレッドから API を呼び出していますか? いいえの場合は、まずそれを試してください。UI スレッドから呼び出された場合は、必ずAndroid Open Source Project Issue Trackerにバグを報告する必要があります。理想的には、クラッシュ直後の adb bugreport の出力と、問題を示すサンプル アプリを含めることをお勧めします。

于 2013-11-14T12:06:13.453 に答える