æ¬é (Permissions)
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2022å¹´9æ.
* Some parts of this feature may have varying levels of support.
æè¦
Permissions API å¯é¡¯ç¤º Apps æè¦æ±çæææ¬éï¼ä»¥å©ä½¿ç¨è 管çãApps å¯é鿤 API èè®åå ¶ä» Apps çæ¬é並é²ä¸æ¥è®æ´ã
éé PermissionSettings ä»é¢ç navigator.mozPermissionSettings 屬æ§ï¼å³å¯åå Permission Managerã
å·²å®è£ Apps çæ¬é
ææ Apps åéééèªå·±ç manifest æªæ¡èè¦æ±æ¬éãApps æ¯æ¬¡æä½¿ç¨ç APIï¼å以ãè«æ±é¡¯æ§æ¬é (Explicit Permission)ãç API çºä¸»ï¼ä¸¦æç¤ºä½¿ç¨è æ¯å¦é鿬éãå¦æä½¿ç¨è 鏿ãä¸è¦åæç¤ºãï¼å¤§æ¦ä¹å°±ä¸å¤ªå¯è½æ¹è®æ±ºå®äºãAPI åè½æä¾ä»é¢ï¼ä»¥å©ä½¿ç¨è 管çå·²ç¼åºçæ¬éã
éé PermissionSettings.get()ãset()ãisExplicit() å½å¼å³å¯éå°ä¸è¿°ä½æ¥ã
è®åæ¬é
è¥è¦ç¥éå·²ç¼åºæ¬éçç®åçæ
ï¼å¯ä½¿ç¨ PermissionSettings.get() å½å¼ãæ¤å½å¼å¯åå³å串ï¼ä»¥é¡¯ç¤ºç¹å® Apps æ¬éçç®åçæ
ãå¯è½çæ¸å¼æï¼
allow-
å·²éé該æ¬éï¼ä¸ä¸é使ç¨è çé²ä¸æ¥äºåã
denied-
已妿±ºè©²æ¬éï¼å¯è½æ¯ç³»çµ±æä½¿ç¨è æå¦æ±ºã
prompt-
代表該æ¬éå°ä»¥æé¡¯çæç¤ºæ¹æ³ï¼è©¢å使ç¨è æ¯å¦çµ¦äºæ¬éã
unknown-
代表該 Apps 並æªè©¢åæ¤æ¬éï¼ä¹ä¸ææç¤ºä½¿ç¨è æ¯å¦çµ¦äºæ¬éã
// Let's check all installed apps
var apps = navigator.mozApps.mgmt.getAll();
apps.onsuccess = function () {
var permission = navigator.mozPermissionSettings;
// Let's check the permission of each app
apps.result.forEach(function (app) {
var request,
appName = app.manifest.name;
for (request in app.manifest.permission) {
// Let's get the current permission for each permission request by the application
var p = permission.get(request, app.manifestUrl, app.origine, false);
console.log(
appName +
' asked for "' +
request +
'" permission, which is "' +
p +
'"',
);
}
});
};
è¨å®æ¬é
åªè¦ä½¿ç¨ PermissionSettings.set() å½å¼å³å¯è¨å®æ¬éãå¯è½çæ¸å¼åè get å½å¼æååçç¸åã
åè¨»ï¼æ ¹æ Apps æ¬éçä¸åï¼æäºå¯è½çºé±æ§ (Implicit) æ¬éãè¥å çºæç¨®çç±ï¼Apps åè©¦å°æ¬éè®æ´çºé±æ§æ¬éï¼å°±æç¢çé¯èª¤ãçºäºé¿å
é種é¯èª¤ï¼å¯éé PermissionSettings.isExplicit() å½å¼èæª¢æ¥æ¯å¦çºé¡¯æ§æ¬éã
// Let's check all installed apps
var apps = navigator.mozApps.mgmt.getAll();
apps.onsuccess = function () {
var permission = navigator.mozPermissionSettings;
// Let's grant the permission of each app
apps.result.forEach(function (app) {
var request, appName = app.manifest.name;
for (request in app.manifest.permission) {
// If the permission is not explicit
if (!permission.isExplicit(request, app.manifestUrl, app.origine, false) {
// Let's ask the user for all permissions requested by the application
permission.set(request, app.manifestUrl, app.origine, false);
}
}
});
}
è¦æ ¼
ä¸å±¬æ¼ä»»ä½è¦æ ¼ã