تعطيل التشغيل التلقائي في YouTube Javascript API
-
02-01-2020 - |
سؤال
أعرف كيفية استخدام التشغيل التلقائي:0 في المعلمات وفي عنوان url.المشكلة هي عندما أستخدم الدالةloadVideoByID().يبدو أن الفيديو الأولي لا يبدأ تلقائيًا دائمًا.ولكن في اللحظة التي أقوم فيها بتحميل مقطع فيديو جديد، يبدأ تشغيل الفيديو الجديد تلقائيًا.لا أريد أن يبدأ هذا الجهاز الجديد تلقائيًا أيضًا
$(document).ready(function() {
var player;
window.onYouTubePlayerAPIReady = function() {
player = new YT.Player('player', {
height : '390',
width : '640',
videoId : 'JW5meKfy3fY',
playerVars : {
'autoplay' : 0,
'rel' : 0,
'showinfo' : 0,
'egm' : 0,
'showsearch' : 0,
'controls' : 0,
'modestbranding' : 1,
},
events : {
'onReady' : onPlayerReady,
'onStateChange' : onPlayerStateChange
}
});
};
window.onPlayerReady = function(event) {
//event.target.playVideo();
loadNewVid("bHQqvYy5KYo");
};
window.onPlayerStateChange = function(event, element) {
//When the video has ended
if (event.data == YT.PlayerState.ENDED) {
//Get rid of the player
element.style.display = "none";
}
};
function loadNewVid(vidID){
player.loadVideoById(vidID, "large");
}
});
المحلول
حسب التعريف، loadVideoById()
يقوم بتحميل وتشغيل الفيديو.ما تريد استخدامه هو cueVideoById()
, ، والذي سيقوم بإعداده ولكن انتظر حتى يتم تشغيل الأمر فعليًا.
https://developers.google.com/youtube/js_api_reference#cueVideoById
نصائح أخرى
أعتقد أن هذا المنشور قديم جدًا، لكنني سأشارك أسلوبي على أي حال، في حالة تعثر شخص ما فيه، كما فعلت للتو:
لأنه لا توجد وسيلة للاتصال loadVideoById
ومنع التشغيل التلقائي، أقترح الاتصال بـ destroy()
على المشغل وإعادة إنشاءه باستخدام المعرف الجديد.
دعنا نقول شيئا مثل:
$(document).ready(function() {
var player;
var playerParams = {
height : '390',
width : '640',
videoId : 'JW5meKfy3fY',
playerVars : {
'autoplay' : 0,
'rel' : 0,
'showinfo' : 0,
'egm' : 0,
'showsearch' : 0,
'controls' : 0,
'modestbranding' : 1,
},
events : {
'onReady' : onPlayerReady,
'onStateChange' : onPlayerStateChange
}
}
window.onYouTubePlayerAPIReady = function() {
player = new YT.Player('player', playerParams);
};
window.onPlayerReady = function(event) {
//event.target.playVideo();
loadNewVid("bHQqvYy5KYo");
};
window.onPlayerStateChange = function(event, element) {
//When the video has ended
if (event.data == YT.PlayerState.ENDED) {
//Get rid of the player
element.style.display = "none";
}
};
function loadNewVid(vidID){
player.destroy();
playerParams.videoId = vidID;
player = new YT.Player('player', playerParams);
}
});
آمل أن هذا قد يساعد