kiedy umieszczam tag img, tworzę atrybut src dynamicznie. Czy istnieje sposób testowania czy src (ścieżka gdzie obraz znajduje) faktycznie istnieje w javascript, aby zapobiec jej wystąpieniu:zobacz, czy src z img istnieje
Odpowiedz
Można użyć zdarzenia error
:
var im = document.getElementById('imageID'); // or select based on classes
im.onerror = function(){
// image not found or change src like this as default image:
im.src = 'new path';
};
Inline Wersja:
<img src="whatever" onError="this.src = 'new default path'" />
Albo
<img src="whatever" onError="doSomething();" />
<img>
tag obsługuje tych zdarzeń:
abort
(onAbort)error
(onError)load
(onLoad)
Więcej informacji:
Widziałem na innych forach, że to nie działa w IE, czy to prawda? –
@Mr: Działa dla mnie: http://jsbin.com/egohud – Sarfraz
Dobrze, dzięki! Prawdopodobnie wcześniejsze wersje, kto wie xD dzięki. –
można dokonać wcześniejszej rozmowy AJAX (z head
metody) i zobaczyć kod zwrotny serwer lub użyć onerror
zdarzenie, aby zmienić adres URL lub ukryć, np
<img src="notexist.jpg" onerror="this.style.visibility = 'hidden'">
(Użyłem atrybut inline tylko wyjaśnić ideę)
Wspaniały przykład. Działa jak marzenie. –
Teraz zbliża to w niewłaściwy sposób.
Po wygenerowaniu linków za pomocą skryptu po stronie serwera sprawdź, czy plik istnieje, czy nie (na przykład za pomocą file_exists()
w PHP).
Nie należy polegać na JavaScript, gdy można to zrobić po stronie serwera, ponieważ JavaScript można zmienić i wyłączyć.
Zadaj sobie pytanie, w jaki sposób generujesz atrybuty src=
i sprawdź, czy plik istnieje i czy nie, i podaj alternatywę.
Jeśli tworzysz src dynamicznie z javascript można użyć to:
var obj = new Image();
obj.src = "http://www.javatpoint.com/images/javascript/javascript_logo.png";
if (obj.complete) {
alert('worked');
} else {
alert('doesnt work');
}
Obraz istnieje w następującej ścieżce, ale po uruchomieniu kodu uruchamia się komunikat "nie działa". Czy to z powodu "polityki tego samego pochodzenia"? – yalpertem
to dlatego, że obj.complete zwraca wartość false. kod zostanie natychmiast wykonany. podczas gdy państwo nie jest jeszcze gotowe. więc zawsze iść do innego bloku –
- 1. jQuery wybierz img z src
- 2. Sprawdź, czy img src jest pusty jQuery
- 3. XPath wybierz łącza graficzne - macierzysty link href z img src tylko jeśli istnieje, w przeciwnym razie wybierz img src link
- 4. Błąd konsoli kątowej img src
- 5. Pobierz src elementu img z div?
- 6. Nagłówek autoryzacji w img src link
- 7. Angular.js - Filtr w tagu img src
- 8. Python 2.7 Piękne Soup img src Extract
- 9. Polityka bezpieczeństwa treści: dane "img-src": "
- 10. <img src> w/timeout?
- 11. Jak odświeżyć src z <img /> z jQuery?
- 12. HTML/JavaScript - Zdalne img src z automatycznym http/https prefiks
- 13. JavaScript - Uzyskaj rozmiar w bajtach z HTML img src
- 14. HTML/Javascript usunąć dane z img atrybutu src
- 15. Definiowanie atrybutu src w CSS <img> w CSS
- 16. Zastosowanie NG-src vs src
- 17. zmiana wejścia pliku wymiany img src i zmiana koloru obrazu
- 18. Edytor TinyMCE dodaje dane-mce-src do <img />
- 19. AngularJS nie aktualizuje img src po zmianie modelu
- 20. Wyświetlanie macierzy bajtów w atrybucie src znacznika img
- 21. Warunkowa zmiana img src na podstawie danych modelu
- 22. Scrapy - ekstrakt zagnieżdżony "img src" przy użyciu xPathSelector
- 23. Dopasowywanie atrybutu SRC znacznika IMG przy użyciu preg_match
- 24. Oracle Blob jako img src na stronie PHP
- 25. Jak uzyskać img src za pomocą Nokogiri i at_css
- 26. PHP - zastąp znaczniki <img> i zwróć src
- 27. Zamień obraz src z jquery
- 28. Czy istnieje odpowiednik img (javascript) w rozmiarze tła: okładka?
- 29. Extract obraz src z ciągiem
- 30. jQuery zmieniając <img> src z $ (selektor) .prop zajmuje dużo czasu
może warto rozważyć przy użyciu skryptu po stronie serwera, aby sprawdzić, czy to jako przeglądarki mogą mieć wyłączony javascript. – rogerlsmith
Zdefiniuj "faktycznie istnieje".Ze względu na zasady pochodzenia między domenami nie będzie można sprawdzić obrazów, które przeglądarka pobiera z witryny zdalnej przy użyciu Javascript, więc to, o co prosisz, może być niemożliwe. Możesz wysłać adres URL do serwera i go pobrać plik, ale jest to zły pomysł z punktu widzenia bezpieczeństwa. – Borealid
Znalazłem ten wpis. To powinno ci pomóc. http://www.irt.org/script/52.htm –