2009-06-10 5 views
1

브라우저 : IE6/IE7.IE 모달 대화 상자에서 문서를 바꿉니다.

양식 타겟 또는 자바 스크립트 함수를 통해 HTML 모달 대화 상자에 새 문서를로드하려고합니다.

<html> <!-- quirks mode --> 
<head> 
<script> 
function openModal(url) { 
    if(window.showModalDialog) showModalDialog(url); 
    else { 
     try { 
      netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite"); 
      open(url, "", "modal=yes"); 
     } catch (e) { 
      alert("dialog windows unsupported by browser"); 
     } 
    } 
} 
</script> 
</head> 
<body style="background:red" onload="setTimeout(function(){document.body.style.backgroundColor='white'},100)"> 
<a href="javascript:openModal(location.href)">Open Modal</a> 
<form> 
<input type="submit" value="Send Form" /> 
</form> 
<a href="javascript:location.reload()">Reload content</a> 
</body> 
</html> 

Gecko 기반 브라우저에서 작동합니다.

IE에서는 모달 대화 상자 창에서 양식을 새 창이 열리 며 (심지어 target="_self" 특성을 지정하더라도) reload() 자바 스크립트가 자동으로 실패합니다. location.replace(location.href) 또는 location.href=_someurl_을 시도하면 새 창이 열립니다.

그럼 내 질문 : IE에서 현재 대화 상자 창에서 현재 문서를 바꿀 수 있습니까?

답변

1

문제의 <form> 부분을 처리하는 솔루션 : 페이지의 <head> 섹션에

<base target="_self" /> 

를 추가합니다.

그러나 자바 스크립트 문제는 해결되지 않습니다.

0
window.name="SomeWindowName"; 
window.open("www.microsoft.com","SomeWindowName"); 
+0

모달 창이 필요합니다. – Alsciende

0
같은

location.reload();return false; 

또는

window.location = window.location; 
같은 몇 가지 솔루션이 존재하는 것이 주위에 재생 후 보인다 동안, 그래서 난 그냥 인터넷 익스플로러 8과 같은 문제로 실행

또는

window.location.reload(true); 

그러나 그들 중 누구도 나를 위해 일하지 않습니다 - 아무 일도 일어나지 않거나, 가장 좋은 경우 새 창이 열립니다. 나는 대안의 어떤 종류의 당신이 당신의 페이지에 양식을 필요로하는 모든 별자리에 대한

document.forms[0].submit(); 

그것은 작동하지 않을 수 있습니다를 사용 (양식의 제출하지 있는지 확인하는 것입니다으로 함께 왔어요 무엇

원하지 않는 변경을 수행하지 않음). 그러나 그것은 나를 위해 일했습니다. 또한이 Alsciende에 의해 설명 된대로 페이지의 헤더에

<base target="_self" /> 

을 넣어하는 것을 잊지 않도록해야합니다.

HTH

3
window.name = "SomeWindowName"; 
window.open("www.microsoft.com", "SomeWindowName"); 

G. ... 작동합니다. 이 대신 대화 상자 창 내에서 사용해야합니다 location.replace

+0

놀랍게도 실제로 그렇게합니다. 'document.location = [url]'을이 두 줄로 바꾸면됩니다. 그것은 상쾌하게 작동합니다. – Tacroy

관련 문제