我正在通过为网站编写 Chrome 扩展来学习 JavaScript。该网站有一个部分显示 4 个视频的列表,并带有一个加载更多视频的按钮。当您单击此按钮时,它会通过 AJAX 调用加载新的视频列表。
我有一个函数,getNextVideo()
它获取列表中下一个视频的 URL。例如,如果您正在观看第三个视频,那么它将获取第四个视频的 URL。如果您正在播放第四个视频,那么它将通过一个函数模拟点击(加载新的视频列表)getNextVideoList()
,然后在 1 秒超时后抓取新加载列表中的第一个以等待 DOM 更新(我尝试使用突变观察器,但对于我的技能水平来说太复杂了)。
function getNextVideo()
{
if (getVideoPosition() == 4)
{
function ad()
{
getVideo(1);
}
setTimeout(ad, 1000);
getNextVideoList();
}
else
{
var index = getVideoPosition() + 1;
return getVideo(index);
}
}
getVideoPosition()
使用一些简单的 jQuery nth-child 选择器获取列表中视频的索引。它返回值1
、2
、3
或4
。
getVideo(n)
获取视频的索引(1、2、3 或 4)并返回该视频的 URL。返回值在控制台中如下所示:"http://video.example.com/video-id"
我的问题是,当我getNextVideo()
在队列中排在第 4 位的视频上运行时,我会undefined
在控制台中返回。getNextVideo()
在 AJAX 调用和后续 DOM 更新之后,如何使函数返回列表中第一个视频的 URL?