웹 사이트 용 Chrome 확장 프로그램을 작성하여 JavaScript를 배우고 있습니다. 웹 사이트에는 4 개의 동영상 목록이 표시되는 섹션이 있으며 더 많은 동영상을로드 할 수있는 버튼이 있습니다. 이 버튼을 클릭하면 AJAX 호출을 통해 새로운 비디오 목록이로드됩니다.(setTimeout에서 호출 된) 값을 반환하지 않습니다.
나는 목록에서 다음 비디오의 URL을 가져 오는 getNextVideo()
함수를 가지고 있습니다. 예를 들어, 세 번째 동영상에있는 경우 네 번째 동영상의 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를 n 번째 자식 선택기를 사용하여 목록에서 비디오의 인덱스를 가져옵니다. 값 1
, 2
, 3
또는 4
을 반환합니다.
getVideo(n)
은 비디오 색인 (1, 2, 3 또는 4)을 가져와 해당 비디오의 URL을 반환합니다. 반환 된 값은 콘솔에서 다음과 같이 표시됩니다. "http://video.example.com/video-id"
내 문제는 대기열에서 네 번째 인 비디오에 getNextVideo()
을 실행하면 내 콘솔에 undefined
이 반환된다는 것입니다. getNextVideo()
함수를 AJAX 호출 및 후속 DOM 업데이트 후 목록의 첫 번째 비디오 URL을 반환하려면 어떻게해야합니까?
Ajax 통화를 볼 수 있습니까? 콜백을 프록시 함수로 랩핑해야 할 수도 있습니다. – Paul
하나씩 오류가있는 것처럼 보입니다.반복에 사용하는 인덱스가 범위 내에 있습니까? 특히 getVideoPosition() 및 getVideo (n)에서? – Hrishi
읽기 [setTimeout에서 값을 반환 할 수 있습니까?] (http://stackoverflow.com/questions/13730709/is-it-possible-to-return-a-value-from-settimeout-without-a -callback-function? rq = 1) 및 [AJAX 호출에서 값을 반환하는 방법?] (http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax -call? rq = 1) – DCoder