更多參考:點這裡每個事件都有乙個 before 事件對應:
beforecopy、beforecut、beforepaste;
這幾個 before 一般不怎麼用,所以我們把注意力放在三個事件就可以了。
copy事件使用示例:
我們可以看到事件物件中的屬性:
我們主要研究的是裡面的clipboarddata
屬性物件
clipboarddata 物件: 用於訪問以及修改剪貼簿中的資料
clipboarddata物件中有兩個方法:
setdata():常配合copy事件使用,用於設定到剪貼簿中的值
getdata():常配合paste事件使用,用於獲取設定到剪貼簿中的值
不同瀏覽器,所屬的物件不同:在 ie中這個物件是window物件的屬性,在chrome、safari和firefox中,這個物件是相應的event物件的屬性。所以我們在使用的時候,需要做一下如下相容:
document.body.oncopy = e => ;
copy配合getselection實現複製某段文字
注意:window.getselection().tostring()
我是呼叫tostring()
方法轉成文字的,如果不呼叫這個方法,直接通過window.getselection()
取到值存到剪貼簿會有出奇的效果,會連同效果一起貼上(比如html格式的,會隱性地把什麼都複製進去),需要配合paste事件
通過patse事件獲取剪下板中的:
解釋:當貼上事件觸發時遍歷剪下版物件(clipboarddata)
中的所有items
,找到型別為的item
並呼叫getasfile
方法得到檔案物件
拿到file
物件後我們有幾種選擇:
通過filereader
得到檔案物件的base64
字串
var reader = new filereader();
reader.onload = function(e)
reader.readasdataurl(file); //此處的file為上面得到的檔案物件```
通過formdata
檔案物件轉換為二進位制資料
var formdata = new formdata();
通過url.createobjecturl
轉成url位址預覽
var bloburl=url.createobjecturl(file)
示例**:
侷限性:
vim 複製 剪下 貼上 撤銷操作
背景知識 vim 有 12 個貼上板,分別是 0 1 2 9 a 用 reg 命令可以檢視各個貼上板裡的內容。在 vim 中簡單用 y 命令只是複製到 雙引號 貼上板裡,同樣用 p 命令貼上的也是這個貼上板裡的內容 要將 vim 的內容複製到某個貼上板,需要先退出編輯模式,再進入命令模式後,選擇要複...
瀏覽器事件
常用瀏覽器事件與dom事件,包括滑鼠事件 鍵盤事件 框架 物件事件 表單事件 剪貼簿事件 列印事件 拖動事件 多 事件 動畫事件 過渡事件。onbeforeinstallprompt 當使用者即將被提示安裝web應用程式時,該處理程式將在裝置上排程,其相關聯的事件可以儲存以供稍後用於在更適合的時間提...
瀏覽器事件
常用瀏覽器事件與dom事件,包括滑鼠事件 鍵盤事件 框架 物件事件 表單事件 剪貼簿事件 列印事件 拖動事件 多 事件 動畫事件 過渡事件。onbeforeinstallprompt 當使用者即將被提示安裝web應用程式時,該處理程式將在裝置上排程,其相關聯的事件可以儲存以供稍後用於在更適合的時間提...