window對象的URL對象是專門用來將blob或者file讀取成一個url的。html
window.URL.createObjectURL(file / blob)
這個url能夠用在html的任何能夠使用url的地方,好比img的src ; audio/video的src和source標籤等。
全部能在瀏覽器中顯示的圖片、音頻、視頻等都是能夠用url轉換成一個url對象的,這個對象一旦被src引用,就會顯示出來。ajax
那麼這些file或者blob來自於哪裏呢?能夠是在本地硬盤中經過<input type='file'>選擇的文件,也能夠是經過ajax請求後某個不知名的服務器請求到內存的。瀏覽器
問題: 若是一個img標籤的src屬性是一個excel文件轉換成的url對象,那會發生什麼?服務器
我想img確定將它讀不出來,由於會img標籤會檢測文件類型。ide
除了能夠將一個文件或者blob轉化成一個Url對象,還能夠將一個url字符串轉換成一個URL對象函數
// https://cn.bing.com?id=123 var parsedUrl = new URL('https://cn.bing.com?id=123v'); console.log('parsedUrl' , parsedUrl, parsedUrl.searchParams.get("id")); // 123 console.log('parsedUrl' , parsedUrl.toString(), parsedUrl.searchParams.set("name" , 'alexandra')); // https://cn.bing.com/?id=123v&name=alexandra
searchParams屬性返回一個URLSearchParams對象,這樣就能夠對url對象中的參數進行遍歷或者其餘操做url
var urlSearchParams = URL.searchParams;
URL的toString()方法能夠將URL轉換成url字符串,且:excel
URL.toString() === URL.href
// http://www.example.com/démonstration.html let url = new URL('http://www.example.com/démonstration.html') let test = url.toString() === url.href; console.log('url.href', url.href, 'url.toString()' , url.toString() , 'test' , test); // url.href http://www.example.com/d%C3%A9monstration.html url.toString() http://www.example.com/d%C3%A9monstration.html test true
https://developer.mozilla.org...code
URL.createObjectURL(object)是URL 對象的靜態方法,用於建立一個DOMString(is a UTF-16 string),其實就是返回了一個在內存中指向傳入參數object的引用路徑url字符串。
生成的這個url字符串會在當前頁面的document被銷燬的時候失效。視頻
objectURL = URL.createObjectURL(object); object A File, Blob or MediaSource object to create an object URL for. return A DOMString containing an object URL that can be used to reference the contents of the specified source object.
https://developer.mozilla.org...
URL對象的靜態方法revokeObjectURL()用於銷燬以前經過URL.createObjectURL(object)方法建立的url。
一旦調用這個方法就表示告訴瀏覽器再也不保存以前被建立的那個url了。 在revokeObjectURL(objectURL)以後,再次使用該url,會報錯,由於該url已經被銷燬,沒法使用了。
window.URL.revokeObjectURL(objectURL); objectURL A DOMString representing a object URL that was previously created by calling createObjectURL(). return ubdefined