我试图在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();
输入是一个提交按钮,用于发送表单。
如何填写表格并发送?
答案 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的输出,并展示示例问题的示例应用程序。