Jared
Jared

Reputation: 2096

Button to download HTML of a page

Is there a way to have a button/link and when you click on it, it will take the current page location and download an HTML version of it? It will be an iframe too, and the link should just download the iframe's content. Thanks!

Upvotes: 2

Views: 1937

Answers (2)

Stoive
Stoive

Reputation: 11322

The following JavaScript will take the current document and provide it as a download link. Tested in Chrome, not sure about others. Keep in mind that IE has limits for DataURI size. Furthermore, you'll lose your external images/CSS/etc, unless you inject the base tag into the top of the head tag (or find some other way to roll in resources):

// 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);

EDIT: also doesn't provide a filename, or a .htm at the end of the download link... hmph. Those things can only really be provided by the Content-Disposition header, and that requires sending a request off to the server, so... not a fantastic user experience, but the easiest way to get the exact page state as the user sees it.

Upvotes: 2

anon
anon

Reputation: 1061

All you need is a simple script that takes the file name as a param and generates a zip. Here is an example in PHP.

Upvotes: 1

Related Questions