2012-05-02 21 views
7

Tengo una img vacío en mi página <img ... src=""/>HTML/Javascript eliminar datos de img atributo src

Cuando se produce un evento que establece el atributo img a una línea png datos:

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

Cuando otro evento tiene lugar fijo el src para nada (quitar la IMG): myImg.src = ""

el problema es: el img no se recarga cuando me puse src para nada. Si oculto el img, espere un momento y muéstrese de nuevo, funciona, pero es un hack feo ...

PD: No quiero establecer una imagen 'en blanco' predeterminada, la necesito realmente en blanco (src = "").

Editar: Mi javascript:

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

Edit2: Navegador: Google Chrome 18.0.1025.162 Ubuntu 12.04

+1

puede mostrar su código JS? – Bongs

+0

tome el código base64 para un 1px/1px transparente y utilícelo, también puede ser acerca de: en blanco, pero creo que se mostrará como roto en algún navegador que no devuelva un formato de imagen. – GillesC

+0

¿Puedes compartir el código de script que estás usando? – redlena

Respuesta

6

Técnicamente, una etiqueta de imagen se requiere que tenga un atributo src y que se supone que NO estar vacío Sin embargo, el W3C specification no es claro en cómo manejar los casos cuando el atributo src está vacío. Como resultado, cada navegador maneja esta situación de forma ligeramente diferente.

En realidad, hay algunos problemas que pueden surgir de esta falta de especificación, el tuyo es solo uno de ellos. Se puede encontrar una vista más detallada de este problema here.

Como han señalado otros, es mucho más preferible ocultar/mostrar la imagen mediante CSS (visibilidad: ninguna si desea mantener el espacio ocupado, o mostrar: ninguna si desea que la imagen desaparezca por completo) . Alternativamente, puede simplemente eliminar la etiqueta de imagen completa usando JS y crear una nueva imagen cuando desee volver a insertarla.

+0

Gracias, la visibilidad: oculta hizo el trabajo aunque es difícil, no muestra el esquema IMG (puedo vivir con eso). – islon

+1

@islon Tenga en cuenta que si establece un img para 'display: none' o' visibility: hidden' y tiene un src válido, ¡todavía se descarga! –

3

Le sugiero que reemplace la imagen por una nueva. En jQuery que podría hacer algo como:

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

que manejo este problema mediante código de golpe y el trabajo para mí:

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

¡Tu truco hizo el trabajo! – Ruben