æ¬ææä¾äºä½¿ç¨æé APIââ宿ä¾äºä¸ç§ç¨äºæ¥è¯¢å½åä¸ä¸æç API æéææç¶æçç¼ç¨æ¹å¼ââçåºæ¬æåã
ç³è¯·æéé¢ä¸´çå°å¢Web ä¸çæéæ¯ä»¤äººåæ¶å´ä¸å¾ä¸é¢å¯¹çé®é¢ï¼ä½å¯¹äºå¼åäººåæ¥è¯´ï¼å¤çå®ä»¬å¹¶ä¸æ¯ä¸ä»¶æè¶£çäºã
ç±äºåå²åå ï¼ä¸åç API 使ç¨åèªä¸åçæ¹å¼æ¥å¤çèªå·±çæéââä¾å¦ï¼Notification API å 许æ¾å¼å°æ£æ¥æéç¶æåç³è¯·æéï¼ç¶èï¼Geolocation API å´ä¸è½ã
æé API æä¾äºä¸ç³»åå·¥å
·æ¥è®©å¼åè
卿鿹é¢å®ç°æ´å¥½çç¨æ·ä½éªãå
·ä½æ¥è¯´ï¼å¼å人åå¯ä»¥ä½¿ç¨ Permissions.query()
æ¥æ£æ¥å¨å½åä¸ä¸æä¸ä½¿ç¨ç¹å® API çæéæ¯å·²æäºãå·²æç»è¿æ¯éè¦éè¿æç¤ºè·å¾ç¹å®ç¨æ·æéãå¨ä¸»çº¿ç¨ä¸æ¥è¯¢æéæ¯è¢«å¹¿æ³æ¯æçï¼å¨ Worker ä¸ä¹æ¯å¦æ¤ï¼ä½æä¸ä¸ªææ¾çä¾å¤ï¼ã
è®¸å¤ API ç°å·²å¯ç¨æéæ¥è¯¢ï¼ä¾å¦ Clipboard APIãNotifications APIãPush API å Web MIDI APIãAPI æ¦è§ä¸æä¾äºè®¸å¤æéå¯ç¨ç API å表ï¼ä½ å¯ä»¥å¨æ¤å¤çå ¼å®¹æ§è¡¨ä¸äºè§£æµè§å¨æ¯ææ åµã
Permissions
è¿æå
¶ä»æ¹æ³å¯ç¨äºä¸é¨è¯·æ±ä½¿ç¨ API çæé忤éæéï¼ä½è¿äºæ¹æ³å·²è¢«å¼ç¨ï¼éæ åä¸ä¸è¢«å¹¿æ³æ¯æï¼ã
卿¬æä¸ï¼æä»¬æä¸ä¸ªç®åç demo å«ä½ Location Finder. å®ä½¿ç¨ Geolocation è·åç¨æ·çå½åä½ç½®ï¼å¹¶æ æ³¨å¨ Google å°å¾ä¸ï¼
ä½ å¯ä»¥å¨çº¿è¿è¡ç¤ºä¾ï¼æå¨ Github æ¥çæºä»£ç ã大é¨å代ç é½å¾ç®åä¸å¸¸è§ââæä»¥æ¥ä¸æ¥æä»¬ä¼éç¹å ³æ³¨åæé API æå ³ç代ç ï¼å¦æä½ æ³å¦ä¹ å ¶ä»é¨åï¼è¯·èªè¡é 读ã
è®¿é®æé APIæµè§å¨ç°å·²å
å« Navigator.permissions
屿§ä½¿å¼åè
å¯ä»¥è®¿é®å
¨å±ç Permissions
对象ãè¿ä¸ªå¯¹è±¡æç»å°å
å«ç¨æ¥æ¥è¯¢ãç³è¯·åæ¤éæéçæ¹æ³ï¼å°½ç®¡ï¼ç®ååªæ Permissions.query()
ï¼æä»¬æ¥ä¸æ¥ä¼è®¨è®ºå®ã
卿们çä¾åä¸ï¼æéåè½ä½¿ç¨ä¸ä¸ªå½æ°æ¥å¤çââhandlePermission()
ãå®å¼å§äºä½¿ç¨ Permissions.query()
æ¥è¯¢æéç¶æãæ ¹æ® Promise å
ç°åè¿åç PermissionStatus
对象ç state
屿§ï¼ååºä¸åçå¤çï¼
"granted"
âEnable Geolocationâæé®è¢«éèæäºï¼å 为 Geolocation å·²ç»è¢«å 许äºï¼ä¸éè¦è¿ä¸ªæé®äºã
"prompt"
éèâEnable Geolocationâæé®ï¼å ä¸ºç¨æ·ä¼è¢«ï¼æµè§å¨ï¼å¼å¯¼ææ Geolocation æéï¼æä»¥å®ä¸éè¦äºãæ¥ä¸æ¥ Geolocation.getCurrentPosition()
彿°ä¼è¿è¡ï¼å®ä¼å¼å¯¼ç¨æ·ææï¼å¦æç¨æ·ææäºï¼å®ä¼ç»§ç»æ§è¡ revealPosition()
彿°ï¼ä¼æ¾ç¤ºå°å¾ï¼ï¼å¦æç¨æ·æç»äºï¼ positionDenied()
彿°ä¼è¢«æ§è¡ï¼è¿ä¼è®©âEnable Geolocationâæé®æ¾ç¤ºåºæ¥ï¼ã
"denied"
âEnable Geolocationâæé®ä¼æ¾ç¤ºï¼è¿æ®µä»£ç ä¹éè¦æ¾å¨è¿éï¼ä»¥é²å¨é¡µé¢é¦æ¬¡å è½½æ¶ï¼è¿ä¸ªæºçæéç¶æå°±å·²ç»è¢«è®¾ç½®ä¸ºæç»äºï¼ã
function handlePermission() {
navigator.permissions.query({ name: "geolocation" }).then((result) => {
if (result.state === "granted") {
report(result.state);
geoBtn.style.display = "none";
} else if (result.state === "prompt") {
report(result.state);
geoBtn.style.display = "none";
navigator.geolocation.getCurrentPosition(
revealPosition,
positionDenied,
geoSettings,
);
} else if (result.state === "denied") {
report(result.state);
geoBtn.style.display = "inline";
}
result.addEventListener("change", () => {
report(result.state);
});
});
}
function report(state) {
console.log(`Permission ${state}`);
}
handlePermission();
æéæè¿°ç¬¦
Permissions.query()
æ¹æ³æ¥åä¸ä¸ª PermissionDescriptor
åå
¸ä½ä¸ºåæ°ââå®å
å«ä½ æå
´è¶£ç API çåç§°ãä¸äº API ææ´å¤æç PermissionDescriptor
ç»æï¼è¯¥ç»æç»§æ¿èªé»è®¤ç PermissionDescriptor
ï¼å
嫿´å¤é¢å¤çä¿¡æ¯ãä¾å¦ï¼PushPermissionDescriptor
ä¹å
å«ä¸ä¸ªå¸å°å¼æå® userVisibleOnly
æ¯ true
è¿æ¯ false
ã
ä½ ä¼æ³¨æå°ï¼å¨ä¸é¢ç代ç ä¸ï¼å¨ PermissionStatus
å¯¹è±¡ä¸æä¸ä¸ª onchange
äºä»¶åè°ââè¿è®©æä»¬å¯ä»¥å¯¹æå
´è¶£ç API çç¶æååååºååºãç®åï¼æä»¬åªæ¯ä¸æ¥äºç¶æçååã
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4