我有一些Javascript代码可以创建一个“保存友好”版本的网页。
child = window.open("","child");
child.document.write(htmlPage);
“htmlPage”是页面的基本html,其中包含所有javascript引用,不同的标题图像引用集等。
一切都在弹出窗口中完美显示,没有运行javascript。 当我点击“File-> Save As”时,保存的文件是父窗口及其所有javascript,并且没有子窗口的痕迹。有谁知道如何解决这个问题?我只想保存子窗口。
谢谢, -Kraryal
答案 0 :(得分:5)
我有类似的情况(但不愿意完全放弃)。我正在使用Javascript构建一个保存友好版本的网页,我希望用户下载为文本文件(在我的例子中以逗号分隔的值)。我认为data:
URI可以在这里提供帮助。
//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文件。不完全理想,但至少它保存文件而不会弹出不必要的窗口。
或者,我们可以使用text / plain MIME类型:
//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:
URI的版本,它可以使用series of restrictions。对于IE,您可以查看execCommand。
答案 1 :(得分:2)
当您保存页面时,它将保存原始网址内容(例如,就像您下载了新的副本一样)
如果你想要一个“清理”版本,你需要在服务器上生成该版本,并打开带有该URL作为第一个参数的弹出窗口。
答案 2 :(得分:1)
仅适用于Windows / IE版本,请参阅此处:http://p2p.wrox.com/javascript-how/3193-how-do-you-save-html-page-your-local-hd.html
我知道,非常糟糕,但以防万一这样的内容网就像IE一样......
答案 3 :(得分:0)
唉,似乎我没有足够的声誉为我的问题添加评论,所以我会在这里添加。
这个javascript是为Internet Explorer和Safari部署的。托管应用程序并不总是可以访问本地文件系统。
用户可以标记他们正在使用的页面,然后将其保存以供以后打印或通过电子邮件发送。我们告诉他们将其保存为单个文件存档,因此它实际上可以是邮件。保存对话框可以执行此操作,用户可以将文件放在他们有权访问的位置,这就是我们使用它的原因。
似乎简单的方法是将新的html从javascript写入本地目录,但我们不能总是这样做。还有其他想法吗?感谢您的帮助。