Я использую Sentry
для отлова ошибок на моей платформе (Cake PHP 2. *), и мне выдаётся следующая ошибка:
TypeError ?(clients/view/1998667)
· Object http://192.168.1.130/clients/view/1998667 has no method 'includes'
Я не понял ни String
ни для Array
объектов в этой версии браузера не была определена функция Object.prototype.includes
, поэтому я добавил ее перед любым сценарием, который потенциально может использовать этот метод объекта (перед библиотеками и пользовательским кодом).
(не совершенные функции но должен сделать трюк для моего варианта использования).
if (String.prototype.includes === undefined)
{
console.log('String.prototype.inclues is UNDEFINED');
String.prototype.includes = function(word){
return this.toLowerCase().indexOf(word.toLowerCase()) > -1;
}
}
if (Array.prototype.includes === undefined)
{
console.log('Array.prototype.inclues is UNDEFINED');
Array.prototype.includes = function(search){
var includes = false;
this.forEach(function(item){
if (item === search)
{
includes = true;
return includes;
}
});
return includes;
}
}
Странная вещь; даже когда я запускаю Android with API 16
на моем эмуляторе, Sentry продолжает перехватывать ошибку, и представление не работает должным образом, и я не могу отловить ошибку в моем Android коде.
Я даже тестировал в Safari тот же пользовательский агент из Android WebView Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; Android SDK built for x86 Build/MASTER) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
Android код для консольных сообщений:
webView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
android.util.Log.d("WebView", consoleMessage.message());
return true;
}
});
Мой вопрос: как я могу поймать JavaScript ошибок в Android Java и что я не делаю правильно для работы определенных функций?