2009-05-24 138 views
1

我有一些Javascript代码可以创建网页的“保存友好”版本。保存子窗口会保存父窗口(Javascript)

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

“htmlPage”是的页面与取出来,一组标题图片引用不同等

一切都完美地显示在弹出窗口中,所有的JavaScript引用基本HTML没有JavaScript运行。 当我点击“文件 - >另存为”时,保存的文件是父窗口及其所有的javascript,并且没有任何子窗口的痕迹。有谁知道如何解决这个问题?我只想保存子窗口。

感谢, -Kraryal

回答

2

当您保存网页时,保存原来的URL内容(例如,就像如果你下载了一个新的副本)

如果你想要一个“洁净”的版本,你需要在服务器上生成该版本,并打开带有该URL的弹出窗口作为第一个参数。

0

唉,看来我的避风港没有足够的信誉来为我的问题添加评论,所以我会在这里添加。

此javascript部署用于Internet Explorer和Safari。宿主应用程序不总是有权访问本地文件系统。

用户可以标记他们正在使用的页面,然后保存它以便以后打印或发送电子邮件。我们告诉他们将其保存为单个文件存档,以便它实际上可以是邮件。保存对话框可以做到这一点,用户可以将文件放在他们有权访问的地方,这就是我们使用它的原因。

看来,简单的方法是将JavaScript中的新html写入本地目录,但我们不能总是这样做。任何其他想法?感谢你目前的帮助。

+0

fyi - 你应该可以编辑你自己的问题... – garrow 2009-05-25 02:52:35

+0

谢谢你。那天我的浏览器正在愚蠢。 – kraryal 2009-06-22 01:08:21

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中,这甚至不弹出一个窗口,只是询问用户是否要保存文件,并将其保存为一个文件。第二部分。不完全理想,但至少它保存文件而不会弹出一个不必要的窗口。

或者,我们可以使用纯文本/ 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。由于tek-tip threadWikipedia article on the data URI scheme