Недавно я начал использовать WebGL на сайте, который я разрабатываю. Он используется как усовершенствование, и сайт возвращается к рендерингу холста, если WebGL не поддерживается или имеет ошибку.
К сожалению, когда в Google Chrome возникает исключение WebGL, появляется панель сообщений об ошибках. Этот бар не исчезает, пока пользователь не взаимодействует с ним. Если они перезагрузятся или перейдут на другую страницу, сообщение снова появится в следующий раз, когда сайт попытается использовать WebGL.
В случае моего сайта это означает, что сообщение об ошибке WebGL никогда не исчезнет, потому что каждая страница пытается использовать WebGL. Как только произошла ошибка, Chrome не будет использовать WebGL снова на том же сайте, пока пользователь не сообщит об этом Reload, поэтому сообщение о непрерывной ошибке на самом деле не указывает на непрерывные ошибки, а просто на попытки использовать WebGL.
После возникновения ошибки WebGL этот диалог можно воспроизвести на этом сайте, просто выполнив:
document.createElement('canvas').getContext('experimental-webgl');
Это не вызывает никаких исключений, и мой метод .onerror
в элементе canvas не был вызван.
Мне не удалось исследовать это слишком глубоко, потому что я не смог достоверно воспроизвести ошибку WebGL. (Даже если бы я мог воспроизвести один на своем компьютере, он не может воспроизводиться на других.)
Такое поведение было бы разумным для сайта, который полагался на WebGL, но мой не делает этого, поэтому сообщение просто отвлекает и запутывает пользователей.
Есть ли способ подавить это сообщение об ошибке? Я не против возвращаться к поведению Ignore, когда WebGL отключен после возникновения ошибки.