我制作了一个代码,将youtube搜索结果中的上传者名称,上传时间和观看次数再次放在一行中,就像之前一样。 它会正常工作,直到您搜索频道名称。当一个频道显示在结果中时,它有三个'yt-uix-sessionlink g-hovercard spf-link'分类元素而不是一个。我希望代码跳过频道,这就是为什么3被添加到一个变量(跳过频道标题,其下的其他频道标题和频道图片),以及1到其他(这就是更新时间和视频数量频道,它与上传时间和视频观看次数相同。 只有在当前数组项目也具有'yt-uix-tile-link'类时才会发生这种情况,因为结果中显示的频道只有我在“elemss”中检查的相同类,并且在顶部频道标题上也是如此而不是视频标题。 但似乎没有用。它甚至没有运行警报。我试着用
检查它的整个类属性if(elemss[i+elemsss].className=='yt-uix-sessionlink yt-uix-tile-link yt-ui-ellipsis yt-ui-ellipsis-2 g-hovercard spf-link')
它仍然没有用。 我只需要知道为什么这不起作用,它应该跳过频道,但它不会。您可以在youtube搜索结果中尝试此代码,除非结果中有频道或广告结果(或播放列表),否则它可能会有效。
function hasClass(element, cls) {
return (' ' + element.className + ' ').indexOf(' ' + cls + ' ') > -1;
}
var elems = document.getElementsByClassName('yt-lockup-meta-info');
var elemss = document.getElementsByClassName('yt-uix-sessionlink g-hovercard spf-link');
var elemsss = 1;
var elemssss = 0;
var myElem = document.getElementById('sb-button-notify');
if (myElem == null) elemsss = 0;//these two lines are here to skip the additional element that is only there if you are logged in
for (var i = 0; i < elems.length; ++i) {if (hasClass(elemss[i+elemsss],'yt-uix-tile-link')){elemssss=elemssss+1;elemsss=elemsss+3;alert('damn');}
elems[i+elemssss].insertBefore(elemss[i+elemsss],elems[i+elemssss].firstChild);}