2010-08-04 4 views
0

내가 약간의 DOM 요소를 애니메이션 jQuery를 사용하고,하지만 난 애니메이션이 완료되면 페이지가 다시로드하려면, 그래서이 시도 :클로저/anon 함수의 Javascript 다시로드 페이지?

그러나
function childDisablePopup() 
{ 
    $("#popup2",window.parent.document).animate({ 
     width: "0px", 
     marginLeft: 0 
    }, "fast", 
    function() 
    { 
     $("#popup2",window.parent.document).animate({ 
      height: "0px", 
      marginTop: 0 
     }, "fast", 
     function() 
     { 
      $("#backgroundPopup",window.parent.document).fadeOut("fast", 
       function() 
       { 
        $("#popup2",window.parent.document).remove(); 
        window.location.reload(true); 
       }); 
     }); 
    }); 
} 

, 애니메이션, 대신 페이지를 다시로드의 완료 이 오류가 발생합니다 :

uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMLocation.reload]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: etc...]

무슨 일 이죠? 페이지 재로드를 function() {} 클로저에 넣을 수 있습니까?

참고 : 브라우저 : firefox 3.6.8.

대상 브라우저 : 파이어 폭스 3+, 크롬, 사파리 5+

참고 : 나는 또한 동일한 오류를 반환 window.location.reload(true);을 시도하고, 나는 반환 window.location.href=window.location.href 시도 :

uncaught exception: [Exception... "Component returned failure code: 0x80004003 (NS_ERROR_INVALID_POINTER) [nsIDOMLocation.href]" nsresult: "0x80004003 (NS_ERROR_INVALID_POINTER)" location: "JS frame :: etc...]

+0

'window.location.href'가 할당을받지 못할 수도 있습니다. 보십시오'window.location.replace (window.location.href);'? 나는 이것이 부모 창문의 DOM과 상호 작용하려는 것과 더 관련이 있다는 나의 초기 생각에 의지하기 시작했다. 솔직하게 나는 혼란 스럽다. –

+0

예외를 재현 할 수 없습니다. (파이어 폭스 3.6.8도 사용하고 있습니다.) 셀렉터에서'window.parent.document'를 사용하지 않았다는 것을 제외하고는, 스크립트의 다른 부분이나 그 밖의 다른 부분이 될 수있었습니다. – casablanca

+0

좋아, 이건 이상한데, 나는 심지어 같은 예외를 던지지 않고'alert (window.location.href)'를 할 수 없다. –

답변

0

문제가 해결되었습니다. 내가하고 있던 일은 iframe을 열고 나서 제거하는 것입니다. iframe 제거시 페이지 새로 고침을 실행하고 싶지만 스크립트가 iframe 내부에서 실행 중이므로 iframe이 더 이상 존재하지 않으면 스크립트는 더 이상 실행할 컨텍스트가 없습니다. 본질적으로, 나는 윈도우를 호출 할 수 없다. 윈도우가 존재하지 않을 때 위치를 찾는다. 그러나 window.parent.location도 작동하지 않습니다. iframe이 사라지면 null.parent를 호출하는 것입니다.이 중 하나도 존재하지 않습니다.

하하하, 디자인을 조금 바꿔야 할 것 같네요. 고마워요!

3

window.location.reload()하지 않습니다를 인수를 취하고 JavaScript 함수를 호출하는 것과는 달리 브라우저 API 함수를 호출 할 때 브라우저는 함수에 전달할 수 있거나 전달해야하는 인수의 수에 대해 매우 엄격합니다.

EDIT : 이것을 지적한 OP 덕분에 Firefox는 적어도 하나의 매개 변수를 reload()에 전달할 수 있습니다. (http://developer.mozilla.org/en/window.location 참조)

+0

실제로, MDC에 따라 : reload()는 1 매개 변수를 취하고 forceget을 true로 설정하면 단순히 재로드하는 대신 서버에 요청합니다 브라우저 캐시에서. –

+0

잘 부탁드립니다. goto JS 참조가 실패했습니다. http://www.w3schools.com/jsref/met_loc_reload.asp –

+0

흠, 그 경우 forceget 매개 변수는 firefox 전용 구현 일 수 있습니다. window.location 객체는 ECMA의 자바 스크립트 사양의 일부가 아니므로 브라우저 의존적 인 구현이 가능할 것으로 생각됩니다. 그러나 웹킷의 자바 스크립트 문서를 찾을 수 없습니다. –

0

나는 똑같은 문제가있었습니다. 페이지가로드 될 때만 코드를 호출하여이를 해결했습니다. 나를 위해 아래 두 스크립트가 모두 작동했습니다.

window.addEventListener ("DOMContentLoaded", doStuff, false); 

window.addEventListener ("load", doStuff, false); 

당신을위한 두 작품은 처음 선호하는 경우.