문제

웹 페이지의 "저장 친화적 인"버전을 만드는 약간의 JavaScript 코드가 있습니다.

child = window.open("","child");
child.document.write(htmlPage);

"htmlpage"는 모든 JavaScript 참조, 다른 헤더 이미지 참조 세트 등이있는 페이지의 기본 HTML입니다.

JavaScript가 실행되지 않은 상태에서 모든 것이 팝업 창에 완벽하게 표시됩니다. "file-> save as"를 클릭하면 저장된 파일은 모든 JavaScript와 함께 부모 창입니다. 이 문제를 해결하는 방법을 아는 사람이 있습니까? 아이 창만 저장하고 싶습니다.

감사합니다 -Kraryal

도움이 되었습니까?

해결책

페이지를 저장하면 원래 URL 컨텐츠가 저장됩니다 (예 : 신선한 사본을 다운로드 한 것처럼).

"정리 된"버전을 원한다면 서버에서 해당 버전을 생성하고 해당 URL을 사용하여 첫 번째 매개 변수로 팝업을 열어야합니다.

다른 팁

나는 비슷한 상황이 있었지만 (그러나 완전히 포기하지는 않았다). 텍스트 파일 (Comma-Separated values, 내 경우)으로 사용자가 다운로드하기를 원하는 JavaScript를 사용하여 저장 친화적 인 웹 페이지를 구축하고 있습니다. 제 생각에는 data: Uris는 여기서 도울 수 있습니다.

//construct the csvOutput in Javascript first
var popup = window.open("data:application/octet-stream," + encodeURIComponent(csvOutput), "child");
//no need to document.write() anything in the child window

Firefox에서는 창을 팝업하지 않고 사용자에게 파일을 저장하려는 경우 묻고 .part 파일로 저장합니다. 정확히 이상적이지는 않지만 최소한 불필요한 창을 팝업하지 않고 파일을 저장합니다.

또는 텍스트/일반 마임 유형을 사용할 수 있습니다.

//construct the csvOutput in Javascript first
var popup = window.open("data:text/plain;charset=utf-8," + encodeURIComponent(csvOutput), "child");

Firefox에서는 새 창을 열 수 있지만 부모 창의 크루 프트 또는 라인 랩핑없이 기본적으로 ASCII 텍스트로 저장됩니다. 이것은 아마도 내가 사용할 것입니다.

그래도 이것은 IE에서는 작동하지 않는 것 같습니다. IE 8은 지원하는 유일한 버전입니다 data: uris, 그리고 그것은 a 일련의 제한 사용할 수있는 곳에. 즉, 당신은 볼 수 있습니다 execcommand.

감사합니다 Tek-Tip 스레드 그리고 데이터 URI 체계에 관한 Wikipedia 기사.

Windows/IE 전용 버전은 여기를 참조하십시오. http://p2p.wrox.com/javaScript-how/3193-how-do-you-save-html-page-your-local-hd.html

나는 끔찍하지만, IE 전용 인트라넷과 같은 경우를 대비하여 ....

아아, 내 질문에 댓글을 추가하기에 충분한 명성이없는 것 같습니다. 여기에 추가하겠습니다.

이 JavaScript는 Internet Explorer와 Safari 모두에 배치되었습니다. 호스팅 응용 프로그램이 항상 로컬 파일 시스템에 액세스 할 수있는 것은 아닙니다.

사용자는 작업중인 페이지를 표시 한 다음 나중에 인쇄하거나 이메일을 보내도록 저장할 수 있습니다. 우리는 그들에게 단일 파일 아카이브로 저장하여 실제로 메일이 될 수 있다고 말합니다. 저장 대화 상자가이를 수행 할 수 있으며 사용자는 액세스가있는 곳에 파일을 넣을 수 있으므로 사용한 이유입니다.

간단한 방법은 JavaScript에서 로컬 디렉토리로 새로운 HTML을 작성하는 것 같습니다. 그러나 항상 그렇게 할 수는 없습니다. 다른 아이디어가 있습니까? 지금까지 도와 주셔서 감사합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top