1、使用DOM方法獲取文件上傳輸入框的元素。
2、為前端js文件輸入元素添加change事件監聽。
3、通過event獲取文件名,進行前端js後續處理。
② 前端小技巧:載入並解析Markdown文檔
移步github
作為程序猿,應該多多少少都用過Markdown,或者至少讀過別人用Markdown語法寫的一些文檔,比如在GitHub有一個你要用的開源程序,而你又是第一回用它,那麼你一般會在這個倉庫的Readme里讀一讀開發者提供的工具說明和使用的相關信息,這部分文檔一般就是用Markdown的語法寫的
簡單來說,Markdown就是簡化閹割過的HTML,優點是語法簡單高效,缺點就是HTML中一些稍微高級復雜一點的效果,比如文本居中,Markdown就無法實現,所以Markdown一般被用來寫對頁面排版要求不高,以文字為主的筆記和文檔
如果你一開始用Markdown寫了文檔,想要把它放到你的網頁上去,並以解析後的形式呈現
那麼你有兩種實現途徑:
第一種方法:
第二種方法:
下面我們對 第二種方法 的實現過程進行詳細的說明
上一部分已經提到,我們需要先讓原始網頁請求伺服器中的Markdown文檔
這一步需要使用AJAX(中文音譯為阿甲克斯),這里先對AJAX作一個簡單的科普:
對上面的腳本繼續簡單的說明:
那麼這里有幾個問題需要解答:
1. 怎麼指定我想要的Markdown文檔呢?
表單的顯示效果如下:
點擊表單中的「顯示」按鈕後會執行 showMarkdown( ) 函數,即 用AJAX獲取Markdown文檔 部分的那個函數,並且將表單選擇的信息通過 form 變數傳遞給了 showMarkdown( ) 函數中的 f 變數
這樣就通過表單設定了用戶指定的Markdown文檔
這里採用的是GitHub上的名為 marked 的JS框架,鏈接: https://github.com/markedjs/marked
要想使用這個框架,需要在html腳本的頭信息中引用這個框架:
引用這個框架後就可以使用裡面定義的 marked( ) 函數進行Markdown文本解析了
參考資料:
(1) 本人github筆記:AJAX學習筆記
(2) marked說明文檔
③ 如何使用Node.js處理前端代碼文件的編碼問題
使用 NodeJS 編寫前端工具時,操作得最多的是文本文件,因此也就涉及到了文件編碼的處理問題。我們常用的文本編碼有 UTF8 和 GBK 兩種,並且 UTF8 文件還可能帶有 BOM。在讀取不同編碼的文本文件時,需要將文件內容轉換為 JS 使用的 UTF8 編碼字元串後才能正常處理。
1、BOM 的移除
BOM 用於標記一個文本文件使用 Unicode 編碼,其本身是一個 Unicode 字元("uFEFF"),位於文本文件頭部。在不同的 Unicode 編碼下,BOM 字元對應的二進制位元組如下:
3、單位元組編碼
有時候,我們無法預知需要讀取的文件採用哪種編碼,因此也就無法指定正確的編碼。比如我們要處理的某些 CSS 文件中,有的用 GBK 編碼,有的用 UTF8 編碼。雖然可以一定程度可以根據文件的位元組內容猜測出文本編碼,但這里要介紹的是有些局限,但是要簡單得多的一種技術。
首先我們知道,如果一個文本文件只包含英文字元,比如 Hello World,那無論用 GBK 編碼或是 UTF8 編碼讀取這個文件都是沒問題的。這是因為在這些編碼下,ASCII0~128 范圍內字元都使用相同的單位元組編碼。
反過來講,即使一個文本文件中有中文等字元,如果我們需要處理的字元僅在 ASCII0~128 范圍內,比如除了注釋和字元串以外的JS代碼,我們就可以統一使用單位元組編碼來讀取文件,不用關心文件的實際編碼是 GBK 還是 UTF8。
④ JS 下載/導出 csv、excel、txt 、img等文件的方法總結
1. 調用後端介面導出文件
示例下載介面url https://gold-cdn.xitu.io/extension/0.3.9/package.crx
1.1 window.open(url)
會打開一個新窗口,開始下載後會自動關閉新窗口。Safair 下載後沒有關閉新窗口。
Chrome、IE、Safair支持,貌似火狐不支持
1.2 window.location=url
在當前窗口下載
Chrome、Safair支持
1.3 iframe
在HTML中,iframe 的屬性用src,但在JS中,只有部份瀏覽器支持修改src(讀是沒問題),真正通用的是要修改對應框架的href值。
1.4 <a href="url" download="filename">點擊鏈接下載</a>
HTML5中給a標簽增加了一個download屬性,只要有這個屬性,點擊這個鏈接時瀏覽器就不在打開鏈接指向的文件,而是改為下載,目前只有chrome、firefox、opera、Edge支持。常用此方法點擊下載圖片。
IE既不支持a標簽的download屬性也不允許js調用a 標簽的click方法。
2. 前端直接導出文件到本地
2.1 將數據轉成DataURI用<a>標簽下載
<a href="DataURI" download="filename">點擊鏈接下載</a>
Data URI Scheme
Data URI Scheme是指可以在Web 頁面中包含圖片但無需任何額外的HTTP 請求的一類URI。 Data URI Scheme一般用於將經過base64編碼的數據嵌入網頁中,從而減少請求資源的鏈接數。IE8 之前的版本都不支持 data URI scheme。
DataURI的格式:
生成DataURI的方式
1. encodeURIComponent
使用這種方式,當數據過多時,URI長度容易超出瀏覽器限制。 encodeURIComponent常用來轉碼介面參數,為了避免伺服器收到不可預知的請求,對任何用戶輸入的作為URI部分的內容都需要用encodeURIComponent進行轉義。
2. URL.createObjectURL
URL.createObjectURL的參數是File對象或者Blob對象
IE10以下不支持URL.createObjectURL
2.2 windows.navigator.msSaveBlob IE10~Edge 專用
msSaveBlob 是IE10~Edge 私有方法。
2.3 execCommand
有的資料有提到IE9可以使用execCommand方法來保存數據到本地文件,但是我自己沒有驗證過,不知道是否可行。而且MDN文檔中execCommand沒有查到SaveAs命令。這塊只是做個小記錄。
js數據直接導出/下載數據到本地到方法總結
本文轉載自:https://juejin.im/post/5cd00253518825418f6f2a8c?utm_source=gold_browser_extension