2009-12-18 4 views
4

나는 FF 3.5.6에서 다음과 같은 예외가보고 있어요 : document.location.replace를 호출 할 때FF에서 NS_ERROR_MALFORMED_URI 호출 document.location.replace()

uncaught exception: [Exception... "The URI is malformed" nsresult: "0x804b000a (NS_ERROR_MALFORMED_URI)" location: "JS frame :: http://x :: refreshPage :: line 193" data: no] 

이 오류가 발생합니다 ("/ 상대/url ")을 iframe의 상위 창에 표시합니다.

또한 FF2에서는 재생성이 가능하지만 IE8에서는 문제가 발생하지 않습니다.

편집 :

document.location.reload(); 
+0

대체 할 내용은 무엇입니까? 아마도 파이어 폭스가 처리 할 수없는 잘못된 URI로 끝날 것입니다 ... – sdwilsh

+0

나는 상대 경로로 바꿀 것입니다. 나는 절대 경로를 사용하면이 문제가 존재하지 않는다는 것을 알아 차렸다. iframe 보안 제한이 될 수 있다고 생각합니다. – jthompson

답변

5

내가 생각해 낸 해결책은 절대 URL을 작성하여 window.location에 할당하는 것이 었습니다. Reload()가 내부 리디렉션에 몇 가지 문제를 일으켰습니다.

function get_full_url(url_path) 
{ 
    var loc = window.location; 
    var url = "" + loc.protocol + "//" + loc.host + url_path; 
    return url; 
} 

function refresh_page_absolute(url_path) 
{ 
    window.location.href = get_full_url(url_path) 
} 
1
location.replace() 

오류입니다 : 같은 맥락에서 다음 코드는 문제가되지 않습니다. 인수로 replace 메소드에 주소를 전달해야합니다. 그렇지 않으면 실제로는 undefined을 전달하고 있습니다.이 URI는 "잘못된 형식의 URI입니다."라는 메시지가 표시 할 때 올바른 주소가 아닙니다.

내가 무엇을 하려는지 잘 모르겠다. 페이지를 새로 고침하려면 location.reload()을 사용해야한다. 하지만 '현재 위치의 URI를 (아무것도)로 바꾸면'의미가 없습니다.

+0

질문을 업데이트했습니다. 상대 URL로 바뀝니다. 나는 내가 .replace라고 부르고 있었다는 것을 나타낼 뿐이었다. – jthompson

관련 문제