從瀏覽器複製一段文字,粘貼到 Evernote 客戶端(Windows),Evernote 為什麼能得到原網頁的網址呢?不會有安全問題么?

我很擔心這個安全問題啊, 這不是意味著一個進程能夠訪問另一個進程(瀏覽器當前的網址)的內存內容了么?


以前做過一個類似的功能,只記得大概,特地去翻了一下當時的代碼。

首先,這個問題和進程/線程間的通信無關,而是與Windows剪貼板有關。

當你複製文件/文字/圖片/富文本(即帶有HTML格式的文字)時,這些內容由於格式不同,在存入剪貼板的時候會以不同的格式保存。比如圖片(指的是複製圖片,不是複製圖片文件)的格式為CF_BITMAP,文件格式為CF_HDROP,Plain Text的格式為CF_TEXT,而從瀏覽器複製的圖文內容則為CF_HTML。每個格式都有自己的規範,以便在保存原本信息之外記錄其他信息。

關於CF_HTML格式,詳見http://msdn.microsoft.com/en-us/library/aa767917(v=vs.85).aspx

你可能在給出的文檔中沒找到關於源頁面URL的描述。別急,在該文Description章節中,有這麼一段:

Other information may be added in the description section. For example, multiple pairs of StartFragment/EndFragment could be added to support noncontiguous selection of fragments. Also, Windows Internet Explorer places a SourceURL Property in the description section. This allows handlers of CF_HTML to resolve relative links within a file (such as when CF_HTML text is pasted into a DHTML Edit Control host).

也就是,每當你在IE中複製一下的時候,IE會將源頁面的URL添加到剪貼板中,格式如下:

......

StartFragment:0000000217

EndFragment:0000000931

SourceURL:http://msdn.microsoft.com/en-us/library/aa767917(v=vs.85).aspx

&

......

當工程師在寫客戶端的時候,他是可以通過Windows API獲得剪貼板中的內容的。所以在你複製之後,Evernote就可以獲得如上格式的內容,稍加處理就能得到帶有富格式的文本,還有內容源URL!

所以,簡單說就是源內容URL是和內容一起存在剪貼板中的。然後有幾個小問題需要補充一下:

Q.根據MSDN的文檔,只提到IE會添加SourceURL的屬性,其他的瀏覽器或程序是怎麼做到的呢?

A.我推測這是約定俗成吧。確實是IE首先這麼採用的,可能其他的瀏覽器或程序覺得這樣很好,也就跟進了。我這樣說可是有證據的,詳見Firefox bug report https://bugzilla.mozilla.org/show_bug.cgi?id=244685

Q.你說的我不信,我自己能印證一下么?

A. OK.首先從瀏覽器複製一段文字,然後打開Notepad++,選擇Edit -&> Paste Special -&> Paste HTML Content, done.

Q.我複製的內容是圖文混排的,在剪貼板中會怎麼保存?圖片會下載下來嗎?

A.可以根據第二個QA自己試一下哦。既然是CF_HTML格式,存的內容只是HTML代碼,圖片只是一個&元素而已。但是Onenote會根據內容自動下載圖片的!這是一個貼心功能。

ps:不止是從瀏覽器複製哦。從Word中複製,然後在Onenote中粘貼,甚至會顯示本地文檔地址!你明白了吧,這完全依賴寫程序的人怎麼處理!

pss:以上討論僅限於Windows, Linux/Mac 未知。


雖然我不知道具體機制,但複製同樣的內容到word,也會從原站點獲取信息。


這種情況是可以通過程序實現的,如果你粘貼在記事本或者word裡面也有這種情況,那應該就是瀏覽器瀏覽的網頁程序實現了這個效果,但是有的網站里的信息是沒有這玩意的!


推薦閱讀:

中國首批物聯網本科生的就業情況怎樣?
目前從事在線旅遊的運營類工作,下一步打算跳槽到傳統旅行社的從事計調的工作,這樣的職業生涯規劃可行嗎?
在出國旅行時如何解決上網流量問題。什麼套餐最划算?
對GIS專業前景感到迷茫?怎麼破?
Data Scientist (數據科學家) 和 Quant (數量金融分析師) 之間該如何選擇?

TAG:互聯網 | MicrosoftWindows | Evernote |