2015-07-15 2 views
1

Использование socket.io, я выдвигаю изображения с сервера к клиенту с помощью base64 закодированные строки:Как изменить изображение src после события socket.io?

socket.on('send_picture', function (data){ 
    socket_data = (socket_data + data); 
    document.getElementById('imgid').src = socket_data 
}) 

Как я могу сбросить в ГКЗ 'imgid' на следующем Socket.io случае? Он работает нормально один раз, но затем не будет отображаться новые изображения, пока я не обновить страницу

+0

Вы используете URI данных? – jfriend00

+0

Да, я. Он отлично работает после первого нажатия сокета сервера, но после этого появляется URL-адрес imgid.src URI и не будет динамически изменяться с новым значением для «socket_data» – Leif

+0

Вы всегда можете обойти его, просто заменив img с новым, каждый раз, когда вы хотите показать новое изображение. Это то, что я сделал в слайд-шоу из-за проблем с постоянным изменением '.src' на одном изображении. – jfriend00

ответ

1

Я обнаружил, что самый надежный способ загрузить новый контент изображения - это создать новый элемент изображения каждый раз и заменить предыдущий объект изображения с новым. Вы можете сделать это вот так:

socket.on('send_picture', function (data){ 
    socket_data = socket_data + data; 
    var oldImg = document.getElementById('imgid'); 
    var newImg = new Image(); 
    newImg.src = socket_data; 
    newImg.id = 'imgid'; 
    oldImg.parentNode.replaceChild(newImg, oldImg); 
}); 
Смежные вопросы