Salvando uma janela filho salva janela pai em vez disso (Javascript)
-
05-09-2019 - |
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
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.