Pergunta

Eu tenho um pouco de código JavaScript que cria uma versão "save amigável" de uma página Web.

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

"HtmlPage" é o HTML básico da página com todas as referências javascript retirados, um conjunto diferente de imagens referências de cabeçalho, etc.

Tudo exibe perfeitamente na janela pop-up, sem javascript em execução. Quando clico em "Arquivo-> Salvar Como", o arquivo salvo é a janela pai, juntamente com todo o seu javascript, e sem nenhum traço da janela filho. Alguém sabe como resolver esse problema? Eu quero salvar apenas a janela filho.

Obrigado, -Kraryal

Foi útil?

Solução

Quando você salvar a página que vai salvar o conteúdo URL original (por exemplo, como se você baixou uma nova cópia)

Se você quiser uma versão "limpa", você vai precisar para gerar essa versão no servidor, e abrir o pop-up com o URL como o primeiro parâmetro.

Outras dicas

Eu tinha uma situação semelhante (mas não estava disposto a dar-se totalmente). Estou construindo uma versão save-friendly de uma página web usando Javascript que eu quero que o usuário fazer o download como um arquivo de texto (valores separados por vírgulas, no meu caso). Eu acho que URIs data: pode ajudar aqui.

//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

No Firefox, isso não aparecer uma janela mesmo, apenas pergunta ao usuário se deseja salvar o arquivo e salva como um arquivo .part. Não exatamente ideal, mas pelo menos ele salva o arquivo sem aparecendo uma janela desnecessário.

Como alternativa, podemos usar o / tipo MIME texto simples:

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

No Firefox, isso pop abrir uma nova janela, mas, em seguida, ele é salvo por padrão como texto ASCII, sem que nenhum dos cruft da janela pai ou qualquer quebra de linha. Este é provavelmente o que eu vou usar.

Parece que isso não vai funcionar no IE embora. IE 8 é a única versão que suporta data: URIs, e tem uma série de restrições de onde ele pode ser usado. Para o IE, você pode olhar para execCommand .

Graças a este tek-ponta segmento eo < a href = "http://en.wikipedia.org/wiki/Data_URI_scheme" rel = "noreferrer"> artigo da Wikipedia sobre os dados URI esquema .

para um windows / IE única versão ver aqui: http://p2p.wrox.com/javascript-how/3193-how-do-you-save-html-page-your-local-hd.html

Eu sei, terrível, mas apenas no caso é para como um IE-only intranet ....

Infelizmente, parece que tenho reputação não o suficiente para adicionar comentários à minha pergunta, então eu vou adicionar este aqui.

Este javascript é implantado tanto para Internet Explorer e Safari. A aplicação de hospedagem nem sempre tem acesso ao sistema de arquivos local.

Os usuários podem marcar a página que está trabalhando, em seguida, guardá-lo para posterior impressão ou e-mail. Nós dizemos a eles para salvá-lo como um arquivo de arquivo único para que ele possa realmente ser mail. O diálogo Save pode fazer isso, e que o usuário pode colocar o lugar de ficheiros que têm acesso t, então é por isso que usamos.

Parece que a maneira simples seria escrever o novo html do javascript para o diretório local, mas nem sempre pode fazer isso. Quaisquer outras ideias? Obrigado pela ajuda até agora.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top