JavaScript 是一種常用的編程語言,可以將網(wǎng)頁制作的更加生動(dòng)有趣,同時(shí)它也有一些特殊的功能,比如保存網(wǎng)頁。在很多時(shí)候,我們需要將整個(gè)網(wǎng)頁保存在本地,以便以后離線閱讀或者備份,有時(shí)我們還需要保存網(wǎng)頁中的一些圖片,這就需要我們使用 JavaScript 的知識(shí)了。
使用 JavaScript 保存網(wǎng)頁非常簡單,我們只需要使用以下代碼即可:
window.open('data:text/html;charset=utf-8,' + encodeURIComponent(document.documentElement.outerHTML));
在以上代碼中,window.open()函數(shù)是將新網(wǎng)頁打開在一個(gè)新的瀏覽器窗口中,接下來的字符串'data:text/html;charset=utf-8,'是將保存的網(wǎng)頁數(shù)據(jù)轉(zhuǎn)換成文本數(shù)據(jù)的 MIME 類型,然后通過encodeURIComponent()函數(shù)轉(zhuǎn)化成一個(gè) url 編碼格式的字符串,這里需要注意的是使用 encodeURIComponent() 函數(shù)是為了將特殊字符轉(zhuǎn)義,比如 '<' 和 '>' 等符號(hào)。最后,document.documentElement.outerHTML是將整個(gè)網(wǎng)頁的 HTML 代碼轉(zhuǎn)化成文本數(shù)據(jù)的操作。
接下來,我們來看看如何保存網(wǎng)頁中的圖片。同樣,我們只需要用一行簡單的 JavaScript 代碼就可以實(shí)現(xiàn)。
var images = document.getElementsByTagName('img') for(var i = 0; i< images.length; i++) { var img = new Image(); img.crossOrigin = 'Anonymous'; img.src = images[i].src; images[i].src = img.src; window.open(img.src) }
在以上代碼中,我們使用document.getElementsByTagName()函數(shù)獲取到了網(wǎng)頁中的所有圖片節(jié)點(diǎn),然后使用一個(gè) for 循環(huán)將每張圖片的地址轉(zhuǎn)成 base64 編碼格式,并重新給每個(gè)圖片節(jié)點(diǎn)設(shè)置了新的 src 屬性,這樣網(wǎng)頁中的所有圖片就全部被保存了下來。最后使用window.open()函數(shù),可以將圖片在新的瀏覽器窗口中打開。
總體來說,使用 JavaScript 保存網(wǎng)頁非常簡單,但是需要注意的是,保存網(wǎng)頁中的圖片有一些限制,比如無法保存跨域圖片等,需要對(duì)圖片進(jìn)行跨域處理。另外,不同的瀏覽器有不同的限制,部分瀏覽器禁止了一些保存文件的操作。因此,在使用 JavaScript 保存網(wǎng)頁時(shí)一定要仔細(xì)、謹(jǐn)慎。