å®å ¨ä¸ä¸æ: æ¤é¡¹åè½ä» å¨ä¸äºæ¯æçæµè§å¨çå®å ¨ä¸ä¸æï¼HTTPSï¼ä¸å¯ç¨ã
å®éªæ§: è¿æ¯ä¸é¡¹å®éªæ§ææ¯
å¨å°å
¶ç¨äºç产ä¹åï¼è¯·ä»ç»æ£æ¥æµè§å¨å
¼å®¹æ§è¡¨æ ¼ã
éæ å: è¯¥ç¹æ§å°æªæ ååãæä»¬ä¸å»ºè®®å¨ç产ç¯å¢ä¸ä½¿ç¨éæ åç¹æ§ï¼å 为å®ä»¬å¨æµè§å¨ä¸çæ¯ææéï¼ä¸å¯è½åçååæè¢«ç§»é¤ãä¸è¿ï¼å¨æ²¡ææ åé项çç¹å®æ åµä¸ï¼å®ä»¬å¯ä»¥ä½ä¸ºåéçæ¿ä»£æ¹æ¡ã
æä»¶ç³»ç» API ç FileSystemObserver
æ¥å£æä¾äºä¸ç§å¯ä»¥è§å¯ç¨æ·å¯è§å¯çæä»¶ç³»ç»åæºç§ææä»¶ç³»ç»ï¼OPFSï¼çååçæºå¶ãè¿æå³ç Web åºç¨ç¨åºæ é轮询æä»¶ç³»ç»æ¥æ¥æ¾æä»¶ææä»¶å¤¹ç»æçæ´æ¹ï¼ä»èé¿å
èæ¶åæµªè´¹èµæºã
FileSystemObserver()
å®éªæ§ éæ å
å建ä¸ä¸ªæ°ç FileSystemObserver
对象å®ä¾ã
disconnect()
å®éªæ§ éæ å
忢è§å¯æä»¶ç³»ç»ã
observe()
å®éªæ§ éæ å
å¼å§è§å¯ç»å®æä»¶æç®å½çååã
夿³¨ï¼ æå ³å®æ´çå·¥ä½ç¤ºä¾ï¼è¯·æ¥çæä»¶ç³»ç»è§å¯å¨ç¤ºä¾ï¼æºä»£ç ï¼ã
åå§åFileSystemObserver
å¨å¼å§è§å¯æä»¶æç®å½æ´æ¹ä¹åï¼ä½ éè¦åå§åä¸ä¸ª FileSystemObserver
æ¥å¤çè¿äºè§å¯ç»æãè¿å¯ä»¥éè¿ FileSystemObserver()
æé 彿°æ¥å®æï¼è¯¥æé 彿°æ¥åä¸ä¸ªåè°å½æ°ä½ä¸ºåæ°ï¼
const observer = new FileSystemObserver(callback);
ä½ å¯ä»¥æå®åè°å½æ°ä¸»ä½ï¼ä»¥ä»»ä½ä½ æ³è¦çæ¹å¼è¿ååå¤çæä»¶æ´æ¹è§å¯ç»æï¼
const callback = (records, observer) => {
for (const record of records) {
console.log("æ£æµå°çååï¼", record);
const reportContent = `è§å¯å°çåæ´ä¸º ${record.changedHandle.kind} ${record.changedHandle.name}ãç±»åï¼${record.type}ã`;
sendReport(reportContent); // æç§ç¨æ·å®ä¹çæ¥å彿°
}
observer.disconnect();
};
è§å¯æä»¶æç®å½
䏿¦ FileSystemObserver
å®ä¾å¯ç¨ï¼ä½ å°±å¯ä»¥éè¿è°ç¨ FileSystemObserver.observe()
æ¹æ³å¼å§è§å¯æä»¶ç³»ç»æ¡ç®çååã
ä½ å¯ä»¥éè¿å observe()
ä¼ å
¥ FileSystemFileHandle
æ FileSystemDirectoryHandle
æ¥è§å¯ç¨æ·å¯è§å¯æä»¶ç³»ç»ææºç§ææä»¶ç³»ç»ï¼OPFSï¼ä¸çæä»¶æç®å½ãä¾å¦ï¼å½è¦æ±ç¨æ·ä½¿ç¨ Window.showSaveFilePicker()
æ Window.showDirectoryPicker()
éæ©æä»¶æç®å½æ¶ï¼å¯ä»¥è¿åè¿äºå¯¹è±¡çå®ä¾ï¼
// è§å¯æä»¶
async function observeFile() {
const fileHandle = await window.showSaveFilePicker();
await observer.observe(fileHandle);
}
// è§å¯ç®å½
async function observeDirectory() {
const directoryHandle = await window.showDirectoryPicker();
await observer.observe(directoryHandle);
}
ä½ è¿å¯ä»¥éè¿å° FileSystemSyncAccessHandle
ä¼ éç» observe()
æ¥è§å¯ OPFS çååï¼
// è§å¯ OPFS æä»¶ç³»ç»æ¡ç®
async function observeOPFSFile() {
const root = await navigator.storage.getDirectory();
const draftHandle = await root.getFileHandle("draft.txt", { create: true });
const syncHandle = await draftHandle.createSyncAccessHandle();
await observer.observe(syncHandle);
}
忢è§å¯æä»¶ç³»ç»
å½ä½ æ³è¦åæ¢è§å¯æä»¶ç³»ç»æ¡ç®çååæ¶ï¼å¯ä»¥è°ç¨ FileSystemObserver.disconnect()
ï¼
ç®åä¸å±äºä»»ä½è§èãç¸å ³è§è PR 请åé https://github.com/whatwg/fs/pull/165ã
æµè§å¨å ¼å®¹æ§ åè§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