2008-09-18 3 views
1

IE7 (내부 웹 사이트)에서 독점적으로 실행되는 asp.net 응용 프로그램이 있습니다.브라우저 포스트 백 경고 대화 상자를 비활성화하는 방법

사용자가 데이터를 입력해야하는 경우 양식이있는 하위 창이 팝업됩니다. 양식이 닫히면 javascript : window.opener.location.reload (true)가 호출되어 새 데이터가 기본 페이지에 표시됩니다.

문제는 브라우저가 페이지를 다시 게시해야한다고 불평하는 것입니다. 이 기능을 끌 수있는 방법이 있습니까?

답변

0

window.opener의 페이지는 아마 당신이 사용할 수있는 POST 요청 에서 온다 때문입니다 자바 스크립트 : window.opener.location = window.opener .위치; POST없이 데이터를 가져올 수있는 경우 GET 요청 만 수행하십시오.

1

이것은 일반적으로 ASP.NET의 "다시 게시"방식의 문제입니다. 이 경고없이 페이지를 다시로드해야하는 경우이 페이지는 POST가 아닌 GET에서 가져와야합니다. Response.Redirect ("...")를 직접 수행 할 수 있습니다. 그러나 이것은 viewstate의 사용을 파괴 할 것입니다.

1

asp.net mvc는 ie7 유일한 문제가 아니라 대부분의 브라우저의 보안 기능을 수정합니다. 내가 아는 수정은 단지 전체 페이지를 다시로드하는 것보다 js로 메인 양식의 내용을 업데이트 할 수 있습니다.

0

나는 그렇게 할 방법이 없다고 생각합니다. 대신, 다시로드하지 않고 상위 창을 페이지로 보내지 마십시오.

자바 스크립트 : window.opener.location = '당신의 URL을'

4

아니요,하지만 해결책이 있습니다. 누군가가 페이지에 데이터를 게시 한 직후 302 리디렉션을 사용하는 것이 일반적으로 좋은 디자인으로 간주됩니다. 이렇게하면 팝업이 발생하지 않습니다. 내가 상세하게 말해라.

1) 사용자가 양식을 채우고 POST를 통해 데이터를 제출합니다.

2) 백엔드가 데이터를 수신하여 처리합니다. 대신 콘텐츠를 사용자에게 반환

3), 백엔드는 302 가능한 한 빨리 재 발행은 필요하다면

4), 아마도 동일한 URL로 다시 사용자를 리디렉션 (페이지를 처리 ​​할) 사용자가 보게 될 페이지는 브라우저가 리디렉션하도록 지시 한 페이지입니다. 표준 GET 요청으로 리디렉션 된 페이지를로드합니다. 페이지를 새로 고치려고하면 데이터를 다시 게시하지 않습니다. 문제 해결됨.

0

AFAIK, 스크립트를 통한 것이 아닙니다.

당신은 시도 할 수 있습니다 :

window.opener.location = '#'; 

그것은 브라우저 재개시를 우회해야한다. 그리고 필요에 따라 해시 이름을 조정할 수 있습니다.

0

page1에서 page2로 이동하여 브라우저가 1 페이지로 돌아 가지 않도록하려면 page1 맨 위에 다음을 추가하십시오.

<script> 
if(window.history.forward(1) != null) 
       window.history.forward(1); 
</script> 
관련 문제