Обмен HTML-объектами с помощью Javascript — потоки Twitch

Поэтому я планирую интегрировать потоки Twitch в веб-сайт; встраивание каждого из них довольно просто, но, как мне кажется, было бы проще для пропускной способности каждого: написать какой-нибудь Javascript, чтобы показать один поток, и нажать кнопку, чтобы поменять местами значения атрибутов, чтобы они соответствовали именам учетных записей Twitch других. Пока то, что я придумал, не увенчалось успехом, поэтому я здесь сегодня.

Это то, что я придумал до сих пор для HTML:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Test Site - Build 1.1.6.5 - Videos Page</title>
<link rel="stylesheet" type="text/css" href="main.css" />
<script src="scripts/stream-switch.js"></script>
</head>
<body>
<object type="application/x-shockwave-flash" height="540" width="960" id="live_embed_player_flash" data="http://www.twitch.tv/widgets/live_embed_player.swf?channel=username1" bgcolor="#000000"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="allowNetworking" value="all" /><param name="movie" value="http://www.twitch.tv/widgets/live_embed_player.swf" /><param id="flashvars" name="flashvars" value="hostname=www.twitch.tv&channel=username1&auto_play=true&start_volume=25" /></object>
<br/>
<button type="button" onclick="User1Stream();">User1's Stream</button>
<button type="button" onclick="User2Stream();">User2's Stream</button>
</body>
</html>

А вот встроенный JS:

function User2Stream()
{
   var StreamObject = document.getElementById("live_embed_player_flash");
   var StreamParameter = document.getElementById("flashvars");
   if (StreamObject != null)
   {
       StreamObject.setAttribute('data', 'http://www.twitch.tv/widgets/live_embed_player.swf?channel=username2');
       StreamParameter = setAttribute('value', 'hostname=www.twitch.tv&channel=username2&auto_play=true&start_volume=25');
   }
}
function User1Stream()
{
   var StreamObject = document.getElementById("live_embed_player_flash");
   var StreamParameter = document.getElementById("flashvars");
   if (StreamObject != null)
   {
       StreamObject.setAttribute('data', 'http://www.twitch.tv/widgets/live_embed_player.swf?channel=username1');
       StreamParameter = setAttribute('value', 'hostname=www.twitch.tv&channel=username1&auto_play=true&start_volume=25');
   }
}

Что ж, дайте мне знать, что, по вашему мнению, я здесь делаю неправильно; надеюсь, это не слишком ошибочно.


person warezIbanez    schedule 05.06.2014    source источник


Ответы (1)


У вас есть две одинарные кавычки после setAttribute( в этой строке в function User2Stream()

StreamParameter = setAttribute(''value', 'hostname=www.twitch.tv&channel=username2&auto_play=true&start_volume=25');

Это должно было вызвать ошибку незавершенной строки в вашей консоли Javascript. Вы снова повторяете ошибку ближе к концу function User1Stream()

StreamParameter = setAttribute(''value', 'hostname=www.twitch.tv&channel=username1&auto_play=true&start_volume=25');

ИЗМЕНИТЬ

Для этого я создал jsFiddle. Я думаю, что setAttribute выше должен быть StreamObject.setAttribute

StreamObject.setAttribute('value', 'hostname=www.twitch.tv&channel=username1&auto_play=true&start_volume=25');
person Robbert    schedule 05.06.2014
comment
Ах, я должен был видеть эти синтаксические ошибки. Теперь они исправлены, и хотя кажется, что при нажатии кнопки объект обновляется, но возвращается к User1 на любой кнопке. - person warezIbanez; 06.06.2014
comment
Я добавил «вернуть ложь»; на следующей строке после StreamParameter на обеих функциях безрезультатно. - person warezIbanez; 06.06.2014
comment
Определено ли где-то setAttribute или это должно быть StreamObject.setAttribute? - person Robbert; 06.06.2014
comment
Хорошо, это изменение заставило переключатель работать правильно. Не знаю, почему я не написал то же самое, что и раньше. Спасибо за ваше время! - person warezIbanez; 08.06.2014