Highlight web keywords

Custom keyword highlighting on web pages including dynamic loading when scrolling

Install this script?
Author's suggested script

You may also like Greasyfork Utility Toolkit.

Install this script
// ==UserScript==
// @name              网页关键词高亮显示
// @name:af           Merk webwoorde op web
// @name:am           የድር ቁልፍ ቃላት ያጉሉ
// @name:ar           تمييز الكلمات الرئيسية على الويب
// @name:az           Veb açar sözləri vurğulayın
// @name:be           Вылучыце вэб -ключавыя словы
// @name:bem          Langululeni amashiwi ayacindama aya pa webu
// @name:bg           Маркирайте уеб ключовите думи
// @name:bn           ওয়েব কীওয়ার্ডগুলি হাইলাইট করুন
// @name:bo           དྲ་བའི་གཙོ་ཚིག་གསལ་འབྱེད་བྱེད་པ།
// @name:bs           Označite web ključne riječi
// @name:ca           Ressalteu les paraules clau web
// @name:ceb          I-highlight ang mga Keyword sa Web
// @name:ckb          وشە سەرەکییەکانی وێب هێما بکە
// @name:cs           Zvýrazněte webová slova
// @name:cy           Tynnu sylw at eiriau allweddol gwe
// @name:da           Fremhæv webnøgleord
// @name:de           Markieren Sie Web -Keywords hervor
// @name:dv           ވެބް ކީވޯޑްސް ހައިލައިޓް ކުރައްވާ
// @name:dz           ཝེབ་ལྡེ་མིག་ཚུ་ གཙོ་བོར་བཏོན།
// @name:el           Επισημάνετε τις λέξεις -κλειδιά ιστού
// @name:en           Highlight web keywords
// @name:eo           Emfazu retajn ŝlosilvortojn
// @name:es           Resaltar las palabras clave web
// @name:et           Tõstke esile veebi märksõnad
// @name:eu           Nabarmendu web gako-hitzak
// @name:fa           کلمات کلیدی وب را برجسته کنید
// @name:fi           Korosta Web -avainsanat
// @name:fo           Varpa ljós á vev lyklaorð
// @name:fr           Mettre en surbrillance les mots clés Web
// @name:gd           Comharraich prìomh fhaclan lìn
// @name:gl           Resalte as palabras clave web
// @name:gu           હાઇલાઇટ વેબ કીવર્ડ્સ
// @name:haw          Kaʻi no nā hua’ōlelo pūnaewele
// @name:he           הדגש מילות מפתח באינטרנט
// @name:hi           वेब कीवर्ड हाइलाइट करें
// @name:hr           Označite web ključne riječi
// @name:ht           Mete aksan sou mo kle entènèt
// @name:hu           Jelölje ki a webes kulcsszavakat
// @name:hy           Ներկայացրեք վեբ հիմնաբառերը
// @name:id           Sorot kata kunci web
// @name:is           Auðkenndu lykilorð á vefnum
// @name:it           Evidenzia le parole chiave Web
// @name:ja           Webキーワードを強調表示します
// @name:ka           მონიშნეთ ვებ საკვანძო სიტყვები
// @name:kk           Веб-кілт сөздерді бөлектеңіз
// @name:km           រំលេចពាក្យគន្លឹះគេហទំព័រ
// @name:kn           ವೆಬ್ ಕೀವರ್ಡ್ಗಳನ್ನು ಹೈಲೈಟ್ ಮಾಡಿ
// @name:ko           웹 키워드를 강조 표시합니다
// @name:ku           Keywordsên Web-ê ronî bikin
// @name:ky           Веб ачкыч сөздөрүн белгилөө
// @name:la           Highlight Web Keywords
// @name:lb           Highlight Web Schlësselwieder
// @name:lo           ຍົກໃຫ້ເຫັນຄໍາທີ່ໃຊ້ໃນເວັບໄຊຕ໌
// @name:lt           Pabrėžkite žiniatinklio raktinius žodžius
// @name:lv           Iezīmējiet tīmekļa atslēgvārdus
// @name:mg           Asongadino ny teny fanalahidy tranonkala
// @name:mi           Tohu kupu matua
// @name:mk           Означете ги веб -клучните зборови
// @name:ml           വെബ് കീവേഡുകൾ ഹൈലൈറ്റ് ചെയ്യുക
// @name:mn           WEBY түлхүүр үгсийг тодруул
// @name:ms           Sorot kata kunci web
// @name:mt           Jenfasizzaw il-kliem kjavi tal-web
// @name:my           ဝက်ဘ်သော့ချက်စာလုံးများကိုမီးမောင်းထိုးပြပါ
// @name:ne           हाइलाइट वेब कुञ्जी शव्दहरू
// @name:nl           Markeer websleutelwoorden
// @name:no           Uthev nøkkelord på nettet
// @name:ny           Unikani bwino pa intaneti
// @name:pa           ਵੈੱਬ ਕੀਵਰਡ ਨੂੰ ਹਾਈਲਾਈਟ ਕਰੋ
// @name:pap          Resaltá palabranan klave web
// @name:pl           Podświetl słowa kluczowe
// @name:ps           د ویب ټکي روښانه کړئ
// @name:pt           Destaque palavras -chave da web
// @name:ro           Evidențiați cuvinte cheie web
// @name:ru           Выделите веб -ключевые слова
// @name:rw           Shyira ahagaragara urubuga
// @name:sg           Zia atënë ti kota ngele na ndo ti Internet .
// @name:si           වෙබ් මූල පද ඉස්මතු කරන්න
// @name:sk           Zvýraznite webové kľúčové slová
// @name:sl           Poudarite spletne ključne besede
// @name:sm           Faailoga itulau itulau autu
// @name:sn           Simbisa Webhu Keywords
// @name:so           Muuji ereyada furaha ah ee shabakadda
// @name:sr           Означите веб кључне речи
// @name:sv           Markera webbnyckelord
// @name:sw           Onyesha maneno ya wavuti
// @name:ta           வலைச் சொற்களை முன்னிலைப்படுத்தவும்
// @name:te           వెబ్ కీలకపదాలను హైలైట్ చేయండి
// @name:tg           Калимаҳои калимаҳои веб
// @name:th           เน้นคำหลักเว็บ
// @name:ti           Web Keywords ኣጉልሕ
// @name:tk           Web açar sözlerini belläň
// @name:tn           Tlhagisa mafoko a botlhokwa a webo
// @name:to           Fakaʻofoʻofaʻia ʻi he ngaahi lea mahuʻinga ʻi he uepi .
// @name:tpi          Hailait web kiwod
// @name:tr           Web Anahtar Kelimelerini Vurgulayın
// @name:uk           Виділіть веб -ключові слова
// @name:ur           ویب کلیدی الفاظ کو اجاگر کریں
// @name:uz           Veb-kalit so’zlarni ajratib ko’rsatish
// @name:vi           Làm nổi bật các từ khóa web
// @name:xh           Chaza amagama eWebhu
// @name:yi           הויכפּונקט וועב טערמינען
// @name:zh           网页关键词高亮显示
// @name:zh-CN        网页关键词高亮显示
// @name:zh-HK        網頁關鍵詞高亮顯示
// @name:zh-MO        網頁關鍵詞高亮顯示
// @name:zh-MY        网页关键词高亮显示
// @name:zh-SG        网页关键词高亮显示
// @name:zh-TW        網頁關鍵詞高亮顯示
// @name:zu           Qokomisa amagama angukhiye wewebhu
// @description       在网页上自定义关键词突出显示包括滚动时动态加载的内容
// @description:af    Aangepaste sleutelwoorduitlig op webblaaie, insluitend dinamiese laai tydens blaai
// @description:am    በሚሸጡበት ጊዜ ተለዋዋጭ ጭነት ጭነትን ጨምሮ ድረ ገጾችን ማድመቅ ድግስ ቁልፍ ቃል
// @description:ar    تسليط الضوء على الكلمات الرئيسية المخصصة على صفحات الويب بما في ذلك التحميل الديناميكي عند التمرير
// @description:az    Xüsusi açar söz, sürüşmə zamanı dinamik yükləmə daxil olmaqla veb səhifələrdə vurğulanan
// @description:be    Спецыяльныя ключавыя словы Вылучэнне на вэб -старонках, уключаючы дынамічную загрузку пры пракручванні
// @description:bem   Icikomo icacindama icakulangisha pa mabuula ya webu ukubikapo no kutwala amaka ilyo ulepilibula
// @description:bg    Персонализирано подчертаване на ключови думи на уеб страници, включително динамично зареждане при превъртане
// @description:bn    স্ক্রোলিংয়ের সময় গতিশীল লোডিং সহ ওয়েব পৃষ্ঠাগুলিতে কাস্টম কীওয়ার্ড হাইলাইট করা
// @description:bo    དྲ་ཚིགས་ཤོག་ངོས་སྟེང་དུ་དམིགས་བསལ་གྱི་མིང་ཚིག་གསལ་པོར་བསྟན་པ།
// @description:bs    Prilagođena ključna riječ koja ističe na web stranicama, uključujući dinamičko učitavanje prilikom pomicanja
// @description:ca    PARAULA CLAU PERSONAL A PARTAMENT DE LA PERSONAL A LA PÀGINA WEB, inclosa la càrrega dinàmica quan es desplaça
// @description:ceb   Pasadya nga Keyword nga nagpasiugda sa mga panid sa web lakip ang dinamikong pagkarga sa pag-scroll
// @description:ckb   گرینگکردنی وشەی سەرەکی تایبەت لە لاپەڕەکانی وێب لەوانەش بارکردنی داینامیکی لەکاتی سکڕۆڵکردن
// @description:cs    Vlastní klíčová slova zvýraznění na webových stránkách včetně dynamického zatížení při posouvání
// @description:cy    Allweddair Custom yn tynnu sylw at dudalennau gwe gan gynnwys llwytho deinamig wrth sgrolio
// @description:da    Brugerdefineret nøgleord, der fremhæves på websider inklusive dynamisk belastning, når man ruller
// @description:de    Benutzerdefinierte Schlüsselwort auf Webseiten einschließlich dynamisches Laden beim Scrollen
// @description:dv    ސްކްރޯލް ކުރާއިރު ޑައިނަމިކް ލޯޑިންގ ހިމެނޭ ގޮތަށް ވެބް ޕޭޖްތަކުގައި ކަސްޓަމް ކީވޯޑް ހައިލައިޓް ކުރުން
// @description:dz    བཤུད་སྒྲིལ་འབད་བའི་སྐབས་ ཌའི་ནམ་མངོན་གསལ་འབད་ནི་ཚུ་རྩིས་ཏེ་ ཝེབ་ཤོག་ལེབ་ཚུ་ནང་ སྲོལ་སྒྲིག་ལྡེ་མིག་ཚིག་ཡིག་འོད་རྟགས་བཀལ་ནི།
// @description:el    Προσαρμοσμένη λέξη -κλειδί επισημάνιση σε ιστοσελίδες, συμπεριλαμβανομένης της δυναμικής φόρτωσης κατά την κύλιση
// @description:en    Custom keyword highlighting on web pages including dynamic loading when scrolling
// @description:eo    Propra ŝlosilvorto reliefiganta sur retpaĝoj inkluzive de dinamika ŝarĝo kiam rulumado
// @description:es    Destacado de palabras clave personalizadas en páginas web que incluyen la carga dinámica al desplazarse
// @description:et    Kohandatud märksõna esiletõstmine veebilehtedel, sealhulgas dünaamiline laadimine kerimisel
// @description:eu    Gako-hitza pertsonalizatua Web orrialdeetan nabarmentzen da korritze dinamikoa barne
// @description:fa    برجسته کردن کلمات کلیدی سفارشی در صفحات وب از جمله بارگیری پویا هنگام پیمایش
// @description:fi    Mukautettu avainsanan korostaminen verkkosivuilla, mukaan lukien dynaaminen lataus vieritettäessä
// @description:fo    Sersniðgivin lyklaorð varpa ljós á vevsíður íroknað dynamiska innlesing tá rulla
// @description:fr    Mots-clés personnalisés mettant en surbrillance sur les pages Web, y compris le chargement dynamique lors du défilement
// @description:gd    Pistle Keyword a ’soilleireachadh air duilleagan lìn a’ toirt a-steach Dynamic a ’luchdachadh nuair a scrolladh
// @description:gl    Palabras clave personalizadas en páxinas web incluíndo a carga dinámica ao desprazarse
// @description:gu    સ્ક્રોલિંગ કરતી વખતે ગતિશીલ લોડિંગ સહિત વેબ પૃષ્ઠો પર કસ્ટમ કીવર્ડ હાઇલાઇટિંગ
// @description:haw   Ke hoʻomau nei ka hua’ōlelo pili ma nāʻaoʻao pūnaewele me ka laweʻana i ka laweʻana i ka wā e neʻe nei
// @description:he    הדגשת מילות מפתח בהתאמה אישית בדפי אינטרנט כולל טעינה דינאמית בעת הגלילה
// @description:hi    स्क्रॉल करते समय डायनेमिक लोडिंग सहित वेब पेजों पर कस्टम कीवर्ड हाइलाइटिंग
// @description:hr    Prilagođena ključna riječ isticanje na web stranicama, uključujući dinamično učitavanje prilikom pomicanje
// @description:ht    Custom mo kle en sou paj wèb ki gen ladan loading dinamik lè defile
// @description:hu    Egyéni kulcsszó kiemelése a weboldalakon, beleértve a dinamikus betöltést a görgetéskor
// @description:hy    Հատուկ հիմնաբառեր, որոնք ընդգծում են վեբ էջերում, ներառյալ դինամիկ բեռնումը, երբ պտտվում են
// @description:id    Sorotan Kata Kunci Kustom di Halaman Web termasuk pemuatan dinamis saat menggulir
// @description:is    Sérsniðið lykilorð undirstrikar á vefsíðum þar á meðal kraftmiklum hleðslu þegar flett er
// @description:it    Evidenziazione delle parole chiave personalizzate su pagine Web incluso il caricamento dinamico durante lo scorrimento
// @description:ja    スクロール時に動的読み込みを含むWebページで強調表示されるカスタムキーワード
// @description:ka    საბაჟო საკვანძო სიტყვა, რომელიც ხაზს უსვამს ვებ - გვერდებზე, დინამიური დატვირთვის ჩათვლით
// @description:kk    Өзгертпелі кілт сөзді веб-беттерде бөлектеу, соның ішінде айналдыру кезінде динамикалық жүктемені бөлектеу
// @description:km    ការបន្លិចពាក្យគន្លឹះផ្ទាល់ខ្លួនការបន្លិចនៅលើគេហទំព័ររួមទាំងការផ្ទុកថាមវន្តនៅពេលរមូរ
// @description:kn    ಸ್ಕ್ರೋಲಿಂಗ್ ಮಾಡುವಾಗ ಡೈನಾಮಿಕ್ ಲೋಡಿಂಗ್ ಸೇರಿದಂತೆ ವೆಬ್ ಪುಟಗಳಲ್ಲಿ ಕಸ್ಟಮ್ ಕೀವರ್ಡ್ ಹೈಲೈಟ್ ಮಾಡಲಾಗುತ್ತಿದೆ
// @description:ko    스크롤 할 때 동적로드를 포함한 웹 페이지에서 사용자 정의 키워드 강조 표시
// @description:ku    Bişkojka Bişkojka Bişkojka li ser rûpelên malperê digel dema barkirina dînamîk
// @description:ky    Веб-баракчаларды басаңдатуу
// @description:la    Custom keyword highlighting in Web Paginae possidet Dynamic loading cum scrolling
// @description:lb    Benotzerdefinéiert Schlësselwuert Highlight op Web Säiten abegraff Dynamic Laden wann scrollt
// @description:lo    ຄໍາເວົ້າຂອງຄໍາຫລັກທີ່ກໍານົດເອງໃນຫນ້າເວັບຕ່າງໆລວມທັງການໂຫຼດແບບເຄື່ອນໄຫວເມື່ອເລື່ອນພາບ
// @description:lt    Individualizuotas raktinis žodis pažymėjimas tinklalapiuose, įskaitant dinaminį įkėlimą slinkti
// @description:lv    Pielāgots atslēgvārds izceļ tīmekļa lapās, ieskaitot dinamisku ielādēšanu, ritinot
// @description:mg    Ny teny fanalahidy mahazatra manasongadina ao amin’ny pejy web ao anatin’izany ny lakana mavitrika rehefa horonana
// @description:mi    Ko te tuhi kupu matua e whakaatu ana i nga whaarangi paetukutuku tae atu ki te taatai hihiri i te panuku
// @description:mk    Нагласување на сопствени клучни зборови на веб -страници, вклучувајќи динамично вчитување при движење
// @description:ml    സ്ക്രോൾ ചെയ്യുമ്പോൾ ഡൈനാമിക് ലോഡിംഗ് ഉൾപ്പെടെ വെബ് പേജുകളിൽ ഇഷ്ടാനുസൃത കീവേഡ്
// @description:mn    Гүйлгэх үед динамик ачаалах үед WEB түлхүүр үгийг тодруулж байна
// @description:ms    Kata kunci tersuai yang menyoroti laman web termasuk pemuatan dinamik semasa menatal
// @description:mt    Keyword tad-dwana li tenfasizza fuq paġni tal-web inkluż tagħbija dinamika meta tiskrollja
// @description:my    စိတ်ကြိုက်သော့ချက်စာလုံးသည် scrolling လုပ်သည့်အခါ dynamic loading အပါအ 0 င်စာမျက်နှာများပေါ်တွင်မီးမောင်းထိုးပြခြင်း
// @description:ne    स्क्रिप्टिंग जब स्क्रोल गर्दै गतिशील लोडिंग सहित वेब पृष्ठहरूमा ग्राहिक कुञ्जी शब्द हाइलाइट गर्दै
// @description:nl    Aangepaste trefwoord markeren op webpagina’s inclusief dynamisch laden bij scrollen
// @description:no    Tilpasset nøkkelord som fremhever på websider inkludert dynamisk lasting når du ruller
// @description:ny    Mawu osonyeza kuwunikira pamasamba a Web
// @description:pa    ਵੈਬ ਪੇਜਾਂ ਨੂੰ ਉਜਾਗਰ ਕਰਨਾ ਸਮੇਤ ਕਸਟਮ ਲੋਡਿੰਗ ਸਮੇਤ ਕਸਟਮਿਕ ਲੋਡਿੰਗ ਜਦੋਂ ਸਕ੍ਰੌਲ ਕਰਨਾ
// @description:pap   Palabra klave personalisá riba páginanan di web inkluyendo kargamentu dinámiko ora di scroll
// @description:pl    Niestandardowe podświetlenie słów kluczowych na stronach internetowych, w tym ładowanie dynamiczne podczas przewijania
// @description:ps    د دودیزو پا pages و په اړه د ګمرک کلیدي ټکي روښانه کول کله چې سکرول کول
// @description:pt    Destaque de palavras -chave personalizadas em páginas da web, incluindo carregamento dinâmico ao rolar
// @description:ro    Sublinierea cuvintelor cheie personalizate pe paginile web, inclusiv încărcarea dinamică la derulare
// @description:ru    Пользовательский ключевой слов выделяет на веб -страницах, включая динамическую загрузку при прокрутке
// @description:rw    Ijambo ryibanze ryerekana kurubuga rwurubuga harimo imbaraga zingirakamaro mugihe zizunguruka
// @description:sg    Molongo ti atënë so ayeke na lege ni na ndo ti alembeti ti Internet so andu nga chargement dynamique na ngoi so mo yeke sara défilement .
// @description:si    අභිරුචි යතුරුපදය අනුචලනය කිරීමේදී ගතික පැටවීම ඇතුළුව වෙබ් පිටු වල උද්දීපනය කිරීම
// @description:sk    Vlastné zvýraznenie kľúčového slova na webových stránkach vrátane dynamického načítania pri posúvaní
// @description:sl    Poudarjanje ključnih besed po meri na spletnih straneh, vključno z dinamično nalaganje pri pomikanju
// @description:sm    Coupine Keyword Faʻailoaina i Upega Tafaʻilagi i le Upega Tafaʻilagi e aofia ai le Dynamic utaina pe a fai o le tusi
// @description:sn    Tsika Keyword Inoratidza paWebhu Mapeji kusanganisira Dynamic Kuisa Paunenge Uchikanda
// @description:so    Ereyga furaha ee caadada ah ee lagu muujinayo bogagga shabakadda oo ay ku jiraan rarka firfircoon marka la wareego
// @description:sr    Истицање кључних речи на веб страницама, укључујући динамично утоваривање током померања
// @description:sv    Anpassad nyckelord som markerar på webbsidor inklusive dynamisk lastning vid rullning
// @description:sw    Kifunguo cha Kifungu cha Kuonyesha kwenye Kurasa za Wavuti pamoja na Upakiaji wa Nguvu Wakati wa Kusongesha
// @description:ta    ஸ்க்ரோலிங் செய்யும் போது டைனமிக் ஏற்றுதல் உள்ளிட்ட வலைப்பக்கங்களில் தனிப்பயன் முக்கிய சொல் சிறப்பம்சமாக
// @description:te    స్క్రోలింగ్ చేసేటప్పుడు డైనమిక్ లోడింగ్‌తో సహా వెబ్ పేజీలలో కస్టమ్ కీవర్డ్ హైలైటింగ్
// @description:tg    Нишон додани калимаҳои калидӣ дар саҳифаҳои интернетӣ, аз ҷумла сарлавҳаи инсаминӣ ҳангоми навиштан
// @description:th    คำหลักที่กำหนดเองที่เน้นบนหน้าเว็บรวมถึงการโหลดแบบไดนามิกเมื่อเลื่อน
// @description:ti    Custom Keyword Shignerting ኣብ መርበብ ሓበሬታ ገጻት ዳይናሚክ ጽዕነት ሓዊሱ ስክሮሊንግ
// @description:tk    Aýlamakda giňeldilen web sahypalaryny bellemek bilen aýratyn açar söz
// @description:tn    Go tlhomolola lefoko la botlhokwa mo ditsebeng tsa webo go akaretsa le go laisa go go fetogang fa o tsamaya
// @description:to    ’Oku faka’ilonga’i ’e he lea mahu’inga angamaheni ’i he ngaahi peesi ’o e uepi ’o kau ai ’a e uta malohi ’i he taimi ’oku scroll .
// @description:tpi   Kastom kiwod we i haelaetem long ol web pej we i inkludim daenamik lod taem yu stap skrol
// @description:tr    Kaydırma yaparken dinamik yükleme dahil web sayfalarında özel anahtar kelime vurgu
// @description:uk    Спеціальні ключові слова, що виділяють на веб -сторінках, включаючи динамічне завантаження під час прокрутки
// @description:ur    کسٹم کلیدی الفاظ کو ویب صفحات پر اجاگر کرنا بشمول متحرک لوڈنگ سمیت سکرولنگ
// @description:uz    O’tkazishda Internet sahifalarida alohida kalit so’zni, shu jumladan aylantirish paytida
// @description:vi    Từ khóa tùy chỉnh làm nổi bật trên các trang web bao gồm tải động khi cuộn
// @description:xh    Igama eliphambili eliqaqambileyo kumaphepha ewebhu abandakanya ukulayisha i-Dynamic xa uskrola
// @description:yi    מנהג קייוואָרד כיילייטינג אויף וועב זייַטלעך אַרייַנגערעכנט דינאַמיש לאָודינג ווען סקראָללינג
// @description:zh    在网页上自定义关键词突出显示包括滚动时动态加载的内容
// @description:zh-CN 在网页上自定义关键词突出显示包括滚动时动态加载的内容
// @description:zh-HK 在網頁上自定義關鍵詞突出顯示包括滾動時動態加載的內容
// @description:zh-MO 在網頁上自定義關鍵詞突出顯示包括滾動時動態加載的內容
// @description:zh-MY 在网页上自定义关键词突出显示包括滚动时动态加载的内容
// @description:zh-SG 在网页上自定义关键词突出显示包括滚动时动态加载的内容
// @description:zh-TW 在網頁上自定義關鍵詞突出顯示包括滾動時動態加載的內容
// @description:zu    Ukugqamisa igama elingukhiye kumakhasi e-Web kufaka phakathi ukulayisha okunamandla lapho usola
// @namespace         https://github.com/ChinaGodMan/UserScripts
// @version           1.0.5.26
// @author            人民的勤务员 <[email protected]> & leconte112
// @match             *://*/*
// @grant             GM_getValue
// @grant             GM_setValue
// @grant             GM_registerMenuCommand
// @grant             GM_addStyle
// @license           MIT
// @supportURL        https://github.com/ChinaGodMan/UserScripts/issues
// @homepageURL       https://github.com/ChinaGodMan/UserScripts
// @icon              data:image/png;base64,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
// @iconbak           https://github.com/ChinaGodMan/UserScripts/raw/main/docs/icon/Scripts%20Icons/icons8-mark-96.png
// ==/UserScript==

