您可以在两个位置获得相关视频:在带有网格的视频的结尾,以及暂停时在视频的底部。我想出了一种方法,可以在最后删除它们,并使大多数企业至少可以容忍它们的底部。
1.删除视频结尾处的相关视频
IFrame Player API:事件
为了避免在视频结尾显示相关视频,我只是停止了视频,所以它返回到显示缩略图和播放按钮:
var player = new YT.Player('player', {
height: '390',
width: '640',
events: {
'onStateChange': function(event){
switch(event.data){
case 0:
player.stopVideo();
break;
case -1:
case 1:
case 2:
case 3:
case 5:
default:
break;
}
}
}
});
您也可以替换player.stopVideo();
为要运行的任何其他代码。
2.在视频底部制作相关视频仅显示您的视频
IFrame Player API:YouTube嵌入式播放器和播放器参数
rel=0
不再避免显示任何相关视频;现在,它仍然会显示相关视频,但至少它们只会来自您的频道。这种情况在2018年9月25日左右的某个时间发生了变化(文档)。
通过playerVars
在YT.Player中进行设置,我们至少可以使相关视频仅显示我们频道的视频。文档尚不清楚您是否必须将其playerVars
设置为对象,但是可以像这样设置它:
var player = new YT.Player('player', {
...
playerVars:{
rel: 0
modestbranding: 1,
},
...
});
2A。从底部删除相关视频的潜在方法
如果有时间,我可能会对其进行更多研究,但这可能是答案所在:
我们可以轻松地访问iframe对象,但不能对其进行任何操作:IFrame Player API:访问和修改DOM节点。似乎因为我们要从YouTube编辑iframe,所以存在安全方面的顾虑(无论我们实际上在做什么)。理想情况下,我可以使用删除“更多视频”文本player.getIframe().contentWindow.document.querySelector('.ytp-pause-overlay.ytp-scroll-min').remove()
,但是运行时player.getIframe().contentWindow.document
出现错误SecurityError: Permission denied to access property "document" on cross-origin object
。
但是playerVars
还有一个origin
值可以使我们无论如何访问iframe的对象:
var player = new YT.Player('player', {
...
playerVars:{
origin: 'https://mywebsite.com'
},
...
});
它不适用于localhost,但这可能是Chromium和Firefox的问题。也许这是一个实时网站上的合法选择;如果/如果我尝试成功,我会更新此帖子的内容。