2011-04-06 5 views
27

JavaScript를 사용하고 있습니다.자바 스크립트 함수 호출을 지연시키는 방법은 무엇입니까?

aspx 페이지에서 페이지가로드 된 후 JavaScript/jQuery 함수를 호출하고 싶습니다.

<form onload="function()">window.load = function(){}을 사용해 보았지만 일부 콘텐츠가 완전히로드되기 전에 JavaScript가 계속 트리거됩니다.

Page_PreRender은 JavaScript 기능을 지연시킬 수 있도록 코드 숨김이 아닌 aspx 페이지에서 호출 할 수 있습니까?

나는이 문제를 해결하기 위해 setTimeout("function()",5000)을 시도했다.

그러나 setTimeout()은 (는) Chrome과 관련하여 일부 브라우저와 호환되지 않는 것으로 보입니다.

+0

'$ (function() {})이 효과가 없습니까? – ExtraGravy

답변

65

setTimeout 할 대신 모든 당신의 평가 피해야 1996 년부터 브라우저 "FUNCTIONNAME을()"와 호환 :

setTimeout(functionName,5000) 

UPDATE : 처음 함수에 전달 된 변수를 기대하는 경우와 아무도 타임 아웃, 당신은 대신이 작업을 수행 할 필요가없는 경우 :이 첫 번째 예에서와 같이 호출하면

setTimeout(function() { functionName() },5000) 

에서는 setTimeout은 함수에 타임 아웃 ID를 전달 때문이다. 당신이 jQuery을 사용하고 있기 때문에이,

window.onload=function() { 
    // your stuff 
} 

또는 :

$(document).ready(function() { 
    // your stuff 
}); 

하거나이 :

당신은이 작업을 수행 할 필요가 있으므로, 잘못 onload를 호출하지만

$(function() { 
    // your stuff 
}); 
1
$(document).ready(function(){ 

    //Code goes here 

}); 

또는 이전 스타일

<body onload="myFunction()"> 
+3

더 이상 이전 스타일을 사용하지 마십시오. – mplungjan

+1

동의합니다, 더 이상 인라인 JS ... –

+0

그래, 좋아, 나는 다른 일을 할 때 한 번 사용했습니다. (오래 전부터 많은 스크립트가있었습니다.) 그리고 나는 그것도 좋아하지 않는다. – MadBender

0

jQuery 같은 프레임 워크를 사용하는 것이 가장 좋은 것입니다.
는 jQuery를 당신은 다음과 같이 함수를 정의 할 수 있습니다 :

$(document).ready(function() { 

}); 

는 DOM이 완전히로드 될 때 호출됩니다 이런 식으로.

ready() 함수에 대한 전체 설명서는 here입니다.

3

당신이 jQuery를 사용하는 거라면 그것은 다음 중 하나를 사용하여 문서 준비 이벤트에 이벤트를 첨부하는 것이 바람직입니다 :

$(document).ready(callback); 

또는

$(document).ready(function() { /* do stuff */ }); 

또는

$(callback); 

또는

$(function() { /* do stuff */ }); 
5

당신은 페이지가 실제로로드 때, 사용 있다고 100 % 확신 할하려는 경우 :

$(window).load(function(){ 
    //After EVERYTHING loads, including images. 
}) 

의 다른 솔루션 onload 작품,하지만 DOM이 준비되면로드가 아닌 경우 창은 실제로로드가 완료됩니다.

관련 문제