Я играл с API-интерфейсом YouTube iframe и создал базовый набор элементов управления проигрывателя для проигрывателя YouTube с использованием Flash CC HTML5 canvas. Элементы управления состоят из кнопки воспроизведения/паузы, видео-панели с перетаскиваемой головкой воспроизведения и визуальной индикацией буферизации и регулятора громкости. Все работает хорошо в Chrome на моем рабочем столе.YouTube iframe Embed не может управлять аудио на iPad
Однако, когда я тестирую плеер на iPad, все работает отлично, за исключением контроллера громкости. Ползунок движется отлично, но не приводит к изменению громкости.
Я огляделся по сторонам и не смог найти что-то конкретное, чтобы проблема громкости была неконтролируемой на iPad, также, поскольку на iPad нет никакой консоли для консоли. Я не могу по-настоящему засунуть внутрь, чтобы выяснить, что происходит на.
Если у кого-то есть опыт в этом вопросе или какое-либо общее понимание того, что может произойти, это было бы высоко оценено.
Вот JSFiddle https://jsfiddle.net/y3dL9jsw/1/ с проектом в нем.
Вот код отношения к регулятору громкости:
//Volume Control
mainStage.mcplayer.mcvolumecontrol.volIcon.on("mousedown", function(evt){
if(mainStage.mcplayer.mcvolumecontrol.currentFrame == 0){
mainStage.mcplayer.mcvolumecontrol.gotoAndStop(1);
}else{
mainStage.mcplayer.mcvolumecontrol.gotoAndStop(0);
}
});
//Mouse Down Pick-up Video Playhead, Change Cursor to pointy finger
mainStage.mcplayer.mcvolumecontrol.mcvolhead.on("mousedown", function(evt){
isVolGrabbed = true;
document.body.style.cursor='pointer';
});
//Mousemove Move Voulme Playhead
mainStage.mcplayer.mcvolumecontrol.mcvolhead.on("pressmove", function(evt){
if(isVolGrabbed == true){
evt.nativeEvent.preventDefault();//stop browser default actions from happening (Selecting text, etc)
this.x = evt.stageX - mainStage.mcplayer.x - mainStage.mcplayer.mcvolumecontrol.x;//make playhead follow mouse
//constrain playhead x coords to the videobar
if(this.x < 0 + mainStage.mcplayer.mcvolumecontrol.mcvolslider.x){this.x = mainStage.mcplayer.mcvolumecontrol.mcvolslider.x;}
if(this.x > volbarLength + mainStage.mcplayer.mcvolumecontrol.mcvolslider.x){this.x = volbarLength + mainStage.mcplayer.mcvolumecontrol.mcvolslider.x;}
//if the mouse gets too far from the bar along the y axis, drop the head change back the cursor
//this is important because the Youtube player breaks the mouse events if you mouse over it
if((evt.stageY - mainStage.mcplayer.y) < (-1 * playheadConstrain) || (evt.stageY - mainStage.mcplayer.y) > playheadConstrain){
document.body.style.cursor='auto';
isVolGrabbed = false;
}
}
});
mainStage.mcplayer.mcvolumecontrol.mcvolhead.on("pressup", function(evt){
document.body.style.cursor='auto';
volFraction = (mainStage.mcplayer.mcvolumecontrol.mcvolhead.x - mainStage.mcplayer.mcvolumecontrol.mcvolslider.x)/(volbarLength);
playeryt.setVolume(volFraction * 100);
console.log("vol Drop" + volFraction);
isVolGrabbed = false;
});
Спасибо за понимание. Знаете ли вы, что я могу надежно определить, находится ли пользователь в среде iOS, без использования внешних библиотек? – Malco
Вы можете проверить значения 'navigator.userAgent' или' navigator.vendor': http://stackoverflow.com/questions/9038625/detect-if-device-is-ios – JAL