ProgramingTip

jQuery $ (document) .ready () 두 번 실행

bestdevel 2020. 11. 7. 10:18
반응형

jQuery $ (document) .ready () 두 번 실행


그래서 나는 여기서 무슨 일이 일어나고 있는지 알아 내려고 웹을 뒤지고 있는지 알아 듣고 웹을 뒤지고 있습니다.

내 사이트에 포함 된 코드에 관계없이 여러 번 사용할 수있는 $ (문서) .ready가 있습니다.

문 내에서 예외가 발생하는 경우 .ready 이벤트가 두 번 발생하는 방법에 대한 jQuery의 버그 보고서를 읽었습니다. 그러나 다음 코드가 있어도 여전히 두 번 실행됩니다.

$(document).ready(function() {
    try{    
        console.log('ready');
        }
    catch(e){
        console.log(e);
    }
});

콘솔에서 내가 보는 모든 것은 "준비"로 두 번 기록됩니다. 예외가있는 다른 다른 문제를 가지고 있습니다. 내 이해는 모든 .ready 태그가 서로 독립적이라는 것이 그것이 어디에서 작동하는지 수없는 것 같습니까?

다음은 사이트의 헤드 블록입니다.

<head>
<title>${path.title}</title>
<meta name="Description" content="${path.description}" />
<link href="${cssHost}${path.pathCss}" rel="stylesheet" type="text/css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="media/js/fancybox/jquery.fancybox.pack.js" type="text/javascript" ><!-- --></script>
<script src="/media/es/jobsite/js/landing.js" type="text/javascript" ><!-- --></script>
<script src="/media/es/jobsite/js/functions.js" type="text/javascript"><!-- -->    </script>
<script src="/media/es/jobsite/js/jobParsing.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="/media/es/jobsite/js/queryNormilization.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="${jsHost}/js/jquery/jquery.metadata.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="${jsHost}/js/jquery/jquery.form.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.7/jquery.validate.min.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="${jsHost}/js/jquery.i18n.properties-min.js" type="text/javascript" charset="utf-8"><!----></script>

<script type="text/javascript" charset="utf-8">

function updateBannerLink() {
    var s4 = location.hash.substring(1);
    $("#banner").attr('href','http://INTELATRACKING.ORG/?a=12240&amp;c=29258&amp;s4='+s4+'&amp;s5=^');
}

</script>
</head>

JSP 변수에주의를 기울이지 않습니다. 보시다시피 functions.js 파일을 한 번만 호출합니다 (.ready 함수가있는 위치).


ready 이벤트는 두 번 보관 수 없습니다. 가능성이 높은 것은 브라우저가 펼쳐지는 블록을 다시 실행하는 코드가 포함 된 요소를 이동하거나 조작하는 코드가있을 것입니다.

<head>폐쇄는 </body>태그 안에 또는 사용하지 않겠다고 약속 태그를 포함하고 있습니다 $('body').wrapInner();. 사용 $('body').html($('body').html().replace(...));하면 동일한 효과가 있습니다.


나에게도 발생했지만 병합으로 확장가 두 번 포함 깨달았습니다.


KendoUI를 사용할 때 이런 일이 발생했습니다. 팝업 창을 호출하면 document.ready이벤트가 여러 번 실행됩니다. 쉬운 해결은 한 번만 실행 가능 전역 플래그를 설정하는 것입니다.

var pageInitialized = false;
$(function()
{
    if(pageInitialized) return;
    pageInitialized = true;
    // Put your init logic here.
});

항상 해킹이지만 작동합니다.


JS 파일을 두 번 포함하지 마십시오. 그게 내 경우 였어


두 번 실행하지 않도록 방지 기능.

var checkit = window.check_var;
if(checkit === undefined){ //file never entered. the global var was not set.
    window.check_var = 1;
}
else {
    //your functions.js content 
}

그러나 나는 당신이 두 번째로 전화하는 곳을 더 많이 본 것을 제안합니다.


사용을 고려할 수 있습니다.

window.onload

대신에

$(document).ready

부분을 ​​새로 고치려고 할 때 문제가 발생했습니다. PartialViewResult 대신 반환 ActionResult를 호출했습니다. ActionResult로 인해 ready ()가 두 번 실행되었습니다.


html에서 동일한 컨트롤러를 두 번 추가하면이 문제가 가능성이 있습니다.
예 :
[js]

app.controller('AppCtrl', function ($scope) {
 $(document).ready(function () {
        alert("Hello");
        //this will call twice 
    });
});

[html]

//controller mentioned for the first time
<md-content ng-controller="AppCtrl">
    //some thing
</md-content>

//same controller mentioned again 
<md-content ng-controller="AppCtrl">
    //some thing
</md-content>

오늘도 비슷한 문제가있었습니다. 경우에는 A로 <button type="submit">인해 $(document).ready(...)이벤트가 다시 발생했습니다 . 코드를 변경하여 <button type="button">문제 해결했습니다.

제출 버튼 후 다시 호출되는 document.ready 함수를 참조하십시오 . 자세한 내용은 여기 stackoverflow에서.


제 경우에는 $ (document) .ready가 잘못된 CSS로 인해 두 번 실행되었습니다. CSS의 일부가 background-image: url('');


iframe이 아무것도 표시하지 않고 다른 이유로 사용되는 경우 (예 : 다시로드하지 않고 파일 업로드) 다음과 같이 할 수 있습니다.

<iframe id="upload_target" name="upload_target" style="width:0;height:0;border:0px solid #fff;"></iframe>

문서에서 두 번째 on ready 트리거를 방지하는 src가 포함되어 있지 않습니다.


window.load 함수에 대한이 문제가 두 번 실행되었습니다. 그 이유는 메인 페이지에 동일한 javascript 파일과 .net usercontrol에 대한 참조가 있기 때문입니다. 메인 페이지에서 참조를 제거했을 때로드 기능은 한 번만 실행되었습니다.

참고 URL : https://stackoverflow.com/questions/10727002/jquery-document-ready-fires-twice

반응형