Как обновить DOM, который вставляет видео YouTube во время воспроизведения видео? - PullRequest
1 голос
/ 08 марта 2011

Я обновляю объект DOM во внешнем интерфейсе javascript, который воспроизводит видео на YouTube (с помощью встроенного YouTube).

Теперь я хочу, чтобы страница обновлялась сразу после обновления объекта DOM: Я обновляю источник видео (URL) и хочу, чтобы текущее видео было остановлено, а новое видео немедленно начало воспроизводиться.

Я использую

document.getElementById("embed_id").src=newUrl.fetch_url;

где:

"embed_id": это идентификатор, который я дал элементу YouTube-embed объекта;

src: параметр, по которому для воспроизведения требуется ссылка на источник

newUrl.fetch_url: внутренний параметр содержит URL нового видео

В настоящее время происходит то, что, когда я смотрю на отладчик Javascript, я вижу, что элемент и значения src обновлены, но исходное видео все еще воспроизводится. Как сделать так, чтобы DOM обновлялся, чтобы новое видео начало воспроизводиться?

Ответы [ 2 ]

1 голос
/ 08 марта 2011

Хорошо, что вы хотите сделать, это что-то вроде:

var embedded = document.getElementById("embed_id");
while (embedded.hasChildNodes()) {
    embedded.removeChild(embedded.firstChild);
}
//Re-run DOM insertion here.

Это удалит все дочерние элементы embedded s, чтобы вы могли повторно вставить вставку YouTube с новым URL.

Обновление :

Это эффективно «касается» элемента DOM, должно быть тем, что вы ищете ...

var other = element.nextSibling;

if ( other ) {
  other.parentNode.removeChild(element);
  other.parentNode.insertBefore(element,other);
} else {
  other = element.parentNode;
  other.removeChild(element);
  other.appendChild(element);
}

Источник

0 голосов
/ 08 марта 2011

поэтому в итоге я не обновил, но добавил новый элемент:

var body = document.getElementById('body');
var newObject = currentObject.cloneNode(true);
newObject.childNodes[1].setAttribute('value',"http://www.youtube.com/v/"+newUrl.fetch_url+"?enablejsapi=1&version=3&autohide=1&showinfo=0?fs=1&autoplay=1");
$('body').append(newObject).hide().fadeIn(10000);

Я использовал childNodes [i] .setAttribute (), чтобы добраться до нужного места для обновления.

Как сказал @Myles, я не смог найти способ обновить DOM, но после этого добавления я удалю старый объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...