人氣 54°c

Html js下載和儲存按鈕+還原和復原按鈕

Html 經常會用到的幾個儲存按鈕、下載按鈕、還原按鈕、復原按鈕、恢復按鈕,不論是 input 還是 textarea 輸入框,有了這幾個按鈕,程序就變得超方便,使用者用起來更加得心應手。

程序猿如果要加上這些按鈕,往往都要東拼西湊,這次本人一次過分享出來,給大家參考一下。

這些按鈕有些是 HTML 自帶的,有些是用 JS 編寫的,不過!無論是那一種方式,都是能用的。

好! Action...

下載按鈕(儲存按鈕):

這個連結前面不能加上"https://" 或 "http://" 或 "https://www.moonlol.com/" 或 "http://www.moonlol.com/"

只可以填上文件相對路徑,如"mlogo.png" 或 "/mlogo.jpg" 或 "image/mlogo.mp3" 或 "/file/mlogo.mp4"

01. 在連結(鏈接)加上 download 下載檔案文件

程式碼:

<a href="image/mlogo.jpg" download>下載圖片或檔案 01</a>

02. 下載連結(連接)改為 download="Mpng" 自定義檔案名稱

程式碼:

<a href="image/mlogo.png" download="Mpng">下載圖片或檔案 02</a>

03. 將 A 下載連結標籤,模仿 Input 或 Button 樣式

程式碼:

<style type="text/css">
#download-btn {
  background: #04AA6D;
  margin-top: 5px;
  padding: 10px 20px;
  color: white;
  text-decoration: none;
  border-radius: 5px;
  display: inline-block;
}
#download-btn:hover {
  background: #059862;
}
</style>
<a href="image/mlogo.png" id="download-btn" download>下載圖片或檔案 03</a>

04. HTML5 的 Canvas 引用圖片、檔案,並下載 Canvas 程式產生出來的圖片、文件。

一、程式碼:

<script type="text/javascript">
    function download() {
      const canvas = document.querySelector('canvas');
      const url = canvas.toDataURL('image/png');
      const a = document.createElement('a');
      a.href = url;
      a.download = 'drawing.png';
      document.body.appendChild(a);
      a.click();
      a.remove();
    };
</script>
<button onClick="download()">下載</button>

二、程式碼:

<script type="text/javascript">
    function download() {
      const canvas = document.querySelector('canvas');
      const url = canvas.toDataURL('image/png');
      const a = document.createElement('a');
      a.href = url;
      a.download = 'qr-code.png';
      document.body.appendChild(a);
      a.click();
      a.remove();
    }
    generate();
</script>
<button onClick="download()">下載</button>

三、程式碼:

<script type="text/javascript">
   function generate() {
    var canvas = document.getElementById("qrcode").querySelector("canvas");
    var dataURL = canvas.toDataURL("image/png");
    var downloadBtn = document.getElementById("downloadBtn");
    downloadBtn.href = dataURL;
  }
</script>
<a href="#" id="downloadBtn" download="qrcode.png">下載QRCode</a>

URL連結使用絕對路徑(絕對位址)下載問題:

使用 download 屬性需要注意,只有同域(來源相同)時才會得到完整支援。 這一點 w3school 並沒有明確指出。 Mozilla 的開發文檔裡有一行小字:This attribute is only honored for links to resources with the same-origin. 在 Chrome 下,當 href 不同域,會以原始的名稱下載檔。在 Firefox 下,當 href 不同域時,會當做普通 A 鏈接標籤處理,直接在瀏覽器中打開該連接。

而且 download 是一個非標準 MIME 類型:某些情況下,即使資源是圖片,但如果伺服器返回的 MIME 類型不是標準的圖片類型,如: image/jpeg、image/png 等,瀏覽器也可能不會觸發下載行為。

解決方法:

一、針對其它源的圖片或文件位址做代理,將對它們的訪問代理到本地處理。

二、將其它源的圖片或文件轉成 Base64 編碼後,再放入 href 位置內。

圖片轉換Base64工具:上傳圖片網站

演示:

01. ifreesite.com/favicon

02. ifreesite.com/qrcode

技術文檔:

01. How To Create a Download Link

02. HTML a download Attribute

03. 解決 a download無法直接下載檔案問題

04. Canvas 如何引用圖片?如何下載圖片?

05. HTML JS實現點擊按鈕下載文件功能

還原按鈕(Undo 復原按鈕 / 恢復按鈕):

程式碼:

<script type="text/javascript">
var save = ''
function undo() {
   undobtn = document.biggbks.text.value
   document.biggbks.text.value = save
   save = undobtn
}
</script>
<form name="biggbks">
<textarea name="text" id="text" rows="" cols="" style="width:350px;height:150px;"></textarea>
<br />
<br />
<input type="button" value="復原" onClick="undo()" />
</form>

演示:ifreesite.com/gbk-big5.htm

技術文檔:

01. Undo/Redo In Text Field - UndoRedo.js

02. GitHub jzaefferer/undo: Undo.js

測試代碼(網頁):ifreesite.com/runcode.htm

圖片預覧:

相關文章:
01. Html js清除按鈕包括清空value屬性值
02. JS複製按鈕clipboard copy element
標籤: