2012-05-02 15 views
7

mam pustą img w moją stronę <img ... src=""/>HTML/Javascript usunąć dane z img atrybutu src

Gdy wystąpi zdarzenie ustawić atrybut img do inline png dane:

<img ... src="data:image/png;base64,..."/>

Kiedy innego zdarzenia ustawić SRC do nic (usuń img): myImg.src = ""

problemem jest: IMG nie przeładować kiedy ustawić SRC do niczego. Jeśli ukryję plik IMG, poczekaj chwilę i pokaż go ponownie działa, ale jest to brzydkie włamanie ...

PS: Nie chcę ustawiać domyślnego "pustego" obrazu Potrzebuję go, aby był naprawdę pusty (src = "").

Edit: Moje javascript:

biometria.setImage = function(png) { 
    if(png) 
     bioCanvas.src = 'data:image/png;base64,' + png; 
    else 
     bioCanvas.src = ''; 
}; 

Edit2: Przeglądarka: Google Chrome 18.0.1025.162 Ubuntu 12.04

+1

można pokazać swój kod JS? – Bongs

+0

chwyć kod base64 dla przezroczystego 1px/1px i użyj go, może również o: pustym, ale myślę, że będzie wyświetlane jako uszkodzone w niektórych przeglądarkach jako nie zwracające formatu obrazu. – GillesC

+0

Czy możesz udostępnić kod skryptu, którego używasz? – redlena

Odpowiedz

6

Technicznie tag obraz musi posiadać atrybut src, i to ma NIE być pustym. Jednak W3C specification nie jest jasne, jak obsługiwać przypadki, gdy atrybut src jest pusty. W rezultacie każda przeglądarka radzi sobie z tą sytuacją nieco inaczej.

Istnieje naprawdę sporo problemów, które mogą wynikać z tego braku specyfikacji, twój jest tylko jednym z nich. Bardziej szczegółowe spojrzenie na ten problem można znaleźć here.

Jak zauważyli inni, znacznie lepiej jest ukryć/pokazać obraz za pomocą CSS (albo widoczność: brak, jeśli chcesz zachować zajmowaną przestrzeń, albo wyświetlaj: brak, jeśli chcesz, aby obraz całkowicie zniknął) . Możesz też po prostu usunąć cały tag obrazu za pomocą JS i utworzyć nowy obraz, gdy chcesz go wstawić.

+0

Dzięki, widoczność: ukryty wykonał zadanie nawet trudne, nie wyświetlając obrazu img (mogę z tym żyć). – islon

+1

@islon Zwróć uwagę, że jeśli ustawisz img na 'display: none' lub' visibility: hidden' i ma on prawidłowy src, nadal będzie pobrany! –

3

Proponuję zastąpić obraz nowym. W jQuery można zrobić coś takiego:

$('#yourImage').replaceWith('&lt;img src="" id="yourImage" /&gt;'); 
2

obsłużyć ten problem przez rozdmuchiwanie kodu i pracy dla mnie:

document.getElementById('tst').removeAttribute('src'); 
+0

Twoja sztuczka wykonała zadanie! – Ruben

Powiązane problemy