#javascript #html
#javascript #HTML
Вопрос:
У меня есть видео с кнопками для управления воспроизведением. Если кто-то нажмет кнопку воспроизведения, когда видео уже воспроизводится, видео перезапустится с самого начала. Мне нужно отключить кнопку воспроизведения после первого нажатия и повторно включить ее, когда пользователь запрашивает другое видео.
Кроме того, когда пользователь запрашивает другое видео, я хочу, чтобы текущее видео перестало воспроизводиться и было удалено из проигрывателя. В настоящее время, когда кто-то запрашивает другое видео в определенных браузерах (например, IE), аудио из первого видео продолжает воспроизводиться.
Вот мой код на данный момент:
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
$(".buttons").click(function () {
var divname= this.value;
if (divname == "Video") {
// Add iframe to div#Video
$("#Video").append('<h2>YouTube</h2><iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/X3QoZn3lEbk" frameborder="0" allowfullscreen></iframe>');
} else if (divname == "Close") {
// Clear the iframe
$("#Video").empty();
}
//Hide/Show
$("#" divname).show("slow").siblings().hide("slow");
});
});
</script>
<script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
$(".buttons").click(function () {
var divname= this.value;
if (divname == "Video2") {
// Add iframe to div#Video2
$("#Video2").append('<h2>YouTube</h2><iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/9AZ6jvA9sUw" frameborder="0" allowfullscreen></iframe>');
} else if (divname == "Close") {
// Clear the iframe
$("#Video2").empty();
}
//Hide/Show
$("#" divname).show("slow").siblings().hide("slow");
});
});
</script>
<title></title>
</head>
<body>
<div id="buttonsDiv">
<input type="button" id="button1" class="buttons" value="Video">
<input type="button" id="button2" class="buttons" value="Video2">
<input type="button" id="button#" class="buttons" value="Close">
</div>
<div>
<div id="Video" style="display:none"></div>
<div id="Video2" style="display:none"></div>
<div id="Close" style="display:none"></div>
</div>
</body>
</html>
o.k Я решил проблему с одним щелчком мыши, и нет необходимости использовать кнопку закрытия, но все еще проблема с повторением iframe.
если кто-то нажмет на первое видео, он не сможет нажать еще раз, если не нажмет на вторую кнопку video и не вернется снова, чтобы нажать на первую, но проблема в повторении и сохранении воспроизведения звука в фоновом режиме
Как заставить clear iframe снова работать в этом коде после того, как я решил проблему one click?
Примечание: очистить iframe сработал, когда я изменил значение close на video и значение video2, но функция очистки всего iframe одним щелчком мыши не работает
новый код
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#button1').click(function(){
$('#button2').attr('disabled','');
$('#button1').attr('disabled','disabled');
var divname= this.value;
if (divname == "Video") {
// Add iframe to div#Video
$("#Video").append( '<h2>YouTube</h2><iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/Jwc43KzUl_k" frameborder="0" allowfullscreen></iframe>' );
} else if (divname == "Video2") {
// Clear the iframe
$("#Video").empty();
}
//Hide/Show
$("#" divname).show("slow").siblings().hide("slow");
});
});
</script>
<script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#button2').click(function(){
$('#button1').attr('disabled','');
$('#button2').attr('disabled','disabled');
$(this).attr("disabled", "true");
var divname= this.value;
if (divname == "Video2") {
// Add iframe to div#Video2
$("#Video2").append('<h2>YouTube</h2><iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/9AZ6jvA9sUw" frameborder="0" allowfullscreen></iframe>');
} else if (divname == "Video") {
// Clear the iframe
$("#Video2").empty();
}
//Hide/Show
$("#" divname).show("slow").siblings().hide("slow");
});
});
</script>
<title></title>
</head>
<body>
<div id="buttonsDiv">
<input type="button" id="button1" class="buttons" value="Video">
<input type="button" id="button2" class="buttons" value="Video2">
</div>
<div>
<div id="Video" style="display:none"></div>
<div id="Video2" style="display:none"></div>
</div>
</body>
</html>
чтобы увидеть результат, скопируйте приведенный выше код в html test code для лучшего понимания
Ответ №1:
Действительно ли эти кнопки или ссылки оформлены так, чтобы выглядеть как кнопки? Если это настоящая кнопка, то вы можете отключить ее через my_button.attr('disabled', true)
.
В противном случае вам нужно будет придумать какой-нибудь способ сохранения этого состояния самостоятельно. Вы всегда можете использовать метод данных jQuery для сохранения состояния «кнопка» включена / отключена. С другой стороны, если вы обрабатываете это с помощью наличия / отсутствия класса, тогда вы можете позаботиться о затенении кнопки, чтобы пользователи знали, что она отключена.
Другими словами, когда кто-то нажимает play, вы бы добавили класс «disabled» к кнопке play. Затем используйте некоторый CSS, который нацелен на элемент, чтобы придать ему другой цвет, чтобы пользователи знали, что на него не следует нажимать. Затем в функции воспроизведения проверьте, имеет ли кнопка воспроизведения класс disabled, прежде чем что-либо делать.
Что касается видео, продолжающего воспроизводиться в некоторых браузерах, вы всегда можете выбрать ядерный вариант: полностью удалить iframe и поместить на его место новый.
Комментарии:
1. Спасибо за ваш ответ, Майкл, это ссылка, оформленная в виде кнопки (я не уверен, что понимаю вашу точку зрения), но да, я хочу, чтобы кнопка была затенена (не может быть нажата снова, если пользователь не нажмет другую кнопку) извините, что я не профессионал в использовании любого языка веб-программирования, если вы скопируете опубликованный код и протестируете его, вы увидите результат самостоятельно, поэтому, пожалуйста, отредактируйте его для меня. извините за мой английский, но мне нужна ваша помощь, пожалуйста
2. Я редактирую код в вопросе, все еще хочу снова выполнить очистку всего фрейма