Web サイトの Chrome 拡張機能を作成して JavaScript を学んでいます。Web サイトには、4 つのビデオのリストを表示するセクションがあり、さらにビデオをロードするためのボタンがあります。このボタンをクリックすると、AJAX 呼び出しを介してビデオの新しいリストが読み込まれます。
getNextVideo()
リスト内の次のビデオの URL を取得する関数があります。たとえば、3 番目のビデオを再生している場合、4 番目のビデオの URL を取得します。4 番目のビデオを表示している場合は、関数を介してクリックをシミュレートし (ビデオの新しいリストをロードします) 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 を返すようにするにはどうすればよいですか?