בקשת מידע | לכל בעלי התוספים שיש להם אפשרות גם לדברים ברשת
-
@נתנאל_26 פתחת בפרסום ולא בדיונים משום מה...
בבקשה אם יש לך מדריך קצר אשמח אין לי זמן וטוקנים לשרוף על ניסוי וטעיה של קלוד ...
כמו כן @י.-פל. האם ניתן להגדיר שזה יהיה דו מצבי, שלא יעלם במצב מנותק?המשימה: בתוסף אוצריא שלי, פעולות שדורשות אינטרנט צריכות להינעל כשאין חיבור.
רקע שאינך יכול לגלות לבד — קבל אותו כנתון, אל תחפש ואל תנחש
- התוסף רץ ב-WebView. ה-API היחיד הוא
Otzaria.call(method, payload),
שמחזיר{success, data, error}. - ב-API של אוצריא אין
isOnline, איןgetNetworkStatus, ואין אירוע
חיבור. אל תקרא לכאלה — הם לא קיימים. navigator.onLineואירועיonline/offlineעובדים רגיל.Otzaria.call('network.fetch', {url, method, headers, body})קיים, אבל
דורש"network": {"enabled": true}במניפסט + אישור המשתמש. אין לו
timeout מצד אוצריא.https://otzaria.orgכבר מאושר ברשימת ההיתר של אוצריא.
כלל החלטה — בצע בעצמך, אל תשאל אותי
פתח את manifest.json:
- אין בו
"network": {"enabled": true}-> יישם גרסה א' בלבד. - יש בו -> יישם גרסה א' + התוספת של ב'.
שלב 1 (בשתי הגרסאות): סמן את הכפתורים
הוסף
data-requires-netלכל אלמנט HTML שהפעולה שלו דורשת אינטרנט
(פתיחת אתר, הורדה, קריאה ל-API). אל תסמן שום דבר אחר.גרסה א' — הקוד. הוסף לקובץ ה-JS הראשי
let isOnline = navigator.onLine; function applyOnlineState() { document.querySelectorAll('[data-requires-net]').forEach((el) => { el.disabled = !isOnline; el.title = isOnline ? '' : 'הפעולה דורשת חיבור לאינטרנט'; }); } window.addEventListener('online', () => { isOnline = true; applyOnlineState(); }); window.addEventListener('offline', () => { isOnline = false; applyOnlineState(); }); applyOnlineState();גרסה ב' — רק אם המניפסט כבר מצהיר על רשת. הוסף מעל, והחלף את הקריאות
async function verifyOnline() { try { const res = await Promise.race([ Otzaria.call('network.fetch', { url: 'https://otzaria.org', method: 'HEAD' }), new Promise((_, reject) => setTimeout(reject, 3000)), ]); isOnline = res.success; // כל תשובה מהשרת מוכיחה חיבור, גם 404 } catch { isOnline = false; // כולל פסילה ב-timeout: רשת בלי אינטרנט } applyOnlineState(); }navigator.onLineנשאר הערך ההתחלתי כדי שלא תהיה קפיצה בטעינה;
verifyOnline()רק מאמת אותו ברקע. קרא לו פעם אחת אחרי
applyOnlineState()הראשון, ושוב בתוך המאזין ל-onlineבמקום
isOnline = true.אסור
- להוסיף
network.enabledלמניפסט רק בשביל הבדיקה. תוסף שרק פותח קישור
דרךapp.openUrlלא צריך הרשאת רשת, והוספתה תציג למשתמש "התוסף מבקש
גישה לאינטרנט" — בדיוק ההפך מהמטרה. - לבדוק חיבור בכל render, בכל לחיצה, או ב-setInterval. בדיקה אחת בעלייה,
ואחריה רק אירועי online/offline. - להשתמש ב-
fetch()של הדפדפן לבדיקה — ה-origin הוא file:// והבקשה
תיחסם ב-CORS. - ליצור קבצים חדשים, לכתוב README או קובץ סיכום, או לגעת בלוגיקה אחרת.
בסיום
מסור לי שורה אחת לכל אלמנט שסימנת
data-requires-net, ותו לא. - התוסף רץ ב-WebView. ה-API היחיד הוא
-
@י.-פל. כדאי להוסיף API בתוכנה שמזהה האם התוכנה מוגדרת על מצב 'מנותק'.
ככה נחסוך את הקריאת רשת הזו. -
@י.-פל. כדאי להוסיף API בתוכנה שמזהה האם התוכנה מוגדרת על מצב 'מנותק'.
ככה נחסוך את הקריאת רשת הזו. -
@נתנאל_26 פתחת בפרסום ולא בדיונים משום מה...
בבקשה אם יש לך מדריך קצר אשמח אין לי זמן וטוקנים לשרוף על ניסוי וטעיה של קלוד ...
כמו כן @י.-פל. האם ניתן להגדיר שזה יהיה דו מצבי, שלא יעלם במצב מנותק?המשימה: בתוסף אוצריא שלי, פעולות שדורשות אינטרנט צריכות להינעל כשאין חיבור.
רקע שאינך יכול לגלות לבד — קבל אותו כנתון, אל תחפש ואל תנחש
- התוסף רץ ב-WebView. ה-API היחיד הוא
Otzaria.call(method, payload),
שמחזיר{success, data, error}. - ב-API של אוצריא אין
isOnline, איןgetNetworkStatus, ואין אירוע
חיבור. אל תקרא לכאלה — הם לא קיימים. navigator.onLineואירועיonline/offlineעובדים רגיל.Otzaria.call('network.fetch', {url, method, headers, body})קיים, אבל
דורש"network": {"enabled": true}במניפסט + אישור המשתמש. אין לו
timeout מצד אוצריא.https://otzaria.orgכבר מאושר ברשימת ההיתר של אוצריא.
כלל החלטה — בצע בעצמך, אל תשאל אותי
פתח את manifest.json:
- אין בו
"network": {"enabled": true}-> יישם גרסה א' בלבד. - יש בו -> יישם גרסה א' + התוספת של ב'.
שלב 1 (בשתי הגרסאות): סמן את הכפתורים
הוסף
data-requires-netלכל אלמנט HTML שהפעולה שלו דורשת אינטרנט
(פתיחת אתר, הורדה, קריאה ל-API). אל תסמן שום דבר אחר.גרסה א' — הקוד. הוסף לקובץ ה-JS הראשי
let isOnline = navigator.onLine; function applyOnlineState() { document.querySelectorAll('[data-requires-net]').forEach((el) => { el.disabled = !isOnline; el.title = isOnline ? '' : 'הפעולה דורשת חיבור לאינטרנט'; }); } window.addEventListener('online', () => { isOnline = true; applyOnlineState(); }); window.addEventListener('offline', () => { isOnline = false; applyOnlineState(); }); applyOnlineState();גרסה ב' — רק אם המניפסט כבר מצהיר על רשת. הוסף מעל, והחלף את הקריאות
async function verifyOnline() { try { const res = await Promise.race([ Otzaria.call('network.fetch', { url: 'https://otzaria.org', method: 'HEAD' }), new Promise((_, reject) => setTimeout(reject, 3000)), ]); isOnline = res.success; // כל תשובה מהשרת מוכיחה חיבור, גם 404 } catch { isOnline = false; // כולל פסילה ב-timeout: רשת בלי אינטרנט } applyOnlineState(); }navigator.onLineנשאר הערך ההתחלתי כדי שלא תהיה קפיצה בטעינה;
verifyOnline()רק מאמת אותו ברקע. קרא לו פעם אחת אחרי
applyOnlineState()הראשון, ושוב בתוך המאזין ל-onlineבמקום
isOnline = true.אסור
- להוסיף
network.enabledלמניפסט רק בשביל הבדיקה. תוסף שרק פותח קישור
דרךapp.openUrlלא צריך הרשאת רשת, והוספתה תציג למשתמש "התוסף מבקש
גישה לאינטרנט" — בדיוק ההפך מהמטרה. - לבדוק חיבור בכל render, בכל לחיצה, או ב-setInterval. בדיקה אחת בעלייה,
ואחריה רק אירועי online/offline. - להשתמש ב-
fetch()של הדפדפן לבדיקה — ה-origin הוא file:// והבקשה
תיחסם ב-CORS. - ליצור קבצים חדשים, לכתוב README או קובץ סיכום, או לגעת בלוגיקה אחרת.
בסיום
מסור לי שורה אחת לכל אלמנט שסימנת
data-requires-net, ותו לא. - התוסף רץ ב-WebView. ה-API היחיד הוא
-
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות