2009-10-14 6 views
1

내 페이지에 모든 항목을로드합니다. 결국이 스크립트가 있습니다.왜이 자바 스크립트가 작동합니까?

<script type="text/javascript">loadNewVideo('u1zgFlCw8Aw',0)</script> 

작동하지 않습니다. 나는이 그것을 대체 할 경우 는하지만, 그것은 작동 :

의 .js 파일에서
<input type="submit" onclick="loadNewVideo('u1zgFlCw8Aw',0);" > 

,이 기능입니다 :

function loadNewVideo(id, startSeconds) { 
      alert('In-the-function'); 
      if (ytplayer) { 
      alert('Found-ytplayer'); 
      ytplayer.loadVideoById(id, parseInt(startSeconds)); 
      } 
     } 

은 분명히 "가 YTPlayer는"처음에 거짓! ??

+2

전체 코드를 표시해야합니다. ytplayer는 어디에서 왔습니까? –

+3

ytplayer는 어디에 정의되어 있으며 무엇입니까? –

+0

당신은 우리에게 방화범을 볼 수있는 링크를 줄 수 있다면, 아니면 당신이 할 수 ... – Skilldrick

답변

4

내가 대답을하지 않지만, 가 YTPlayer 구성 요소를 사용할 준비가되었을 때, 아마도 이것이 당신이 알아내는 데 도움이됩니다 : 물론

var startTimer = new Date().getTime(); 
function ytplayerReadyCheck() { 
    var ready = !!ytplayer; 
    if (!ready) { 
    window.setTimeout(ytplayerReadyCheck,50); 
    } 
    else { 
    var endTimer = new Date().getTime(); 
    alert('ytplayer is now ready!\n\nWe waited '+(endTimer-startTimer)+' milliseconds for it'); 
    loadNewVideo('u1zgFlCw8Aw', 0); 
    } 
} 
ytplayerReadyCheck(); 

이 어디 을 파악하기위한 부족하게 대체 ytplayer이 처음 정의되었습니다! 아마도 문서가로드 된 후 뒤에 동적으로로드 된 .js 파일에 정의되어 있습니다. ?

이 종류의 것을 더 쉽게 디버그 할 수 있도록 Firebug을 보유하는 것이 좋습니다.

+0

수정하십시오. ytplayer가로드되기까지는 약간의 시간이 걸립니다. 따라서 loadNewVideo 함수를 호출하기 전에 setTimeout을 지정합니다! 그런 다음 작동합니다. – TIMEX

9

나는 ytplayer이 무엇인지 모르지만,이 문제는 DOM이 완전히로드되지 않은 것과 관련이 있다고 생각합니다. 이거 해봤 니?

<script type="text/javascript"> 
$(document).ready(function() { 
    loadNewVideo('u1zgFlCw8Aw', 0); 
}); 
</script> 

편집이 작동하지 않는 경우, 당신은 우리에게 더 많은 정보를 제공해야합니다. Tim과 Peter가 귀하의 질문에 대한 의견을 묻는대로, ytplayer이 정의되어 있고 그것이 무엇인지 알려 주실 수 있습니까? 나는 그것이 YouTube 플레이어의 약자라고 가정하고 있습니다. 아마도 loadNewVideo이라면 뒤에로드되고 정의 된 일까요?

예를 들어 위에 나온 코드가 문서에 ytplayer이 정의 된 부분보다 위에있는 경우로드하는 방법에 따라 ytplayer이로드되기 전에이 코드가 여전히 호출됩니다. 내가 말했듯이, 좀 더 많은 정보를 제공해주십시오.

+0

실제로 당신이 맞습니다; javascript가 읽히 자마자 실행되므로 실행중인 스크립트에 대해 원하는 것이 있는지 확인하거나 (더 나은 방법으로) 'load'이벤트의 모든 것을 수행해야합니다. :) –

+1

@silky : note, ready! = load –

+0

이것은 작동하지 않습니다. Jquery에서 document.ready를 시도했습니다. – TIMEX

4

나는 그 단계에서 DOM이 완전히로드되지 않았기 때문에 이것이라고 말할 것입니다. 본문 onLoad 이벤트를 연결하거나 jQuery를 사용하여 $ (document) .ready() 후크를 가져 오려고합니다.

관련 문제