Я запускаю сценарий, который динамически загружает изображения в зависимости от нескольких критериев. Сценарий не знает заранее, существует ли конкретный источник изображения и, следовательно, необходимо проверить перед отображением изображения. Я делаю это, заменяя обработчик onerror
на элементе функцией, которая пытается изящно обработать событие.Подавление HTMLImageElement onerror
На первый взгляд это работает довольно хорошо, однако, несмотря на то, что я заменил событие, браузер все еще проверяет 404 ошибки в консоли, которые я не хочу. Хуже всего то, что IE отображает печально известный значок ошибки JS в строке состояния, который я нахожу довольно неудобным.
Я попытался суммировать проблему в JSFiddle.
var img = new Image();
img.onerror = function (ev) {
alert("This does not exist!");
return true;
}
img.onload = function (ev) {
document.body.appendChild(this);
}
img.src = "foo.png"; //Missing image
В принципе, я хочу, чтобы подавить все отчеты об ошибках для этого элемента таким образом, что консоль не перегружена лишним выводом ошибок.
Я знаю, что я мог бы решить эту проблему, предварительно запрограммировав и оценив заголовки HTTP с помощью скриптов AJAX и серверной стороны, которые, в то время как технически возможные решения, я бы предпочел избежать. Однако, хотя я использую только стандартный JS в моем примере, код JQuery также является приемлемым.
Я пробовал читать информацию о спецификации события, но поскольку веб-скрипты по-прежнему являются путаницей запутывания ECMAScript, HTML DOM, клиентом, пылью pixy и теперь определениями HTML5, которые мы все любим ненавидеть, это действительно не помогло меня мудрее. Самое близкое, что я получил, это Mozilla's documentation (что интересно даже не указывает правильные параметры функции), который предположил, что разрешение события true
будет подавлять ошибки, но это не работает.
Вы загружаете изображения в тот же домен или не делаете? –
@dystroy Потенциально оба. Поскольку это часть внутренней библиотеки, тип источника неизвестен, но обычно это будут локальные файлы. –
Похоже, что это дубликат, и, к сожалению, решения нет: \ –