دیکشنری سفارشی برای غلطیاب مرورگر
خلاصهٔ کاملتر
تو این مقاله اومده که اگه روی یه ناحیهٔ ویرایشپذیر اتریبیوت spellcheck=true بذاری، مرورگر کلمههای غلط رو علامت میزنه و با CSS هم میتونی استایلشون بدی. چیزی که کمتر کسی میدونه اینه که این قابلیت عمداً مبهم طراحی شده تا جلوی fingerprinting (یعنی شناسایی یکتای کاربر از روی ویژگیهای دستگاهش) رو بگیره. برای همین هر سیستمعامل، هر مرورگر و حتی هر پروفایل مرورگر ممکنه کلمههای متفاوتی رو غلط بگیره.
مشکل اینجاست که سایتها معمولاً ورودی تخصصی میگیرن: ریاضی، شیمی، نجوم، حقوق، بورس، گزارشهای پزشکی، انجمنهای وب و حتی سایتهای فنفیکشن. کلمههای رایج این حوزهها تو دیکشنری عمومی نیستن، پس اونقدر هشدار اشتباه میگیری که غلطهای واقعی رو دیگه نمیبینی. نویسنده میگه بعضی وقتها این قابلیت بیشتر از اینکه کمک باشه، مزاحمه.
راهحل پیشنهادی یه API خیلی سادهست به اسم SpellCheck Custom Dictionary: یه document.spellCheckCustomDictionary با دقیقاً دو متد addWords(listOfWords) و removeWords(listOfWords) که آرایهای از رشتهها میگیرن. کلمهها میرن تو یه Set داخلی که قبل از بقیهٔ دیکشنریها چک میشه، و فقط تا وقتی اون document زندهست اعتبار دارن. نه روی صفحههای دیگه اثر میذاره، نه روی دیکشنری پروفایل یا سیستمعامل.
این پیادهسازی کار Igalia با پشتیبانی مالی Bloomberg Tech بوده و الان تو Chrome Canary پشت فلگ experimental web platform features در دسترسه، با برنامهٔ عرضه در ۸ سپتامبر ۲۰۲۶ پشت همون فلگ. چون ورودیش فقط یه آرایهست، میتونی یه فایل JSON بگیری و مستقیم بدیش به addWords، البته بهتره این کارو به شکل progressive enhancement انجام بدی نه همون اول کار.
نویسنده میگه شکل declarative این API خیلی ایدهآلتره ولی هنوز به اونجا نرسیدن، برای همین یه کتابخونهٔ خیلی کوچیک نوشته که نسخهٔ اعلانی رو شبیهسازی میکنه: فایل لودر رو به صفحه اضافه میکنی و بعد با تگ link و اتریبیوت data-spellcheck-dictionary به فایلهای JSON کلمهها اشاره میکنی. نسخهٔ پایه فقط ۴۴۱ بایت با Brotli حجم داره ولی خامه؛ نسخهٔ complete که برداشتن لینک و عوض شدن href رو هم هندل میکنه ۷۷۰ بایته.
<link href="terms/domain-terms.json" data-spellcheck-dictionary>
<link href="terms/stocks.json" data-spellcheck-dictionary>نکات کلیدی:
- API پیشنهادی فقط دو متد داره: addWords و removeWords روی document.spellCheckCustomDictionary
- کلمههای اضافهشده فقط تا عمر همون document اعتبار دارن و به دیکشنری مرورگر یا سیستمعامل دست نمیزنن
- پیادهسازی رو Igalia با پول Bloomberg Tech انجام داده و ۸ سپتامبر ۲۰۲۶ پشت فلگ آزمایشی کروم میآد
- ابهام عمدی نتیجهٔ غلطیاب برای جلوگیری از fingerprinting طراحی شده، برای همین خروجی هر مرورگر فرق داره
- کتابخونهٔ اعلانی نویسنده ۴۴۱ بایت (نسخهٔ کامل ۷۷۰ بایت) با Brotli حجم داره




