Многие причины могут привести к таким ошибкам или подобным (часто сообщение об ошибке не является полезным или значимым).Прежде всего, если вы можете иметь минимальный SDK = API уровня 19 (KITKAT, Android 4.4) или выше, используйте
webView.evaluateJavascript(String script,new ValueCallback<String>() {
@Override
public void onReceiveValue(String s) {
}
});
вместо
webView.loadUrl("javascript: doSomething();");
версий Android из KITKAT выше (4.4) иметь Chrome WebView вместо старого Android WebView, а у нового возникают проблемы с loadUrl для внедрения JavaScript, он более строг в оценке JavaScript (или имеет некоторые ошибки), на самом деле.
СloadUrl (и вообще) будьте осторожны:
- Использование двойных кавычек вместо одинарных кавычек для разделителей строковых литералов (но, возможно, не в некоторых особых случаях),
пример:
ch=""\"; //it is good
ch='"'; // it is bad
-При внедрении кода в прослушиватель событий с использованием двойных кавычек в качестве разделителя в строках исходного кода,
пример:
var string="parameter";
element.setAttribute("onclick","doSomething('"+stringVar+"');return false;"); // good
-Использование фигурных скобок после предложения «if», а не одно прямое выражение, пример:
if (i>0) {doSomething(i);} // good
if (i>0) doSomething(i); // bad
-Будьте осторожны с регулярными выражениями (некоторые символы могут быть вредны для самого регулярного выражения, результата и, возможно, JavaScript интерпретатор / компилятор).