按钮下载网页的HTML

按钮下载网页的HTML,html,Html,有没有一种方法可以让你点击一个按钮/链接,当你点击它时,它会占据当前页面的位置并下载它的HTML版本?它也将是一个iframe,链接应该只下载iframe的内容。谢谢 您只需要一个简单的脚本,它将文件名作为参数并生成zip文件。是PHP中的一个示例。以下JavaScript将获取当前文档并将其作为下载链接提供。在Chrome上测试过,不确定其他的。请记住,IE对数据URI大小有限制。此外,除非您将base标记插入head标记的顶部(或找到其他方法滚动资源),否则您将丢失外部图像/CSS/等: /

有没有一种方法可以让你点击一个按钮/链接,当你点击它时,它会占据当前页面的位置并下载它的HTML版本?它也将是一个iframe,链接应该只下载iframe的内容。谢谢

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

以下JavaScript将获取当前文档并将其作为下载链接提供。在Chrome上测试过,不确定其他的。请记住,IE对数据URI大小有限制。此外,除非您将
base
标记插入
head
标记的顶部(或找到其他方法滚动资源),否则您将丢失外部图像/CSS/等:

//创建链接以触发下载
//您也可以获取现有标记并对其进行更新
var a=document.createElement('a');
//发送为类型应用程序/八位字节流以强制下载,而不是在浏览器中
a、 href=
“数据:应用程序/八位字节流;base64,”+
btoa(“+document.getElementsByTagName('html')[0].outerHTML+
"");
a、 innerText=“下载此页面”;
//把链接放在任何你想要的地方
文件.正文.附件(a);

编辑:也不提供文件名或下载链接末尾的.htm。。。嗯。这些东西实际上只能由contentdispositionheader提供,这需要向服务器发送请求,所以。。。这不是一种美妙的用户体验,而是获取用户所看到的确切页面状态的最简单方法。

如右键单击>另存为?你到底想要什么?在Chrome中,Ctrl-S将保存源代码。这就是你想要的吗?你需要一种服务器端语言来序列化HTML,压缩它,然后显示正确的标题来强制下载对话。“他们想要一个按钮,他们只需点击并让它保存一个压缩文件”……注意,客户机经常要求一些非常愚蠢的事情。也就是说,您可以创建一个链接,将url作为查询字符串传递给在服务器上运行的后端脚本,该脚本将压缩文件,然后将其流式传输到浏览器,浏览器将提示“文件保存”对话框。或者,您可以向客户端演示如何使用另存为。。。这是内置在他们的浏览器中的。啊,是的,事实上这有点复杂,但对于Facebook iframe,他们希望有一个按钮,只下载iframe的HTML版本,所以右键单击>另存为不起作用,因为它也会关闭Facebook页面。我甚至不知道从哪里开始用你建议的其他方法。我很难让它工作,但看起来这正是我想要做的。假设我正在尝试下载一个带有如下URL的页面的源代码:
somesite.com/someslug/welcome
,我如何让它下载?到目前为止,我使用表单运行它,但它没有在任何地方创建zip文件。请检查脚本是否对目标目录具有写入权限。此外,您还可以检查函数调用返回的$result变量的值,看看它是否成功。我取消了
//debug
下面一行的注释,然后单击按钮,它就进入了一个空白页=/如果您有表单,请使用表单数据构建用法示例中的$files\u to\u zip数组参数$文件\u到\u zip=array();这对我有用。确保目录是可写的。
// 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);