2010-06-01 5 views
1

이제 아래에 문제가 있습니다.IE 파일 다운로드 프롬프트가 팝업되면 어떻게 알 수 있습니까?

사용자가 다운로드 버튼을 클릭 할 때 버튼, 링크 또는 필드를 클릭하도록 내 페이지에 div를 추가했습니다. IE 파일 다운로드 프롬프트가 팝업되거나 사용자가 "저장", "다른 이름으로 저장"또는 "취소"를 클릭하면이 div를 제거해야합니다.

어떻게 접근 할 수 있습니까?

IE 만 고려하십시오.

답변

1

콜백이 있다고 생각하지 않습니다. 확실히 모든 브라우저에서 아닙니다.

또한 모든 브라우저가 프롬프트를 표시하지 않으며 사용자 별 브라우저 구성에 따라 달라집니다. 일부는 백그라운드에서 다운로드하기 시작할 수도 있습니다.

아주 깨끗한 해결 방법은 아니지만 약간의 간격 (DIV가 다운로드 상자를 표시하는 데 걸리는 시간에 따라 추측해야 함) 후에 DIV를 제거하는 것이 좋습니다.

3

아니요, 브라우저에서 파일 처리 대화 상자를 자바 스크립트에서 감지 할 수 없습니다. 이것은 의도적으로 설계된 것입니다. 자신을 IE로 제한하더라도 가능하지 않으며, 다른 브라우저는 어쨌든 완전히 다른 방식으로 파일 다운로드를 처리합니다.이 작업을 수행하려는 이유를 을 설명하면

http://groups.google.co.uk/group/comp.lang.javascript/browse_thread/thread/9441cce4f8fdf20b/6f4fcc7796e03f1d

은 더 잘 맞는 다른 방법이있을 수 있습니다.

5

실제로 입니다. 은 브라우저가 파일 다운로드를 처리 중임을 나타냅니다. 나는이 같은 질문을하고 TJ 크라우 더 좋은 생각했다 : 나는 실제로 지금 생각을 사용하고

What are techniques to get around the IE file download security rules?

을하고 완벽하게 작동합니다. 트릭은 페이지에 임의의 문자열이 포함 된 "nonce"매개 변수를 보내도록하는 것입니다. 그런 다음 페이지는 document.cookie 폴링을 100 밀리 초마다 시작하여 해당 문자열이 아직 쿠키에 있는지 확인합니다.

서버는 "nonce"매개 변수에서 양식이 보낸 값으로 선택한 쿠키 (실제로는 그 쿠키가 무엇인지는 중요하지 않음)를 설정합니다. 그런 다음 정상적으로 파일 다운로드를 실행합니다.

HTTP 응답이 브라우저로 돌아 오면 쿠키가 설정됩니다. 쿠키 값을 폴링하는 Javascript가이를 볼 것이며 HTTP 응답이 처리되고 있음을 알게됩니다. 이제는 사용자가 파일 다운로드에서 "취소"를 누르지 않았다는 것을 알 수 없습니다.

서버가 원본 요청에 오류가 있다고 판단하면 (예 : 파일 다운로드에 양식이 포함되어 있고 사용자가 잘못된 입력을 제공했거나 필드를 놓친 경우) 쿠키를 설정하지 않고 응답 할 수 있습니다 오류 (또는 무엇이든)를위한 HTML.

+0

흥미로운 아이디어 –

+0

좋은 아이디어! 나는 그것을 할 거 야. –

+0

@ pat.inside 그런 다음 올바른 답을 표시하십시오! – Sphvn

관련 문제