Permissions API

これは実験的な機能です。本番で使用する前にブラウザー実装状況をチェックしてください。

Permissions API は、現在のコンテキストに起因する API のパーミッションの状態を照会するための一貫したプログラム方法を提供します。 例えば、ある API を使用するためのパーミッションが付与(granted)されているか拒否(denied)されているかや、API に対してパーミッションを付与すべきかどうかをユーザーに尋ねるかどうかなどです。

概念と使い方

歴史的に異なる API は独自のパーミッションを一貫性のない方法で扱います。 例えば、Notifications API はパーミッションの状態の明示的なチェックとパーミッションの要求を許可しますが、Geolocation API はできません(ユーザーが最初のパーミッションの要求を拒否すると問題を引き起こします)。 Permissions API は、パーミッションに関する限り、開発者がより良いユーザーエクスペリエンスを実装できるようにするためのツールを提供します。

permissions プロパティが Navigator オブジェクトで利用可能になり、標準の閲覧コンテキストとワーカーコンテキスト(WorkerNavigator — したがって、ワーカー内でパーミッションの確認が可能)の両方で、Permissions API 機能へのアクセスを提供する Permissions オブジェクトを返します。

このオブジェクトを取得した後は、Permissions.query() メソッドを使用して特定の API の PermissionStatus で解決される Promise を返すなど、パーミッション関連のタスクを実行できます。

Permissions API を使用してすべての API のパーミッションの状態を照会できるわけではありません。 Permissions に対応している注目すべき API は次のとおりです。

今後、より多くの API が Permissions API のサポートを取得する予定です。

Location Finder という簡単な例を用意しました。 例をライブで実行するか、Github でソースコードを見ることができます。

それがどのように機能するかについてもっと読むには Permissions API の使用を見てください。

インターフェイス

Navigator.permissionsWorkerNavigator.permissions 読取専用
それぞれメインコンテキストとワーカーコンテキストから Permissions オブジェクトへのアクセスを提供します。
Permissions
パーミッションの照会や取り消しのためのメソッドなど、コアとなる Permission API 機能を提供します。
PermissionStatus
パーミッションの現在の状態、およびパーミッションの状態の変更に応答するためのイベントハンドラへのアクセスを提供します。

仕様

仕様 状態 コメント
Permissions 草案 初期定義

ブラウザーの互換性

