Document: requestStorageAccess() ã¡ã½ãã
Baseline
åºãå©ç¨å¯è½
*
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2023å¹´12æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
* ãã®æ©è½ã®ä¸é¨ã¯ã対å¿ã¬ãã«ãç°ãªãå ´åãããã¾ãã
requestStorageAccess() 㯠Document ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®ã¡ã½ããã§ããµã¼ããã¼ãã£ã³ã³ããã¹ãï¼ã¤ã¾ã <iframe> ã«åãè¾¼ã¾ãããã®ï¼ã«èªã¿è¾¼ã¾ããã³ã³ãã³ããããµã¼ããã¼ãã£ã¯ããã¼ã¨åé¢ããã¦ããªãç¶æ
ã¸ã®ã¢ã¯ã»ã¹ããªã¯ã¨ã¹ãã§ããããã«ãªãã¾ããããã¯ãæ¢å®ã§ã¯ãã©ã¤ãã·ã¼ãåä¸ãããããã«ï¼ä¾ãã°ããã©ããã³ã°ãé²ãããã«ï¼ãµã¼ããã¼ãã£ã®åé¢ããã¦ããªãã¯ããã¼ã¸ã®ã¢ã¯ã»ã¹ããããã¯ãã¦ããã¦ã¼ã¶ã¼ã¨ã¼ã¸ã§ã³ãã«é¢é£ãã¦ãããã¹ãã¬ã¼ã¸ã¢ã¯ã»ã¹ API ã®ä¸é¨ã§ãã
ãµã¼ããã¼ãã£ã¯ããã¼ã«ã¢ã¯ã»ã¹ããæ¨©éãæ¢ã«ä¸ãããã¦ãããã©ããã調ã¹ãã«ã¯ãPermissions.query() ãå¼ã³åºãã¦ãç¹æ§å "storage-access"ãæå®ãã¦ãã ããã
ã¡ã¢:
ãã®æ©è½ã®ä½¿ç¨ã¯ããµã¼ãã¼ã«è¨å®ãã storage-access 権éããªã·ã¼ã«ãã£ã¦ãããã¯ãããå ´åãããã¾ããããã«ãææ¸ã¯ã許å¯ãªã¹ãããããã¯ãªã¹ãã端æ«ä¸ã®åé¡ãã¦ã¼ã¶ã¼è¨å®ãã¯ãªãã¯ã¸ã£ããã³ã°é²æ¢ã®çµé¨åãã¾ãã¯ã¦ã¼ã¶ã¼ã«æç¤ºçãªè¨±å¯ãæ±ããããã³ããã®ãããªããã©ã¦ã¶ã¼åºæã®è¿½å ã®ãã§ãã¯ã«åæ ¼ããå¿
è¦ãããã¾ãã
æ§æ
requestStorageAccess()
requestStorageAccess(types)
弿°
typesçç¥å¯-
åé¢ããã¦ããªãã©ã®ç¶æ ã«ã¢ã¯ã»ã¹ããããå¶å¾¡ããããããã£ãæ ¼ç´ãããªãã¸ã§ã¯ãã§ããæå®ããªãå ´åãããããã£ã®æ¢å®å¤ã¯
falseã§ããå©ç¨ã§ããããããã£ã¯ä»¥ä¸ã®ã¨ããã§ããall-
è«çå¤ã§ãå©ç¨å¯è½ãªãã¹ã¦ã®åé¢ããã¦ããªãç¶æ ãã¢ã¯ã»ã¹å¯è½ã«ãã¹ããã©ããã示ãã¾ãã
-
è«çå¤ã§ããµã¼ããã¼ãã£ã¯ããã¼ãã¢ã¯ã»ã¹å¯è½ã«ãã¹ããã©ããã示ãã¾ãã
sessionStorage-
è«çå¤ã§ã
StorageAccessHandle.sessionStorageãã¢ã¯ã»ã¹å¯è½ã«ãã¹ããã©ããã示ãã¾ãã localStorage-
è«çå¤ã§ã
StorageAccessHandle.localStorageãã¢ã¯ã»ã¹å¯è½ã«ãã¹ããã©ããã示ãã¾ãã indexedDB-
è«çå¤ã§ã
StorageAccessHandle.indexedDBãã¢ã¯ã»ã¹å¯è½ã«ãã¹ããã©ããã示ãã¾ãã locks-
è«çå¤ã§ã
StorageAccessHandle.locksãã¢ã¯ã»ã¹å¯è½ã«ãã¹ããã©ããã示ãã¾ãã caches-
è«çå¤ã§ã
StorageAccessHandle.cachesãã¢ã¯ã»ã¹å¯è½ã«ãã¹ããã©ããã示ãã¾ãã getDirectory-
è«çå¤ã§ã
StorageAccessHandle.getDirectory()ãã¢ã¯ã»ã¹å¯è½ã«ãã¹ããã©ããã示ãã¾ãã estimate-
è«çå¤ã§ã
StorageAccessHandle.estimate()ãã¢ã¯ã»ã¹å¯è½ã«ãã¹ããã©ããã示ãã¾ãã createObjectURL-
è«çå¤ã§ã
StorageAccessHandle.createObjectURL()ãã¢ã¯ã»ã¹å¯è½ã«ãã¹ããã©ããã示ãã¾ãã revokeObjectURL-
è«çå¤ã§ã
StorageAccessHandle.revokeObjectURL()ãã¢ã¯ã»ã¹å¯è½ã«ãã¹ããã©ããã示ãã¾ãã BroadcastChannel-
è«çå¤ã§ã
StorageAccessHandle.BroadcastChannel()ãã¢ã¯ã»ã¹å¯è½ã«ãã¹ããã©ããã示ãã¾ãã -
è«çå¤ã§ã
StorageAccessHandle.SharedWorker()ãã¢ã¯ã»ã¹å¯è½ã«ãã¹ããã©ããã示ãã¾ãã
è¿å¤
Promise ã§ããµã¼ããã¼ãã£ã¯ããã¼ã¸ã®ã¢ã¯ã»ã¹ã許å¯ããã types 弿°ãæä¾ããã¦ããªãå ´å㯠undefined ã§å±¥è¡ãããtypes 弿°ã§ãªã¯ã¨ã¹ããããåé¢ããã¦ããªãç¶æ
ã¸ã®ã¢ã¯ã»ã¹ãæä¾ãããå ´å㯠StorageAccessHandle ã§å±¥è¡ãããã¢ã¯ã»ã¹ãæå¦ãããå ´åã¯æå¦ããã¾ãã
requestStorageAccess() ã®ãªã¯ã¨ã¹ãã¯ãåãè¾¼ã¿ã³ã³ãã³ããã¿ãããã¯ãªãã¯ãªã©ã®ã¦ã¼ã¶ã¼ã¸ã§ã¹ãã£ã¼ãå¦çä¸ï¼åçºã®æ´»æ§åï¼ã§ãªãéããã¾ãã¯ãã®æ¨©éãååãã§ã«ä»ä¸ããã¦ããªãéããèªåçã«æå¦ããã¾ãããã®æ¨©éãååä»ä¸ããã¦ããªãå ´åã¯ãã¦ã¼ã¶ã¼ã¸ã§ã¹ãã£ã¼ã«åºã¥ãã¤ãã³ããã³ãã©ã¼å
ã§å®è¡ããå¿
è¦ãããã¾ããã¦ã¼ã¶ã¼ã¸ã§ã¹ãã£ã¼ã®åä½ã¯ããããã¹ã®ç¶æ
ã«ä¾åãã¾ãã
- ãããã¹ã解決ããï¼æ¨©éã許å¯ãããå ´åãªã©ï¼ãã¦ã¼ã¶ã¼ã®ã¸ã§ã¹ãã£ã¼ãæ¶è²»ããã¦ããªãå ´åãã¹ã¯ãªããã¯ã¦ã¼ã¶ã¼ã®ã¸ã§ã¹ãã£ã¼ãå¿ è¦ã¨ãããã¹ã¦ã® API ãå¼ã³åºããã¨ãã§ãã¾ãã
- ãããã¹ãæå¦ããï¼æ¨©éã許å¯ãããªãã£ãå ´åãªã©ï¼ãã¦ã¼ã¶ã¼ã®ã¸ã§ã¹ãã£ã¼ãæ¶è²»ããã¦ããå ´åãã¹ã¯ãªããã¯ã¸ã§ã¹ãã£ã¼ãå¿
è¦ã¨ãã API ãå¼ã³åºããã¨ãã§ãã¾ãããããã¯æªç¨ã«å¯¾ããæå³çãªä¿è·ã§ãããã¦ã¼ã¶ã¼ãããã³ãããåãå
¥ããã¾ã§ãã¹ã¯ãªããã
requestStorageAccess()ãã«ã¼ãã§å¼ã³åºãã®ãé²ãããã§ãã
ä¾å¤
InvalidStateErrorDOMException-
次ã®ãããªå ´åã«çºçãã¾ãã
- ç¾å¨ã®
Documentãã¾ã ã¢ã¯ãã£ãã§ã¯ãªãå ´åã types弿°ãä¸ãããã¦ããããã¹ã¦ã®ããããã£ãfalseã§ããå ´åã
- ç¾å¨ã®
NotAllowedErrorDOMException-
次ã®ãããªå ´åã«çºçãã¾ãã
- ææ¸ã®ã¦ã£ã³ãã¦ãä¿è·ãããã³ã³ããã¹ãã§ã¯ãªãå ´åã
storage-access権éããªã·ã¼ã«ãã£ã¦ã使ç¨ããããã¯ãããå ´åã- ãã®ææ¸ã¾ãã¯æä¸ä½ã®ææ¸ã®ãªãªã¸ã³ã
nullã§ããå ´åã - åãè¾¼ã¾ãã
<iframe>ããµã³ãããã¯ã¹åããã¦ãããallow-storage-access-by-user-activationãã¼ã¯ã³ãè¨å®ããã¦ããªãå ´åã - ã¦ã¼ã¶ã¼ã¨ã¼ã¸ã§ã³ãã®æ¨©éãªã¯ã¨ã¹ãã«ããããã® API ã®ä½¿ç¨ãæå¦ãããå ´åã
ä¾
document.requestStorageAccess().then(
() => {
console.log("cookie access granted");
},
() => {
console.log("cookie access denied");
},
);
document.requestStorageAccess({ localStorage: true }).then(
(handle) => {
console.log("localStorage access granted");
handle.localStorage.setItem("foo", "bar");
},
() => {
console.log("localStorage access denied");
},
);
ã¡ã¢: ããå®å ¨ãªä¾ã«ã¤ãã¦ã¯ãã¹ãã¬ã¼ã¸ã¢ã¯ã»ã¹ API ã®ä½¿ç¨ãåç §ãã¦ãã ããã
仿§æ¸
| 仿§æ¸ |
|---|
| The Storage Access API > # dom-document-requeststorageaccess > |