(function () {
    'use strict'

    let keywordsToMatch = GM_getValue('keywordsToMatch', [])
    let backgroundColor = GM_getValue('backgroundColor', '#FF0000')
    let textColor = GM_getValue('textColor', '#FFFF00')
    let blackBoxStyle = `background-color: ${backgroundColor} !important; color: ${textColor} !important;`

    function applyBlackBoxToElements() {
        const allTextNodes = []
        const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null, false)

        let node
        while ((node = walker.nextNode())) {
            allTextNodes.push(node)
        }

        function processBatch(batch) {
            for (let textNode of batch) {
                const text = textNode.textContent.toLowerCase()
                for (const keyword of keywordsToMatch) {
                    if (text.includes(keyword.toLowerCase())) {
                        const parentElement = textNode.parentElement
                        if (parentElement) {
                            parentElement.style.cssText += blackBoxStyle
                        }
                        break
                    }
                }
            }
        }

        const batchSize = 100  // 每次处理100个节点
        for (let i = 0; i < allTextNodes.length; i += batchSize) {
            processBatch(allTextNodes.slice(i, i + batchSize))
        }
    }

    function observeAndApplyBlackBox() {
        const observer = new MutationObserver(function (mutations) {
            const addedNodes = []
            for (const mutation of mutations) {
                if (mutation.addedNodes.length > 0) {
                    addedNodes.push(...mutation.addedNodes)
                }
            }
            if (addedNodes.length > 0) {
                setTimeout(applyBlackBoxToElements, 500)  // 延迟处理
            }
        })

        const config = { childList: true, subtree: true }
        observer.observe(document.body, config)
    }

    function handleScroll() {
        let timeout
        window.addEventListener('scroll', function () {
            clearTimeout(timeout)
            timeout = setTimeout(applyBlackBoxToElements, 200)  // 延迟处理
        })
    }

    function processPage() {
        applyBlackBoxToElements()
        observeAndApplyBlackBox()
        handleScroll()
    }

    function openEditDialog() {
        const dialogHTML = `
    <div id="editDialog" style="position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: white; padding: 20px; border: 1px solid #ccc; box-shadow: 3px 3px 5px rgba(0,0,0,0.3); z-index: 9999; width: 60%; max-width: 600px; resize: both; overflow: auto;">
        <h3 style="cursor: move;">编辑高亮关键词和颜色</h3>
        <p>请输入用"#"号分隔的关键词:</p>
        <textarea id="keywordsInput" style="width: 100%; height: 100px; resize: vertical;">${keywordsToMatch.join('#')}</textarea>
        <p>请选择背景色:</p>
        <input type="color" id="bgColorPicker" value="${backgroundColor}">
        <p>请选择字体颜色:</p>
        <input type="color" id="textColorPicker" value="${textColor}">
        <div style="text-align: right; margin-top: 10px;">
            <button id="saveBtn">保存</button>
            <button id="cancelBtn">取消</button>
        </div>
    </div>
    <div id="overlay" style="position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.5); z-index: 9998;"></div>
`
        document.body.insertAdjacentHTML('beforeend', dialogHTML)

        const keywordsInput = document.getElementById('keywordsInput')
        const bgColorPicker = document.getElementById('bgColorPicker')
        const textColorPicker = document.getElementById('textColorPicker')

        bgColorPicker.addEventListener('input', function () {
            keywordsInput.style.backgroundColor = bgColorPicker.value
        })

        textColorPicker.addEventListener('input', function () {
            keywordsInput.style.color = textColorPicker.value
        })
        document.getElementById('saveBtn').addEventListener('click', function () {
            const newKeywords = document.getElementById('keywordsInput').value.split('#').map(keyword => keyword.trim())
            keywordsToMatch = newKeywords
            GM_setValue('keywordsToMatch', keywordsToMatch)

            backgroundColor = document.getElementById('bgColorPicker').value
            textColor = document.getElementById('textColorPicker').value
            GM_setValue('backgroundColor', backgroundColor)
            GM_setValue('textColor', textColor)

            blackBoxStyle = `background-color: ${backgroundColor} !important; color: ${textColor} !important;`

            closeEditDialog()
            processPage()
        })

        document.getElementById('cancelBtn').addEventListener('click', function () {
            closeEditDialog()
        })
    }

    function closeEditDialog() {
        const dialog = document.getElementById('editDialog')
        const overlay = document.getElementById('overlay')
        if (dialog) {
            dialog.remove()
        }
        if (overlay) {
            overlay.remove()
        }
    }

    GM_registerMenuCommand('编辑高亮关键词和颜色', openEditDialog)
    processPage()
})()