为什么评估JavaScript崩溃?

时间:2013-11-12 09:21:36

标签: android-webview chromium android-4.4-kitkat

我试图在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();

输入是一个提交按钮,用于发送表单。

如何填写表格并发送?

1 个答案:

答案 0 :(得分:0)

根据Trigger form submission in chrome javascript console问题,在表单上调用submit()可能更简单。我已尝试重现您的问题,但未发生崩溃 - 使用提交按钮上的click()和表单上的submit()工作正常。

SIGABRT看起来很糟糕,你是否从UI线程调用API?如果不是,那么先尝试一下。如果从UI线程调用它,那么你肯定应该在the Android Open Source Project Issue Tracker上提交一个bug。理想情况下,您会在崩溃后立即包含adb bugreport的输出,并展示示例问题的示例应用程序。