SYNCERのロゴ
アイキャッチ画像

URL.revokeObjectURL() - オブジェクトのURLを削除する

revokeObjectURL()は、URLのメソッドです。createObjectURL()で作成したオブジェクトのURLを削除します。

概要

名前
revokeObjectURL
所属
URL
IDL
static void revokeObjectURL(DOMString url);
仕様書
https://w3c.github.io/FileAPI/#dfn-revokeObjectURL

説明

引数(url)には、オブジェクトのURLを表す文字列を指定する。削除することで、その分のメモリが解放されます。

元々、ドキュメントが失われれば、そのドキュメントで作成されたオブジェクトのURLも自動的に失われます。同ドキュメント内で大量にURLを作成する仕組みなどの場合、可能な限りURLを削除することでパフォーマンスが上がります。

チュートリアル

このメソッドはコンストラクタ関数です。

var objectUrl = URL.createObjectURL( blob ) ;
URL.revokeObjectURL( objectUrl ) ;

デモ

URL.revokeObjectURL()のデモです。ローカルの画像ファイルを選択した後に、プレビュー画像をクリックしてURLを別ウィンドウで開いて下さい。「削除」のボタンをクリックしてURLを削除した後にリロードすると、そのURLが失われているのを確認しましょう。ファイルが当サイトのサーバーにアップロードされるようなことはありません。

<!-- このコードは編集できます。 -->

<!DOCTYPE html>
<html>
<style>
body { word-break: break-all ; tab-size: 2 ; }
div#result { white-space: pre-wrap ; }
</style>
<body>
<input type="file" multiple id="hoge">
<hr>
<p><button id="revokeObjectURL">削除する [revokeObjectURL()]</button></p>
<hr>
<div id="result"></div>
<script>
document.getElementById( "hoge" ).onchange = function () {
	document.getElementById( "result" ).textContent = "" ;
	objectUrls = [] ;

	var fileList = this.files ;

	for( var i=0,l=fileList.length; l>i; i++ ) {
		var objectUrl = URL.createObjectURL( fileList[i] ) ;

		console.log( objectUrl ) ;
		appendHTML( '<a href="' + objectUrl + '" target="_blank"><img src="' + objectUrl + '"></a>' + "<br>" ) ;
		appendHTML( objectUrl + "<br>" ) ;

		objectUrls.push( objectUrl ) ;
	}
}

document.getElementById( "revokeObjectURL" ).onclick = function () {
	objectUrls.forEach( function ( url ) {
		URL.revokeObjectURL( url ) ;
	} ) ;
}

function appendHTML ( html ) {
	document.getElementById( "result" ).innerHTML += html ;
}

var objectUrls = [] ;
</script>
</body>
</html>

サポート状況

ChromeFirefoxSafariEdgeIEOperaiOS SafariAndroid
6.0+ 10+ 15+ 6.0+ 4.0+
  • Twitterでシェア
  • Facebookでシェア
  • Google+でシェア
  • はてなブックマークでシェア
  • pocketに保存
  • LINEでシェア
更新履歴
2017年10月20日 (金)
コンテンツを公開しました。