2011-03-17 187 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頭部提供,並且需要將請求發送到服務器,所以...不是一個出色的用戶體驗,但是以頁面狀態作爲用戶的最簡單方法看到它。