Ввод изображения по умолчанию в случае, если src атрибут HTML <img> не допустим?

Указатель - это концепция указания на ссылку. В C и C ++ вы можете явно обращаться к указателю, но в Java мы используем ссылку для указания объектов. Например, если вы передаете экземпляр методу, мы передаем его ссылку, но в итоге указатель передается. когда вы изменяете состояние экземпляра в методе, оно отражает, когда этот экземпляр используется после завершения вызова метода.

Мы используем ссылку в Java, который является указателем относительно JVM.

Когда мы используем новый оператор, он создает экземпляр в куче и возвращает адрес ссылки, на которую он указывает.

Я полагаю, что это ответило бы на ваш вопрос, если бы вы не могли прокомментировать мой ответ.

254
задан Patrick McElhaney 28 December 2016 в 01:57
поделиться

5 ответов

Я был вдохновлен ответом Пакса и создал алгоритм более общего назначения.

int mod(int a, int b) {
    int s = b;
    while (s <= a) {
        s <<= 1;
    }
    int r = a;
    while (r >= b) {
        s >>= 1;
        if (s <= r) {    
            r -= s;
        }
    }
    return r;
}

Он вычитает степень двух кратных b из a до результат найден.

РЕДАКТИРОВАТЬ: добавлено условие if , чтобы оно работало правильно.

Например, если это делает 100% 7, сначала получается, что 7 * 2 * 2 * 2 * 2 = 112. Затем 112 ( s ) делится на 2 и вычитается из 100 ( r ) (когда s <= r ) и делает это постоянно, пока не будет найден модуль. Следовательно,

s = 112 / 2 = 56, r = 100 - 56 = 44
s = 56 / 2 = 28, r = 44 - 28 = 16
s = 28 / 2 = 14, r = 16 - 14 = 2

, следовательно, 100% 7 = 2

откроется откат (спрайты, используемые на этом веб-сайте *). И если вы используете действительно старый браузер, который не поддерживает объект , он просто проигнорирует этот тег и будет использовать тег img . См. Информацию о совместимости на веб-сайте caniuse . По состоянию на 2018 г. этот элемент широко поддерживается всеми браузерами IE6 +.

* Если URL-адрес изображения не изменился (снова), в этом случае вы, вероятно, увидите альтернативный текст.

298
ответ дан 23 November 2019 в 02:47
поделиться

Используя JQuery, вы можете сделать что-то вроде этого:

$(document).ready(function() {
    if ($("img").attr("src") != null)
    {
       if ($("img").attr("src").toString() == "")
       {
            $("img").attr("src", "images/default.jpg");
       }
    }
    else
    {
        $("img").attr("src", "images/default.jpg");
    }
});
0
ответ дан 23 November 2019 в 02:47
поделиться

Я не думаю, что можно использовать только HTML. Однако с использованием javascript это должно быть выполнимо. Басично перебираем каждое изображение, проверьте, завершен ли он, и если его naturalWidth равна нулю, это означает, что он не найден. Вот код:

fixBrokenImages = function( url ){
    var img = document.getElementsByTagName('img');
    var i=0, l=img.length;
    for(;i<l;i++){
        var t = img[i];
        if(t.naturalWidth === 0){
            //this image is broken
            t.src = url;
        }
    }
}

Используйте его так:

 window.onload = function() {
    fixBrokenImages('example.com/image.png');
 }

Протестировано в Chrome и Firefox

13
ответ дан 23 November 2019 в 02:47
поделиться
<style type="text/css">
img {
   background-image: url('/images/default.png')
}
</style>

Обязательно укажите размеры изображения и укажите, хотите ли вы, чтобы изображение было мозаичным.

15
ответ дан 23 November 2019 в 02:47
поделиться

Меня это устраивает. Возможно, вы захотите использовать JQuery для перехвата события.

 <img src="foo.jpg" onerror="if (this.src != 'error.jpg') this.src = 'error.jpg';">

Обновлено с помощью jacquargs error guard

Обновлено: только решение CSS Недавно я увидел демонстрацию Виталия Фридмана отличного решения CSS, о котором я не знал. Идея состоит в том, чтобы применить свойство content к поврежденному изображению. Обычно : after или : before не применяются к изображениям, но когда они повреждены, они применяются.

<img src="nothere.jpg">
<style>
img:before {
    content: ' ';
    display: block;
    position: absolute;
    height: 50px;
    width: 50px;
    background-image: url(ishere.jpg);
</style>

Demo: https: // jsfiddle. net / uz2gmh2k / 2 /

Как показывает скрипт, поврежденное изображение не удаляется, но это, вероятно, решит проблему в большинстве случаев без использования JS и CSS. Если вам необходимо применить разные изображения в разных местах, просто выделите их с помощью класса: .my-special-case img: before {...

298
ответ дан 23 November 2019 в 02:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: