Мы используем sentry.io / ravenjs для отслеживания ошибок JavaScript. Мы видим огромное количество ошибок со следующими деталями:
document.getElementsByClassName.ToString is not a function
<anonymous> at line 1:33
Детали для пользователей / устройств, генерирующих эту ошибку, очень похожи:
browser: Chrome 59.0.3071 (100%)
device: Samsung (100% / different models)
OS: Android (100% / different versions)
Ошибку генерируют разные пользователи, но мы не знаем, как ее смоделировать или решить. Об ошибке не сообщается ни в одном другом браузере, устройстве или операционной системе. Есть ли у кого-нибудь мысли, как это решить.
Обновление: как указывалось, сообщенная ошибка - это ToString, а не toString, что имеет больше смысла. Поскольку эта ошибка возникает только на определенном устройстве / браузере, маловероятно, что проблема связана с неопределенным свойством или функцией. Если это так, то ошибка должна возникать и на других устройствах / браузерах.
Текст ToString нельзя найти в наших собственных сценариях JavaScripts или сторонних сценариях Java.
Это не ToString, это toString. Но зачем вам toString из getElementsByClassName, я понятия не имею.
Я не уверен, что объект HTMLCollection, возвращаемый getElementsByClassName, имеет метод toString (как указано выше, ToString определенно не является стандартным методом)
Я согласен, что странно, что сообщенная ошибка - это ToString вместо toString. Однако, если это проблема, ошибка может возникнуть и в других браузерах. Но это не так.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если вы хотите получить элемент по имени его класса, вы должны использовать:
document.getElementsByClassName('yourClass');
Однако это вернет функциональность «document.getElementsByClassName» и то, как ее использовать, какие параметры использовать и т. д.
document.getElementsByClassName.toString();
Если вы хотите получить строку своего элемента html, вы должны использовать это:
document.getElementsByClassName('yourClass')[0].outerHTML;
Ошибка возникает только на мобильном устройстве Samsung с Chrome 59.0.3071. Если проблема была в неисправной функции, не должна ли ошибка возникать на всех / нескольких устройствах?
Это не совсем ошибка, это скорее предупреждение. Вы можете взять любую функцию, связанную с HTML, например «документ», и добавить к ней что угодно, например «document.blabla», это не должно приводить к сбою вашей программы и должно говорить только «undefined». Если вы добавите к нему «()», он попытается найти существующую функцию и выдаст вам ошибку, поскольку она, вероятно, не существует.
Проблема с браузером, https://github.com/SamsungInternet/support/issues/56
document.getElementsByClassName- это функция, которая запускается в браузере,document.getElementsByClassName('class')вроде таковой. Браузер определенно сообщает об ошибке, но разработчик, возможно, применил блок try catch, чтобы ошибка не генерировалась.