2011-03-17 125 views
2

有没有办法让按钮/链接,当你点击它,它会采取当前页面的位置并下载它的HTML版本?它也将是一个iframe,链接应该只是下载iframe的内容。谢谢!按钮下载HTML页面

+1

喜欢右键点击>另存为...?你究竟在问什么? – Tejs 2011-03-17 01:37:49

+0

在Chrome中,Ctrl S将保存源文件。这就是你想要的吗? – 2011-03-17 01:40:53

+1

您需要服务器端语言来对HTML进行序列化,然后将其压缩,然后显示正确的标题以强制下载对话。 – alex 2011-03-17 01:49:03

回答

1

所有你需要的是一个简单的脚本,它将文件名作为参数并生成一个zip文件。 Here是PHP中的一个示例。

+0

我无法正常工作,但它看起来正是我想要做的。比方说,我试图用一个像这样的URL下载页面的源代码:'somesite.com/someslug/welcome',我将如何下载它?到目前为止,我已经使用表单运行它,但它不会在任何地方创建zip文件。 – Jared 2011-03-17 02:47:29

+0

检查脚本是否对目标目录具有写入权限。另外,您可以检查函数调用返回的$ result变量的值,看看它是否成功。 – anon 2011-03-17 02:58:21

+0

我取消了'debug'下面的一行注释并点击了按钮,它只是进入了一个空白页面。=/ – Jared 2011-03-17 03:03:51

1

以下JavaScript将采用当前文档并将其作为下载链接提供。在Chrome中测试,不知道其他人。请记住,IE对DataURI大小有限制。此外,你会失去你的外部图像/ CSS /等等,除非你注入base标签进入head标签的顶部(或找一些其他的方式在资源滚动):

// create the link to trigger download 
// you could alternatively fetch an existing tag and update it 
var a = document.createElement('a'); 

// send as type application/octet-stream to force download, not in browser 
a.href = 
    "data:application/octet-stream;base64," + 
    btoa("<html>"+ document.getElementsByTagName('html')[0].outerHTML + 
    "</html>"); 

a.innerText = "Download this page"; 

// put the link wherever you want 
document.body.appendChild(a); 

编辑:还没有按不提供文件名,或在下载链接结尾提供.htm文件。hmph。这些事情只能通过Content-Disposition头部提供,并且需要将请求发送到服务器,所以...不是一个出色的用户体验,但是以页面状态作为用户的最简单方法看到它。