다음 사용 사례에 대한 브라우저 간 솔루션이 필요합니다. 사용자가 당사 페이지 중 하나에서 "내보내기"버튼을 클릭하면 양식이있는 팝업 창이 열립니다. 양식을 제출할 때 사용자는 이진 파일 다운로드 (예 : CSV 파일)를 받아야하며 상위 창이 보이는 내용을 변경하지 않고 팝업을 닫아야합니다.(IE 및 Firefox에서) 닫힌 팝업에서 이진 파일 다운로드를 제공하는 방법은 무엇입니까?
파일을 다운로드하기 전에 사용자에게 파일을 처리하는 방법을 묻는 대화 상자가 일반적으로 있기 때문에 시간 초과를 사용하여 팝업을 닫을 수 없으며 사용자가이 대화 상자를 처리하는 데 걸리는 시간을 알 수있는 방법이 없습니다 .
우리는 원래 window.location을 다운로드 파일 URL로 설정하는 팝업 스크립트를 사용했습니다. 그러면 팝업이 닫히지 않습니다.
그렇다면 부모 창에 숨겨진 iFrame을 넣고 iFrame의 src를 다운로드 URL로 설정하여 self.close()를 호출하기 전에 시도해 보았습니다. 파이어 폭스에서 완벽하게 작동하지만 IE는 보안 제한으로 완벽하게 망가 뜨린다.
올바른 방법이 있습니까? Internet Explorer에서 작동하는 방법은 어떻습니까?
업데이트 - 문제는 여기에 제안 된 답변이 너무 멀리하지 않았다
를 해결하지만, 내 문제는 자바 스크립트 문제 것보다 조금 더 복잡했다. IE 및 Excel (다운로드 파일이 CSV이기 때문에)에서 버그가 발생했으며 팝업이 양식 게시를하고있었습니다.
URL에 양식 데이터를 추가하지 않고도 POST 대신 GET을 사용하여 문제를 해결할 수 없으며 IE에서 신뢰할 수있는 사이트로 설정해야합니다 (엔터프라이즈 앱이므로 합리적입니다). 사용자의 요청).
양식 단추를 클릭하면 팝업에서 window.opener의 함수를 호출하여 양식과 해당 동작 URL을 전달합니다. 그런 다음 팝업창은 window.close()를 호출합니다. 이 함수는 양식 데이터를 URL에 추가하고 window.location을 새 URL로 설정합니다. iFrame 아이디어는 IE에서 제대로 작동하지 않았고 분명히 필요하지 않았습니다.
양식 URL에 대한 응답에서 요청 헤더에는 Content-Type : application/octetstream 및 Content-Disposition ","첨부 파일이 포함됩니다. 파일 이름 = filename.csv ".
을 다운로드하면 원래 페이지에 양식을 삽입하거나 iframe (스크립트 자체에서 생성 될 수 있음)에서 새 페이지를 열도록 지시합니까? – Anonymous
Anonymous 님의 질문에 답변 - 당신이 설명하는 것은 내가 한 일종의 생각입니다. 생성 및 초기로드시 팝업은 실제로 보이지 않는 iFrame을 부모 페이지에 씁니다. 양식이 팝업에 제출되면 다운로드 파일을로드하도록 iFrame에 지시합니다. 내 IE (IE 6)가이를 차단하고 부모 창에서 다운로드를 확인하도록했습니다. 확인시 부모 창이 다시 제출되어 다른 확인 대화 상자를 표시하고 일반적으로이를 취소합니다. –
나는 iframe에 양식을 제출할 생각이었는데, 이는 느린 팝업 문제를 제거합니다. – Anonymous