Contents

網頁複製文字研究整理

網頁複製文字研究整理

常用這個功能,我都網路 Google 找解答,今天又去爬了一次,就順便整理一下。

以前常用寫法

前端開發:如何使用Javascript實現複製到剪貼簿的功能 - Astral Web 歐斯瑞有限公司

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
function copyText() {
    var node = document.getElementById("text");
    if (document.body.createTextRange) {
        var range = document.body.createTextRange();
        range.moveToElementText(node);
        range.select();
        document.execCommand("copy");
        alert("複製成功!");
    } else if (window.getSelection) {
        var selection = window.getSelection();
        var range = document.createRange();
        range.selectNodeContents(node);
        selection.removeAllRanges();
        selection.addRange(range);
        document.execCommand("copy");
        alert("複製成功!");
    } else {
        alert('無法複製內容、瀏覽器不支援');       
    }
}

自動選取某個區域的文字 - OXXO.STUDIO

Clipboard API

How do I copy to the clipboard in JavaScript? - Stack Overflow,這篇有很多留實做方法,這邊有看到有人用到 HTML5 Clipboard API。

1
2
3
4
5
6
var text = "Example text to appear on clipboard";
navigator.clipboard.writeText(text).then(function() {
  console.log('Async: Copying to clipboard was successful!');
}, function(err) {
  console.error('Async: Could not copy text: ', err);
});

注意,這邊不能在 console.log 下,因為會無效。(原因:Clipboard write was blocked due to lack of user activation.),需要使用者操做才能有效。

Clipboard API 實做測試

Clipboard Test

復製圖片法

Unblocking clipboard access這篇有教,但先不研究。目前知道Firefox 貼上只能用在文字上面,圖片目前還不行。

Async Clipboard API Image Demo

相關 API 文件

Clipboard.writeText() - Web APIs | MDN 複製用的。

Permissions API - Web APIs | MDN,權限控制。

TextRange - Web APIs | MDN 以廢棄,不推薦使用

Selection - Web APIs | MDN,這個是框選用的API。仔細看發現還滿簡單的。

1
2
var selObj = window.getSelection();
var range  = selObj.getRangeAt(0);