Permissions インターフェイス

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
PermissionsChrome 完全対応 43Edge ? Firefox 完全対応 46IE ? Opera 完全対応 ありSafari 未対応 なしWebView Android 完全対応 43Chrome Android 完全対応 43Firefox Android 完全対応 46Opera Android 完全対応 ありSafari iOS 未対応 なしSamsung Internet Android 完全対応 あり
accelerometer permissonChrome 完全対応 62Edge ? Firefox ? IE ? Opera ? Safari 未対応 なしWebView Android 完全対応 62Chrome Android 完全対応 62Firefox Android ? Opera Android ? Safari iOS 未対応 なしSamsung Internet Android ?
accessibility events permissonChrome 完全対応 62Edge ? Firefox ? IE ? Opera ? Safari 未対応 なしWebView Android 完全対応 62Chrome Android 完全対応 62Firefox Android ? Opera Android ? Safari iOS 未対応 なしSamsung Internet Android ?
ambient-light-sensor permissonChrome 完全対応 62Edge ? Firefox ? IE ? Opera ? Safari 未対応 なしWebView Android 完全対応 62Chrome Android 完全対応 62Firefox Android ? Opera Android ? Safari iOS 未対応 なしSamsung Internet Android ?
accelerometer permissonChrome 完全対応 62Edge ? Firefox ? IE ? Opera ? Safari 未対応 なしWebView Android 完全対応 62Chrome Android 完全対応 62Firefox Android ? Opera Android ? Safari iOS 未対応 なしSamsung Internet Android ?
camera permissionChrome 完全対応 64Edge ? Firefox ? IE ? Opera ? Safari 未対応 なしWebView Android 完全対応 64Chrome Android 完全対応 64Firefox Android ? Opera Android ? Safari iOS 未対応 なしSamsung Internet Android ?
clipboard-read permissonChrome 完全対応 64Edge ? Firefox 未対応 なしIE ? Opera ? Safari 未対応 なしWebView Android 完全対応 64Chrome Android 完全対応 64Firefox Android 未対応 なしOpera Android ? Safari iOS 未対応 なしSamsung Internet Android ?
clipboard-write permissionChrome 完全対応 64Edge ? Firefox 未対応 なしIE ? Opera ? Safari 未対応 なしWebView Android 完全対応 64Chrome Android 完全対応 64Firefox Android 未対応 なしOpera Android ? Safari iOS 未対応 なしSamsung Internet Android ?
geolocation permissionChrome 完全対応 43Edge ? Firefox ? IE ? Opera 完全対応 30Safari 未対応 なしWebView Android 未対応 なしChrome Android 完全対応 43Firefox Android ? Opera Android 完全対応 30Safari iOS 未対応 なしSamsung Internet Android ?
background-sync permissionChrome 完全対応 51Edge ? Firefox ? IE ? Opera ? Safari 未対応 なしWebView Android 完全対応 51Chrome Android 完全対応 51Firefox Android ? Opera Android ? Safari iOS 未対応 なしSamsung Internet Android ?
magnetometer permissionChrome 完全対応 62Edge ? Firefox ? IE ? Opera ? Safari 未対応 なしWebView Android 完全対応 62Chrome Android 完全対応 62Firefox Android ? Opera Android ? Safari iOS 未対応 なしSamsung Internet Android ?
microphone permissionChrome 完全対応 64Edge ? Firefox ? IE ? Opera ? Safari 未対応 なしWebView Android 完全対応 64Chrome Android 完全対応 64Firefox Android ? Opera Android ? Safari iOS 未対応 なしSamsung Internet Android ?
midi permissionChrome 完全対応 43Edge ? Firefox ? IE ? Opera 完全対応 30Safari 未対応 なしWebView Android 未対応 なしChrome Android 完全対応 43Firefox Android ? Opera Android 完全対応 30Safari iOS 未対応 なしSamsung Internet Android ?
notifications permissionChrome 完全対応 43Edge ? Firefox ? IE ? Opera 完全対応 30Safari 未対応 なしWebView Android 未対応 なしChrome Android 完全対応 43Firefox Android ? Opera Android 完全対応 30Safari iOS 未対応 なしSamsung Internet Android ?
payment-handler permissionChrome 完全対応 66Edge ? Firefox ? IE ? Opera ? Safari 未対応 なしWebView Android 完全対応 66Chrome Android 完全対応 66Firefox Android ? Opera Android ? Safari iOS 未対応 なしSamsung Internet Android ?
persistent-storage permissionChrome 未対応 なしEdge ? Firefox 完全対応 53IE ? Opera 未対応 なしSafari 未対応 なしWebView Android 未対応 なしChrome Android 未対応 なしFirefox Android 完全対応 53Opera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android ?
push permissionChrome 完全対応 43Edge ? Firefox ? IE ? Opera 完全対応 30Safari 未対応 なしWebView Android 未対応 なしChrome Android 完全対応 43Firefox Android ? Opera Android 完全対応 30Safari iOS 未対応 なしSamsung Internet Android ?
queryChrome 完全対応 43Edge ? Firefox 完全対応 46IE ? Opera 完全対応 ありSafari 未対応 なしWebView Android 完全対応 43Chrome Android 完全対応 43Firefox Android 完全対応 46Opera Android 完全対応 ありSafari iOS 未対応 なしSamsung Internet Android 完全対応 あり
request
実験的非標準
Chrome 完全対応 46Edge ? Firefox 未対応 なしIE ? Opera ? Safari 未対応 なしWebView Android 完全対応 46Chrome Android 完全対応 46Firefox Android 未対応 なしOpera Android ? Safari iOS 未対応 なしSamsung Internet Android ?
requestAll
実験的非標準
Chrome 完全対応 48Edge ? Firefox 未対応 なしIE ? Opera ? Safari 未対応 なしWebView Android 完全対応 48Chrome Android 完全対応 48Firefox Android 未対応 なしOpera Android ? Safari iOS 未対応 なしSamsung Internet Android ?
revoke
実験的非標準
Chrome 完全対応 46Edge ? Firefox 完全対応 51
無効
完全対応 51
無効
無効 From version 51: this feature is behind the dom.permissions.revoke.enable preference (needs to be set to true). To change preferences in Firefox, visit about:config.
未対応 47 — 51
IE ? Opera ? Safari 未対応 なしWebView Android 完全対応 46Chrome Android 完全対応 46Firefox Android 完全対応 51
無効
完全対応 51
無効
無効 From version 51: this feature is behind the dom.permissions.revoke.enable preference (needs to be set to true). To change preferences in Firefox, visit about:config.
未対応 47 — 51
Opera Android ? Safari iOS 未対応 なしSamsung Internet Android ?

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
実験的。動作が変更される可能性があります。
実験的。動作が変更される可能性があります。
非標準。ブラウザー間の互換性が低い可能性があります。
非標準。ブラウザー間の互換性が低い可能性があります。
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。

関連情報