Greasy Fork

网页高亮关键字

对网页上的文字进行高亮显示,如果对你有帮助,可以随意修改使用

安装此脚本?
作者推荐脚本

您可能也喜欢Greasyfork 糊裱匠

安装此脚本
// ==UserScript==
// @name              网页高亮关键字
// @name:af           Merk sleutelwoorde op die web
// @name:am           በድር ላይ ቁልፍ ቃላትን ያድኑ
// @name:ar           تمييز الكلمات الرئيسية على الويب
// @name:az           İnternetdə açar sözləri vurğulayın
// @name:be           Вылучыце ключавыя словы ў Інтэрнэце
// @name:bem          Landeniko amashiwi ayacindama pa webu
// @name:bg           Маркирайте ключови думи в мрежата
// @name:bn           ওয়েবে কীওয়ার্ডগুলি হাইলাইট করুন
// @name:bo           དྲ་རྒྱའི་ཐོག་གཙོ་ཚིག་གི་མིང་ཚིག་གཙོ་བོ་གསལ་སྟོན་བྱེད་པ།
// @name:bs           Označite ključne riječi na webu
// @name:ca           Ressalteu les paraules clau al web
// @name:ceb          I-highlight ang mga keyword sa web
// @name:ckb          وشە سەرەکییەکان لە وێبدا تیشک بخەرە سەر
// @name:cs           Zvýrazněte klíčová slova na webu
// @name:cy           Tynnu sylw at eiriau allweddol ar y we
// @name:da           Fremhæv nøgleord på nettet
// @name:de           Markieren Sie Keywords im Web
// @name:dv           ވެބްގައި ހުންނަ ކީވޯޑްތައް ހައިލައިޓް ކުރާށެވެ .
// @name:dz           ཝེབ་གུ་ ལྡེ་མིག་ཚིག་ཚུ་ གསལ་སྟོན་འབད།
// @name:el           Επισημάνετε τις λέξεις -κλειδιά στον ιστό
// @name:en           Highlight keywords on the web
// @name:eo           Emfazu ŝlosilvortojn en la reto
// @name:es           Resaltar las palabras clave en la web
// @name:et           Tõstke märksõnad veebis esile
// @name:eu           Nabarmendu gako-hitzak sarean
// @name:fa           کلمات کلیدی را در وب برجسته کنید
// @name:fi           Korosta avainsanoja verkossa
// @name:fo           Varpa ljós á lyklaorð á netinum
// @name:fr           Mettez en surbrillance des mots clés sur le Web
// @name:gd           Comharraich prìomh fhaclan air an lìon
// @name:gl           Resalte palabras clave na web
// @name:gu           વેબ પર કીવર્ડ્સ હાઇલાઇટ કરો
// @name:haw          Nā hua’ōlelo nui ma ka pūnaewele
// @name:he           הדגש מילות מפתח באינטרנט
// @name:hi           वेब पर कीवर्ड को हाइलाइट करें
// @name:hr           Označite ključne riječi na webu
// @name:ht           Mete aksan sou mo kle sou entènèt la
// @name:hu           Jelölje ki a kulcsszavakat az interneten
// @name:hy           Ներկայացրեք հիմնաբառերը համացանցում
// @name:id           Sorot kata kunci di web
// @name:is           Auðkenndu lykilorð á vefnum
// @name:it           Evidenzia le parole chiave sul Web
// @name:ja           Web上のキーワードを強調表示します
// @name:ka           ხაზს უსვამს საკვანძო სიტყვებს ინტერნეტში
// @name:kk           Интернеттегі кілт сөздерді бөлектеңіз
// @name:km           គូសចំណាំពាក្យគន្លឹះនៅលើអ៊ីនធឺណិត
// @name:kn           ವೆಬ್‌ನಲ್ಲಿ ಕೀವರ್ಡ್‌ಗಳನ್ನು ಹೈಲೈಟ್ ಮಾಡಿ
// @name:ko           웹에서 키워드를 강조 표시합니다
// @name:ku           Li ser Webê sereke ronî dike
// @name:ky           Интернетте ачкыч сөздөрдү белгилеңиз
// @name:la           Highlight Keywords in Web
// @name:lb           Highlight Schlësselwieder um Internet
// @name:lo           ຈຸດເດັ່ນຂອງຄໍາຫລັກໃນເວັບ
// @name:lt           Pabrėžkite raktinius žodžius internete
// @name:lv           Iezīmējiet atslēgvārdus tīmeklī
// @name:mg           Asongadino ny teny fanalahidy ao amin’ny Internet
// @name:mi           Tohu tohu i runga i te paetukutuku
// @name:mk           Нагласете клучни зборови на Интернет
// @name:ml           വെബിൽ കീവേഡുകൾ ഹൈലൈറ്റ് ചെയ്യുക
// @name:mn           Вэб дээрх түлхүүр үгсийг тодруулах
// @name:ms           Sorot kata kunci di web
// @name:mt           Jenfasizzaw il-kliem kjavi fuq il-web
// @name:my           ဝက်ဘ်ပေါ်တွင်သော့ချက်စာလုံးများကိုမီးမောင်းထိုးပြ
// @name:ne           वेबमा कुञ्जी शव्दहरू हाइलाइट गर्नुहोस्
// @name:nl           Markeer zoekwoorden op internet
// @name:no           Uthev nøkkelord på nettet
// @name:ny           Unikani mawu osakira pa intaneti
// @name:pa           ਵੈੱਬ ’ਤੇ ਕੀਵਰਡ ਨੂੰ ਹਾਈਲਾਈਟ ਕਰੋ
// @name:pap          Resalta palabranan clave riba e web .
// @name:pl           Podświetl słowa kluczowe w Internecie
// @name:ps           په ویب کې د کلیدي ټکي روښانه کړئ
// @name:pt           Destaque palavras -chave na web
// @name:ro           Evidențiați cuvinte cheie pe web
// @name:ru           Выделите ключевые слова в Интернете
// @name:rw           Shyira ahagaragara ijambo ryibanze kurubuga
// @name:sg           Akota tënë so ayeke na ndo ti web .
// @name:si           වෙබයේ මූල පද ඉස්මතු කරන්න
// @name:sk           Zvýraznite kľúčové slová na webe
// @name:sl           Označite ključne besede na spletu
// @name:sm           Faailoga upu i luga o le upega tafailagi
// @name:sn           Simbisa mazwi makuru pawebhu
// @name:so           Muuji ereyada furaha ah ee shabakadda
// @name:sr           Означите кључне речи на вебу
// @name:sv           Markera nyckelord på webben
// @name:sw           Onyesha maneno muhimu kwenye wavuti
// @name:ta           வலையில் முக்கிய வார்த்தைகளை முன்னிலைப்படுத்தவும்
// @name:te           వెబ్‌లో కీలకపదాలను హైలైట్ చేయండి
// @name:tg           Калимаҳои калидӣ дар веб
// @name:th           เน้นคำหลักบนเว็บ
// @name:ti           ኣብ መርበብ ሓበሬታ ቁልፊ ቃላት ኣጉልሕ
// @name:tk           Webde açar sözleri belläň
// @name:tn           Tlhagisa mafoko a botlhokwa mo webong
// @name:to           Fakaʻilongaʻi ʻa e ngaahi lea mahuʻinga ʻi he uepi .
// @name:tpi          Hailait ki-wod long web
// @name:tr           Web’deki anahtar kelimeleri vurgulayın
// @name:uk           Виділіть ключові слова в Інтернеті
// @name:ur           ویب پر کلیدی الفاظ کو اجاگر کریں
// @name:uz           Internetdagi kalit so’zlarni ajratib ko’rsatish
// @name:vi           Đánh dấu các từ khóa trên web
// @name:xh           Gxininisa amagama aphambili kwiwebhu
// @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 kuwebhu
// @description       对网页上的文字进行高亮显示,如果对你有帮助,可以随意修改使用
// @description:af    Merk die teks op die webblad. As dit u nuttig is, kan u dit verander soos u wil.
// @description:am    በድር ገጽ ላይ ያለውን ጽሑፍ ያደምቁ. ለእርስዎ ጠቃሚ ከሆነ, እርስዎ እንደወደዱት ማሻሻል ይችላሉ.
// @description:ar    قم بتمييز النص على صفحة الويب. إذا كان الأمر مفيدًا لك ، فيمكنك تعديله كما تريد.
// @description:az    Veb səhifədəki mətni vurğulayın. Sizin üçün faydalıdırsa, istədiyiniz kimi dəyişdirə bilərsiniz.
// @description:be    Вылучыце тэкст на вэб -старонцы. Калі гэта вам карысна, вы можаце змяніць яго так, як вам падабаецца.
// @description:bem   Ukulanga ifilembo pe buula lya webu. Nga ca kutila kuti camwafwa, kuti mwacipilibula nga fintu mulefwaya.
// @description:bg    Маркирайте текста на уеб страницата. Ако ви е полезно, можете да го промените както искате.
// @description:bn    ওয়েব পৃষ্ঠায় পাঠ্য হাইলাইট করুন। যদি এটি আপনার পক্ষে সহায়ক হয় তবে আপনি এটি আপনার পছন্দ মতো সংশোধন করতে পারেন।
// @description:bo    དྲ་ངོས་ཀྱི་ཡིག་ཆ་དེ་གསལ་པོར་བསྟན་དགོས། གལ་ཏེ་ཁྱེད་ལ་ཕན་ཐོགས་ཡོད་ན། ཁྱེད་ཀྱིས་འདོད་པ་ལྟར་བསྒྱུར་བཅོས་གཏོང་ཐུབ།
// @description:bs    Označite tekst na web stranici. Ako vam je korisno, možete ga modificirati kako želite.
// @description:ca    Ressalteu el text a la pàgina web. Si us és útil, podeu modificar -lo com vulgueu.
// @description:ceb   Ipasiugda ang teksto sa panid sa web. Kung makatabang kini kanimo, mahimo nimong usbon kini sumala sa gusto nimo.
// @description:ckb   دەقەکە لە وێب پەیجەکەدا تیشک بخەرە سەر. ئەگەر بۆت یارمەتیدەر بێت، دەتوانیت دەستکاری بکەیت بەو شێوەیەی کە حەزت لێیە.
// @description:cs    Zvýrazněte text na webové stránce. Pokud je to pro vás užitečné, můžete jej upravit, jak chcete.
// @description:cy    Tynnwch sylw at y testun ar y dudalen we. Os yw’n ddefnyddiol i chi, gallwch ei addasu fel y dymunwch.
// @description:da    Fremhæv teksten på websiden. Hvis det er nyttigt for dig, kan du ændre det, som du vil.
// @description:de    Markieren Sie den Text auf der Webseite. Wenn es Ihnen hilfreich ist, können Sie es so ändern, wie Sie möchten.
// @description:dv    ވެބް ޕޭޖްގައިވާ ލިޔުން ފާހަގަކޮށްލާށެވެ. އެއީ ތިމާއަށް އެހީތެރިވެދޭ އެއްޗެއް ނަމަ، ތިމާ ބޭނުން ގޮތަކަށް ބަދަލު ކުރެވިދާނެ އެވެ.
// @description:dz    ཝེབ་ཤོག་ལེབ་གུ་ཡོད་པའི་ཚིག་ཡིག་འདི་གཙོ་བོར་བཏོན། ཁྱོད་ལུ་ཕན་ཐོགས་ཡོད་པ་ཅིན་ ཁྱོད་ཀྱིས་འདོད་པ་ཡོད་དོ་བཟུམ་སྦེ་ བཟོ་བཅོས་འབད་ཚུགས།
// @description:el    Επισημάνετε το κείμενο στην ιστοσελίδα. Εάν είναι χρήσιμο για εσάς, μπορείτε να το τροποποιήσετε όπως θέλετε.
// @description:en    Highlight the text on the web page. If it is helpful to you, you can modify it as you like.
// @description:eo    Emfazu la tekston en la retpaĝo. Se ĝi helpas vin, vi povas modifi ĝin kiel vi ŝatas.
// @description:es    Resalte el texto en la página web. Si es útil para usted, puede modificarlo como desee.
// @description:et    Tõstke esile veebilehel olev tekst. Kui see on teile abiks, saate seda muuta nii, nagu soovite.
// @description:eu    Nabarmendu testua web orrian. Zuretzat lagungarria bada, nahi duzun bezala alda dezakezu.
// @description:fa    متن را در صفحه وب برجسته کنید. اگر برای شما مفید است ، می توانید آن را همانطور که دوست دارید اصلاح کنید.
// @description:fi    Korosta verkkosivustolla oleva teksti. Jos siitä on hyötyä sinulle, voit muokata sitä haluamallasi tavalla.
// @description:fo    Varpa ljós á tekstin á heimasíðuni. Um tað er til gagns fyri teg, kanst tú broyta tað, sum tú vilt.
// @description:fr    Mettez en surbrillance le texte sur la page Web. Si cela vous est utile, vous pouvez le modifier comme vous le souhaitez.
// @description:gd    Comharraich an teacsa air an duilleag-lìn. Ma tha e cuideachail dhut, faodaidh tu a dhèanamh dìreach mar as toil leat.
// @description:gl    Resalte o texto na páxina web. Se che resulta útil, podes modificalo como queiras.
// @description:gu    વેબ પૃષ્ઠ પરના ટેક્સ્ટને હાઇલાઇટ કરો. જો તે તમારા માટે મદદરૂપ છે, તો તમે તેને ગમે તે રીતે સુધારી શકો છો.
// @description:haw   Mālama i ka hua’ōlelo ma kaʻaoʻao pūnaewele. Inā he kōkua iāʻoe, hiki iāʻoe ke hoʻololi iāʻoe e like me kāu e makemake ai.
// @description:he    הדגש את הטקסט בדף האינטרנט. אם זה מועיל לך, אתה יכול לשנות את זה כרצונך.
// @description:hi    वेब पेज पर पाठ को हाइलाइट करें। यदि यह आपके लिए मददगार है, तो आप इसे अपनी पसंद के अनुसार संशोधित कर सकते हैं।
// @description:hr    Označite tekst na web stranici. Ako vam je korisno, možete ga izmijeniti kako želite.
// @description:ht    Mete aksan sou tèks la sou paj wèb la. Si li itil pou ou, ou ka modifye li menm jan ou renmen.
// @description:hu    Jelölje ki a szöveget a weboldalon. Ha ez hasznos az Ön számára, akkor módosíthatja azt, ahogy tetszik.
// @description:hy    Ներկայացրեք տեքստը համացանցային էջում: Եթե դա օգտակար է ձեզ համար, կարող եք այն փոփոխել այնպես, ինչպես ցանկանում եք:
// @description:id    Sorot teks di halaman web. Jika bermanfaat bagi Anda, Anda dapat memodifikasinya sesuka Anda.
// @description:is    Auðkenndu textann á vefsíðunni. Ef það er gagnlegt fyrir þig geturðu breytt því eins og þú vilt.
// @description:it    Evidenzia il testo nella pagina Web. Se ti è utile, puoi modificarlo come preferisci.
// @description:ja    Webページのテキストを強調表示します。それがあなたに役立つなら、あなたはあなたが好きなようにそれを変更することができます。
// @description:ka    მონიშნეთ ტექსტი ვებ - გვერდზე. თუ ეს თქვენთვის სასარგებლოა, შეგიძლიათ შეცვალოთ ის, როგორც გსურთ.
// @description:kk    Веб-беттегі мәтінді бөлектеңіз. Егер сізге пайдалы болса, оны өзіңіз қалағандай өзгерте аласыз.
// @description:km    បន្លិចអត្ថបទនៅលើគេហទំព័រ។ ប្រសិនបើវាមានប្រយោជន៍សម្រាប់អ្នកអ្នកអាចកែប្រែវាតាមដែលអ្នកចូលចិត្ត។
// @description:kn    ವೆಬ್ ಪುಟದಲ್ಲಿನ ಪಠ್ಯವನ್ನು ಹೈಲೈಟ್ ಮಾಡಿ. ಇದು ನಿಮಗೆ ಸಹಾಯಕವಾಗಿದ್ದರೆ, ನೀವು ಬಯಸಿದಂತೆ ನೀವು ಅದನ್ನು ಮಾರ್ಪಡಿಸಬಹುದು.
// @description:ko    웹 페이지의 텍스트를 강조 표시하십시오. 도움이되면 원하는대로 수정할 수 있습니다.
// @description:ku    Li ser rûpelê malperê nivîsê ronî bikin. Heke ji we re kêrhatî ye, hûn dikarin wekî ku hûn dixwazin biguherînin.
// @description:ky    Веб баракчанын текстин белгилеңиз. Эгер сизге пайдалуу болсо, анда сиз аны сизге жаккан сайын өзгөртө аласыз.
// @description:la    Highlight textus in textus page. Si est utile vobis, vos can muto ut vos.
// @description:lb    Markéiert den Text op der Websäit. Wann et Iech hëllefräich ass, kënnt Dir et änneren wéi Dir wëllt.
// @description:lo    ເນັ້ນຂໍ້ຄວາມໃນຫນ້າເວັບ. ຖ້າມັນເປັນປະໂຫຍດຕໍ່ທ່ານ, ທ່ານສາມາດດັດແປງມັນຕາມທີ່ທ່ານຕ້ອງການ.
// @description:lt    Pažymėkite tekstą tinklalapyje. Jei tai jums naudinga, galite jį modifikuoti taip, kaip jums patinka.
// @description:lv    Iezīmējiet tekstu tīmekļa lapā. Ja tas jums ir noderīgi, varat to modificēt tā, kā vēlaties.
// @description:mg    Asongadino ny lahatsoratra ao amin’ny pejy web. Raha mahasoa anao izany dia afaka manova azy araka izay tianao.
// @description:mi    Miramirahia te tuhinga ki te wharangi Tukutuku. Mena he pai ki a koe, ka taea e koe te whakarereke i te mea e pai ana koe.
// @description:mk    Означете го текстот на веб -страницата. Ако ви е корисно, можете да го измените како што сакате.
// @description:ml    വെബ് പേജിലെ വാചകം ഹൈലൈറ്റ് ചെയ്യുക. ഇത് നിങ്ങൾക്ക് സഹായകരമാണെങ്കിൽ, നിങ്ങൾക്ക് ഇഷ്ടമുള്ളതുപോലെ ഇത് പരിഷ്കരിക്കാനാകും.
// @description:mn    Вэб хуудсан дээрх текстийг тодруулна уу. Хэрэв танд тустай бол та хүссэн хэмжээгээрээ өөрчилж болно.
// @description:ms    Sorot teks di laman web. Jika ia membantu anda, anda boleh mengubahnya seperti yang anda suka.
// @description:mt    Jenfasizza t-test fuq il-paġna tal-web. Jekk huwa ta ’għajnuna għalik, tista’ timmodifikaha kif tixtieq.
// @description:my    ဝက်ဘ်စာမျက်နှာပေါ်ရှိစာသားကိုမီးမောင်းထိုးပြပါ။ ၎င်းသည်သင့်အတွက်အထောက်အကူဖြစ်လျှင်သင်ကြိုက်သလောက်သင်ပြုပြင်နိုင်သည်။
// @description:ne    वेब पृष्ठमा पाठ हाइलाइट गर्नुहोस्। यदि यो तपाईंलाई सहयोगी छ भने, तपाईं यसलाई यसलाई परिवर्तन गर्न सक्नुहुनेछ जस्तो तपाईंलाई मनपर्दछ।
// @description:nl    Markeer de tekst op de webpagina. Als het nuttig voor u is, kunt u het aanpassen zoals u wilt.
// @description:no    Uthev teksten på websiden. Hvis det er nyttig for deg, kan du endre det som du vil.
// @description:ny    Tsimikizirani lembalo patsamba lawebusayiti. Ngati ndizothandiza kwa inu, mutha kusintha momwe mukufuna.
// @description:pa    ਵੈਬ ਪੇਜ ’ਤੇ ਟੈਕਸਟ ਨੂੰ ਹਾਈਲਾਈਟ ਕਰੋ. ਜੇ ਇਹ ਤੁਹਾਡੇ ਲਈ ਮਦਦਗਾਰ ਹੈ, ਤੁਸੀਂ ਇਸ ਨੂੰ ਆਪਣੀ ਪਸੰਦ ਅਨੁਸਾਰ ਬਦਲ ਸਕਦੇ ਹੋ.
// @description:pap   Resaltá e teksto riba e página web. Si e ta útil pa bo, bo por modifiká esaki manera bo ke.
// @description:pl    Podświetl tekst na stronie internetowej. Jeśli jest to dla Ciebie pomocne, możesz go zmodyfikować tak, jak chcesz.
// @description:ps    په ویب پا on ه کې متن روښانه کړئ. که دا ستاسو سره ګټور وي، نو تاسو کولی شئ دا تعدیل کړئ لکه څنګه چې تاسو غواړئ.
// @description:pt    Destaque o texto na página da web. Se for útil para você, você pode modificá -lo como quiser.
// @description:ro    Evidențiați textul de pe pagina web. Dacă vă este util, îl puteți modifica după cum doriți.
// @description:ru    Выделите текст на веб -странице. Если это полезно для вас, вы можете изменить его по своему усмотрению.
// @description:rw    Shyira ahagaragara inyandiko kurupapuro. Niba bigufasha, urashobora kugihindura uko ubishaka.
// @description:sg    Fa atënë so ayeke na ndo ti lembeti ti Internet. Tongana a mû maboko na mo, mo lingbi ti changé ni tongana ti so mo ye.
// @description:si    වෙබ් පිටුවේ පෙළ ඉස්මතු කරන්න. එය ඔබට ප්රයෝජනවත් නම්, ඔබට කැමති පරිදි එය වෙනස් කළ හැකිය.
// @description:sk    Zvýraznite text na webovej stránke. Ak je to pre vás užitočné, môžete ho upraviť tak, ako chcete.
// @description:sl    Označite besedilo na spletni strani. Če vam je v pomoč, ga lahko spremenite, kot želite.
// @description:sm    Faapipii le tusitusiga i luga o le itulau itulau. Afai e aoga ia te oe, e mafai ona e suia e te fiafia ai.
// @description:sn    Simbisa mavara ari papeji rewebhu. Kana zvichikubatsira iwe, iwe unogona kuvandudza sezvaunoda.
// @description:so    Ku muuji qoraalka bogga bogga. Haddii ay waxtar kuu leedahay, waad wax ka badali kartaa sida aad rabto.
// @description:sr    Означите текст на веб страници. Ако вам је од помоћи, можете га модификовати како желите.
// @description:sv    Markera texten på webbsidan. Om det är till hjälp för dig kan du ändra det som du vill.
// @description:sw    Onyesha maandishi kwenye ukurasa wa wavuti. Ikiwa inakusaidia, unaweza kuibadilisha kama unavyopenda.
// @description:ta    வலைப்பக்கத்தில் உள்ள உரையை முன்னிலைப்படுத்தவும். இது உங்களுக்கு உதவியாக இருந்தால், நீங்கள் விரும்பியபடி அதை மாற்றலாம்.
// @description:te    వెబ్ పేజీలోని వచనాన్ని హైలైట్ చేయండి. ఇది మీకు సహాయపడితే, మీకు నచ్చిన విధంగా దాన్ని సవరించవచ్చు.
// @description:tg    Матнро дар сафҳаи веб қайд кунед. Агар он ба шумо муфид бошад, шумо метавонед онро тавре, ки мехоҳед тағир диҳед.
// @description:th    ไฮไลต์ข้อความบนหน้าเว็บ หากเป็นประโยชน์กับคุณคุณสามารถแก้ไขได้ตามที่คุณต้องการ
// @description:ti    ኣብቲ መርበብ ሓበሬታ ዘሎ ጽሑፍ ኣጉልሕ። ሓጋዚ እንተኾይኑካ ከም ድላይካ ክትቅይሮ ትኽእል ኢኻ።
// @description:tk    Teksti web sahypasyndaky teksti görkeziň. Size peýdaly bolsa, şoňa meňzeş siziň ýaly üýtgedip bilersiňiz.
// @description:tn    Tlhagisa sekwalwa mo tsebeng ya webo. Fa e le gore e a go thusa, o ka e fetola ka fa o ratang ka teng.
// @description:to    Faka’ilonga’i ’a e tohi ’i he peesi uepi. Kapau ʻoku ʻaonga ia kiate koe, te ke lava ʻo fakaleleiʻi ia ʻo hangē ko hoʻo loto ki aí.
// @description:tpi   Haelaetem teks long web pej. Sapos em i helpim yu, yu inap senisim olsem yu laikim.
// @description:tr    Web sayfasındaki metni vurgulayın. Sizin için yararlısa, istediğiniz gibi değiştirebilirsiniz.
// @description:uk    Виділіть текст на веб -сторінці. Якщо це вам корисно, ви можете змінити його, як вам подобається.
// @description:ur    ویب صفحے پر متن کو اجاگر کریں۔ اگر یہ آپ کے لئے مددگار ہے تو ، آپ اپنی پسند کے مطابق اس میں ترمیم کرسکتے ہیں۔
// @description:uz    Veb-sahifada matnni ajratib oling. Agar sizga foydali bo’lsa, uni xohlaganingizcha o’zgartirishingiz mumkin.
// @description:vi    Đánh dấu văn bản trên trang web. Nếu nó hữu ích cho bạn, bạn có thể sửa đổi nó như bạn muốn.
// @description:xh    Chaza isicatshulwa kwiphepha lewebhu. Ukuba kuyaluncedo kuwe, ungayiguqula njengoko uthanda.
// @description:yi    הויכפּונקט די טעקסט אויף די וועב בלאַט. אויב עס איז נוציק צו איר, איר קענען מאָדיפיצירן עס ווי איר ווילט.
// @description:zh    对网页上的文字进行高亮显示,如果对你有帮助,可以随意修改使用
// @description:zh-CN 对网页上的文字进行高亮显示,如果对你有帮助,可以随意修改使用
// @description:zh-HK 對網頁上的文字進行高亮顯示,如果對你有幫助,可以隨意修改使用
// @description:zh-MO 對網頁上的文字進行高亮顯示,如果對你有幫助,可以隨意修改使用
// @description:zh-MY 对网页上的文字进行高亮显示,如果对你有帮助,可以随意修改使用
// @description:zh-SG 对网页上的文字进行高亮显示,如果对你有帮助,可以随意修改使用
// @description:zh-TW 對網頁上的文字進行高亮顯示,如果對你有幫助,可以隨意修改使用
// @description:zu    Qokomisa umbhalo ekhasini le-Web. Uma kusiza kuwe, ungayiguqula ngendlela othanda ngayo.
// @namespace         https://github.com/ChinaGodMan/UserScripts
// @version           1.1.2.72
// @author            ma bangde,人民的勤务员 <[email protected]>
// @include           *
// @grant             GM_addStyle
// @grant             GM_registerMenuCommand
// @grant             GM_setValue
// @grant             GM_getValue
// @require           https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.min.js
// @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
// @supportURL        https://github.com/ChinaGodMan/UserScripts/issues
// @homepageURL       https://github.com/ChinaGodMan/UserScripts
// @license           MIT

// ==/UserScript==
(function () {

    // 初始化
    function initialize() {
        let defaultWords = {
            'key_123': {
                limit: ['baidu'],
                'info': '汉字测试',
                'words': ['抖音', '快手', '网页', '平台', '的', '最', '一', '个', '多', '服务', '大'],
                'color': '#85d228',
                'textcolor': '#3467eb'

            },
            'key_124': {
                limit: [],
                'info': '数字测试',
                'words': ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],
                'color': '#48c790',
                'textcolor': '#3467eb'

            },
            'key_3379656389': {
                limit: [],
                'info': '字母测试',
                'words': ['a', 'b', 'c', 'd', 'e', 'f', 't', 'y', 'u', 'i', 'o', 'k', 'j', 'h', 'g', 's', 'z', 'x', 'v', 'n', 'm'],
                'color': '#e33544',
                'textcolor': '#3467eb'
            },
            'key_4947181948': {
                limit: [],
                'info': '相同的字可以显示各个分组的标题',
                'words': ['的', '最', '一', '个', '多', '服务', '大'],
                'color': '#6e7bdd',
                'textcolor': '#e33544'
            }
        }
        // 设置关键字默认值
        if (!GM_getValue('key')) { GM_setValue('key', defaultWords) }
        if (Object.keys(GM_getValue('key')).length == 0) { GM_setValue('key', defaultWords) }
        // GM_setValue("key",this.defaultWords);

        let cache = GM_getValue('key')
        Object.keys(cache).forEach(key => {
            let defult = {
                limit: [],
                info: '',
                words: [],
                color: '#85d228'
            }
            Object.keys(defult).forEach((key2) => {
                if (!cache[key][key2]) {
                    console.log(defult[key2])
                    cache[key][key2] = defult[key2]
                }
            })
        })

        GM_setValue('key', cache)
    }
    /**
     * @description: 遍历找出所有文本节点
     * @param {*} node
     * @return {*} 节点map
     */
    function textMap(node) {
        // 存储文本节点
        let nodeMap = new Map()

        const walker = document.createTreeWalker(node, NodeFilter.SHOW_TEXT, (textNode) => {
            if (textNode.parentElement.nodeName === 'SCRIPT' |
                textNode.parentElement.nodeName === 'script' |
                textNode.parentElement.nodeName === 'style' |
                textNode.parentElement.nodeName === 'STYLE' |
                textNode.parentElement.className === 'mt_highlight' |
                document.querySelector('#mt_seting_box').contains(textNode)
            ) {
                return NodeFilter.FILTER_SKIP
            }

            if (textNode.data.length < 20) {
                return textNode.data.replace(/[\n \t]/g, '').length ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP
            }

            return NodeFilter.FILTER_ACCEPT
        })

        while ((textNode = walker.nextNode())) {
            nodeMap.set(textNode, textNode.data)
        }

        return nodeMap
    }

    // 高亮
    class HIGHTLIGHT {

        // 需要高亮的关键字
        /**通过规则新建关键字列表,解决一个关键字会存在多个分类中
         * 将{
         *  key1{
         *      words:[word1,word2]
         *      },
         *  key2{
         *      words:[word3,word4]
         *      }
         * }
         * 转换为map{
         *      word1:key1
         *      word2:key1
         *      word4:key2
         *      word3:key2
         * }
         * @description:
         * @return {map}map{
         *
         * classesKey=>分类标签,类型string
         *
         * infoList=>提示词,数组["汉字","字符"]
         *
         * }
         */
        static words() {

            // 转换
            let newWords = new Map
            Object.keys(GM_getValue('key')).forEach(classesKey => {

                let info = GM_getValue('key')[classesKey].info
                let words = GM_getValue('key')[classesKey].words
                let color = GM_getValue('key')[classesKey].color
                let limit = GM_getValue('key')[classesKey].limit
                let textcolor = GM_getValue('key')[classesKey].textcolor

                words.forEach(word => {
                    let infoList = []

                    // 检测是否被多个类目包含,被多个类目包含的关键字会有对应类目的信息
                    if (newWords.get(word + '')) {
                        infoList = newWords.get(word + '').infoList
                        infoList.push(info)
                    } else {
                        infoList = [info]
                    }

                    newWords.set(word + '', {
                        classesKey,
                        infoList: infoList,
                        textcolor,
                        color,
                        limit
                    })
                })
            })
            return newWords
        }

        // 检测正则
        static reg() {
            let url = window.location.href
            let doIt = false
            let wordsList = []
            let words = this.words()
            words.forEach((value, word) => {
                // console.log(value.limit);
                // 过滤不匹配的
                if (value.limit.length == 0 || url.match(new RegExp(`${value.limit.join('|')}`, 'g'))) {
                    // 添加要筛选的关键字
                    wordsList.push(word)
                }
            })
            // 过滤后还需不需要检测
            wordsList.length ? doIt = true : doIt = false
            // console.log(doIt,wordsList);
            return {
                rule: new RegExp(`(${wordsList.join('|')})`, 'g'),
                doIt
            }
        }

        // 高亮css
        static highlightStyle = `
                        .mt_highlight{
                            background-color: rgb(255, 21, 21);
                            border-radius: 2px;
                            box-shadow: 0px 0px 1px 1px rgba(0, 0, 0,0.1);
                            cursor: pointer;
                            color: white;

                            padding: 1px 1px;
                        }
                        `

        /**
         * @description: 返回需要被高亮的节点map{textNode,未来会被修改成目标的值}
         * @param {map} nodeMap
         * @return {void}
         */
        static highlight(nodeMap) {
            let words = this.words()
            let reg = this.reg()
            // 没有要高亮的关键字时不执行

            if (words.size && reg.doIt) {
                nodeMap.forEach((value, node) => {
                    // 正则检测是否符合规则
                    let newInnerHTML = value.replace(reg.rule, (word) => {
                        let classesKey = words.get(word).classesKey
                        let infoList = words.get(word).infoList
                        let color = words.get(word).color
                        let textcolor = words.get(word).textcolor

                        // 返回新节点模板
                        // return `<span class="mt_highlight" classesKey="${classesKey}"  title="${infoList.join("\n")}" style="background: ${color};">${word}</span>`

                        return `<span class="mt_highlight" classesKey="${classesKey}"  title="${infoList.join('\n')}" style="background: ${color}; color:${textcolor};">${word}</span>`
                    })
                    // 是否检测出了
                    if (value != newInnerHTML) {
                        // 节点替换
                        let newNode = document.createElement('span')
                        newNode.innerHTML = newInnerHTML
                        node.parentElement.replaceChild(newNode, node)
                        // 点击复制
                        newNode.addEventListener('click', (e) => {
                            navigator.clipboard.writeText(e.target.innerText)
                        })
                    }
                })
            }

        }

    }

    /**
     * @description: 动态检测新节点,并执行高亮
     * @return {*}
     */
    function watch() {
        // 选择需要观察变动的节点
        const targetNode = document.body

        // 观察器的配置(需要观察什么变动)
        const config = { attributes: false, childList: true, subtree: true, characterData: true }

        // 当观察到变动时执行的回调函数
        const callback = function (mutationsList, observer) {
            let nodeMap = new Map
            setTimeout(() => {
                mutationsList.forEach(node => { nodeMap.set(node.target) })
                nodeMap.forEach((value, node) => {
                    doOnce(node)
                })
            }, 1)
        }

        // 创建一个观察器实例并传入回调函数
        const observer = new MutationObserver(callback)

        // 以上述配置开始观察目标节点
        observer.observe(targetNode, config)
    }

    // gui
    class GUI {
        // 模板
        static setingTemplate = String.raw`
        <div class="seting_box" v-show="showSeting">
            <!-- 顶部选项 -->
            <div class="option_box">
                <div @click="config_in_add">导入添加</div>
                <div @click="config_in">导入覆盖</div>

                <input type="file" class="config_file" accept=".json" @change="file_read($event)">

                <div @click="config_out">导出配置文件</div>
                <div @click="refresh">刷新</div>
                <div class="close_seting" @click="close_seting">关闭</div>
            </div>

            <!-- 规则视图 -->
            <div class="rule_list_box" v-for="(value,key) in rule">

                <!-- 展示视图 -->
                <div class="show_box" v-show="!edit[key]" >

                    <!-- 左边 -->
                    <div class="show_left">

                        <!-- 网站作用域 -->
                        <div class="words_box"  @click="editOn(key)">
                            <span v-for="(word) in value.limit" :style="{'background': value.color, 'color': value.textcolor}">
                                {{word}}
                            </span>
                            <!-- 没有限制 -->
                            <span v-if="! value.limit.length" :style="{'background': value.color, 'color': value.textcolor}">
                                不限制
                            </span>
                        </div>

                        <!-- 类目 -->
                        <div class="info_box" @click="editOn(key)" :style="{'background': value.color, 'color': value.textcolor}">
                            {{value.info}}
                        </div>
                        <!-- 关键字 -->
                        <div class="words_box"  @click="editOn(key)">
                            <span v-for="(word) in value.words" :style="{'background': value.color, 'color': value.textcolor}">
                                {{word}}
                            </span>
                        </div>
                    </div>

                    <!-- 分割线 -->
                    <div class="line"></div>

                    <!-- 修改颜色和删除 -->
                    <div class="rule_set_box">
                        <div class="color_box">
                            <input type="color"
                                :colorKey="key"
                                v-model="value.color"
                                @change="colorChange(key,value.color,value.textcolor)"
                            >
                        </div>

                        <div class="textcolor_box">
                            <input type="color"
                                :colorKey="key"
                                v-model="value.textcolor"
                                @change="colorChange(key,value.color,value.textcolor)"
                            >
                        </div>
                        <div class="del" @click.stop="del_key(key)">删除</div>
                    </div>
                </div>

                <!-- 编辑视图 -->
                <div class="eidt_box" v-show="edit[key]">
                    <div class="eidt_left">
                        <!-- 修改作用域 -->
                        <textarea :limit_key="key" :value="value.limit.toString().replace(/,/g,' ')"></textarea>
                        <!-- 修改类目信息 -->
                        <textarea :info_key="key" :value="value.info"></textarea>
                        <!-- 修改关键字 -->
                        <textarea :words_key="key" :value="value.words.toString().replace(/,/g,' ')"></textarea>
                    </div>

                    <!-- 分割线 -->
                    <div class="line"></div>

                    <!-- 确定 取消 -->
                    <div class="eidt_right">
                        <div class="del" @click="editOff(key)">取消</div>
                        <div class="del" @click="ruleUpdate(key)">确定</div>
                    </div>

                </div>

            </div>

            <!-- 添加新规则 -->
            <div class="add" @click="add_key">+</div>

        </div>
        `
        // 模板css
        static setingStyle = `
        body {
            --mian_width: 480px;
            --mian_color: #189fd8;
            --radius: 5px;
            --info_color: #eaeaea;
            --font_color: #676767;
          }
          .seting_box {
            width: 500px;
            max-height: 800px;
            overflow: auto;
            background: white;
            border-radius: 5px;
            position: fixed;
            transform: translate(-50%, 0);
            top: 50px;
            left: 50%;
            border: 1px solid rgba(0, 0, 0, 0.1);
            padding: 15px 5px;
            flex-direction: column;
            align-items: center;
            z-index: 10000;
            display: flex;
            box-shadow: 0 1px 5px 5px rgba(0, 0, 0, 0.1);
          }
          .option_box {
            width: var(--mian_width);
            display: flex;
            justify-content: space-between;
          }
          .option_box div {
            display: flex;
            height: 20px;
            align-items: center;
            padding: 5px 10px;
            background: var(--mian_color);
            color: white;
            border-radius: var(--radius);
            cursor: pointer;
          }
          .rule_list_box {
            width: var(--mian_width);
            border-radius: var(--radius);
            margin-top: 10px;
            padding: 5px 0px;
            box-shadow: 0 0 5px 0px #e2e2e2;
            cursor: pointer;
          }
          .rule_list_box .show_box {
            display: flex;
            justify-content: space-between;
          }
          .rule_list_box .show_box .show_left {
            width: 410px;
          }
          .rule_list_box .show_box .show_left > div {
            margin-top: 5px;
          }
          .rule_list_box .show_box .show_left > div:nth-child(1) {
            margin-top: 0px;
          }
          .rule_list_box .show_box .show_left .info_box {
            margin-left: 5px;
            margin-right: 5px;
            padding: 2px 5px;
            min-height: 22px;
            color: white;
            border-radius: var(--radius);
            background-color: var(--mian_color);
            display: flex;
            align-items: center;
          }
          .rule_list_box .show_box .show_left .words_box {
            margin-top: 0px;
            /* border: 1px solid black; */
            min-height: 20px;
            display: flex;
            flex-wrap: wrap;
          }
          .rule_list_box .show_box .show_left .words_box span {
            background-color: var(--info_color);
            color: white;
            padding: 2px 5px;
            border-radius: var(--radius);
            margin-left: 5px;
            margin-top: 5px;
            display: flex;
            align-items: center;
            height: 20px;
          }
          .rule_list_box .show_box .rule_set_box {
            display: flex;
            flex-direction: column;
            justify-content: space-around;
            padding: 0px 5px;
          }
          .rule_list_box .show_box .rule_set_box .color_box  .textcolor_box {
            overflow: hidden;
            display: flex;
            justify-content: center;
            align-items: center;
          }
          .rule_list_box .show_box .rule_set_box .color_box   .textcolor_box input {
            width: 50px;
            height: 25px;
            border-radius: var(--radius) !important;
            padding: 0px;
          }
          .rule_list_box .eidt_box {
            padding: 0px 5px;
            display: flex;
            flex-direction: row;
            justify-content: space-between;
          }
          .rule_list_box .eidt_box .eidt_left {
            width: 400px;
          }
          .rule_list_box .eidt_box .eidt_left textarea {
            width: 100% !important;
            min-height: 30px !important;
            border: none;
            outline: none;
            color: var(--font_color);
            background-color: var(--info_color);
            border-radius: var(--radius);
            margin-top: 5px;
            padding: 5px;
          }
          .rule_list_box .eidt_box .eidt_left textarea:nth-child(1) {
            margin-top: 0px;
          }
          .rule_list_box .eidt_box .eidt_right {
            display: flex;
            flex-direction: column;
            justify-content: space-around;
          }
          .rule_list_box .line {
            width: 1px;
            background-color: rgba(0, 0, 0, 0.1);
          }
          .rule_list_box .del {
            background-color: var(--mian_color);
            color: white;
            border-radius: var(--radius);
            padding: 0px 10px;
            font-size: 15px;
            display: flex;
            justify-content: center;
            align-items: center;
            cursor: pointer;
          }
          .add {
            width: var(--mian_width);
            height: 30px;
            background: #189fd8;
            color: white;
            display: flex;
            justify-content: center;
            border-radius: 5px;
            padding: 5px 0px;
            margin-top: 10px;
            align-items: center;
            font-size: 35px;
            font-weight: 100;
            cursor: pointer;
          }
          .bt {
            display: flex;
            align-items: center;
            justify-content: space-around;
          }
          input {
            border: none;
            padding: 0px;
            border-radius: 5px;
            box-shadow: none;
          }
          .config_file {
            display: none;
          }
@media (max-width: 768px) {

    .option_box {
        width: 95%;

    }
    .option_box div {
        padding: 5px;
        font-size: 14px; /* 修改按钮字体大小 */
    }

    .rule_list_box {
        width: 95%;
    }
    .rule_list_box .show_box .show_left {
        width: 70%;
    }
    .rule_list_box .eidt_box .eidt_left {
        width: 70%;
    }
    .rule_list_box .option_box div {
        padding: 3px; /* 修改按钮内边距 */
        font-size: 12px; /* 修改按钮字体大小 */

    }
    .seting_box {
        width: 90%; /* 容器宽度为视口宽度的90% */
        max-height: 80vh; /* 最大高度为视口高度的80% */
        top: 10%; /* 顶部距离为视口高度的10% */
        bottom: 10%; /* 底部距离为视口高度的10% */
        transform: translate(-50%, 0); /* 居中显示 */
        left: 50%; /* 水平居中 */
          z-index: 10000; /* 设置一个较高的层叠顺序 */
    }

}

        `
        // 开发用
        static devCss() {
            GM_xmlhttpRequest({
                method: 'get',
                url: 'http://127.0.0.1:1145',
                responseType: 'blob',
                onload: (res) => {
                    // console.log(res.responseText);
                    GM_addStyle(res.responseText)
                },
                onerror: (error => {
                    console.log('该页无法链接')
                })
            })
        }

        static create() {
            // 获取根节点
            let seting_box = document.querySelector('#mt_seting_box')
            seting_box.innerHTML = this.setingTemplate

            // 创建根节点样式
            GM_addStyle(this.setingStyle)
            // this.devCss()

            // 创建响应式ui
            const mt_Vue = new Vue({
                el: '#mt_seting_box',
                data() {
                    return {
                        rule: GM_getValue('key'),
                        edit: this.addEdit(GM_getValue('key')),
                        showSeting: false,
                        config_add: false
                    }
                },

                watch: {
                    showSeting(n) {
                        // console.log(22333);
                    }
                },

                methods: {
                    // 关闭设置
                    close_seting() {
                        this.showSeting = false
                    },

                    // 开启设置
                    open_seting() {
                        this.showSeting = true
                        console.log(2233)
                    },
                    // 添加属性开关
                    addEdit(rules) {
                        let a = {}
                        Object.keys(rules).forEach(key => {
                            a[key] = false
                        })
                        return a
                    },

                    // 打开编辑
                    editOn(key) {
                        this.edit[key] = true
                    },

                    // 关闭编辑
                    editOff(key) {
                        this.edit[key] = false
                    },

                    // 颜色更新
                    colorChange(key, color, textcolor) {
                        document.querySelectorAll(`.mt_highlight[classesKey="${key}"]`).forEach(node => {
                            node.style.background = color
                            node.style.color = textcolor
                        })
                        // 保存到油猴中
                        GM_setValue('key', this.rule)
                    },

                    // 更新规则
                    ruleUpdate(key) {
                        let newInfo = document.querySelector(`textarea[info_key=${key}]`).value
                        let newWords = (document.querySelector(`textarea[words_key=${key}]`).value.split(' '))
                        let newLimit = (document.querySelector(`textarea[limit_key=${key}]`).value.split(' '))

                        // 去除空格
                        newWords = Array.from(new Set(newWords))
                            .filter(word => { return word != ' ' & word.length > 0 })
                        newLimit = Array.from(new Set(newLimit))
                            .filter(word => { return word != ' ' & word.length > 0 })
                        // console.log(newInfo,newWords);
                        this.rule[key].info = newInfo
                        this.rule[key].words = newWords
                        this.rule[key].limit = newLimit

                        this.editOff(key)

                        // 保存到油猴中
                        GM_setValue('key', this.rule)
                    },

                    // 添加新规则
                    add_key() {
                        let key = 'key_' + Math.floor(Math.random() * 10000000000)
                        this.$set(this.rule, key, {
                            info: '',
                            words: [],
                            color: '#dc6c75',
                            textcolor: '#3467eb',
                            limit: []
                        })

                        this.$set(this.edit, key, false)

                        // 保存到油猴中
                        GM_setValue('key', this.rule)
                        console.log(2233)
                    },

                    // 删除规则
                    del_key(key) {
                        let ready = confirm('确认删除,该操作不可恢复')

                        if (ready && Object.keys(this.rule).length > 1) {
                            this.$delete(this.rule, key)
                            this.$delete(this.edit, key)
                        } else if (ready && Object.keys(this.rule).length < 2) {
                            alert('至少保留一个')
                        }

                        // 保存到油猴中
                        GM_setValue('key', this.rule)
                    },

                    // 复制到粘贴板
                    copy() {
                        navigator.clipboard.writeText(JSON.stringify(this.rules))
                    },

                    // 获取配置覆盖
                    config_in() {
                        document.querySelector('.config_file').click()
                        this.config_add = false
                    },
                    // 获取配置添加
                    config_in_add() {
                        document.querySelector('.config_file').click()
                        this.config_add = true
                    },

                    // 解析配置
                    importFileJSON(ev) {
                        return new Promise((resolve, reject) => {
                            const fileDom = ev.target,
                                file = fileDom.files[0]

                            // 格式判断
                            if (file.type !== 'application/json') {
                                reject('仅允许上传json文件')
                            }
                            // 检验是否支持FileRender
                            if (typeof FileReader === 'undefined') {
                                reject('当前浏览器不支持FileReader')
                            }

                            // 执行后清空input的值,防止下次选择同一个文件不会触发onchange事件
                            ev.target.value = ''

                            // 执行读取json数据操作
                            const reader = new FileReader()
                            reader.readAsText(file) // 读取的结果还有其他读取方式,我认为text最为方便

                            reader.onerror = (err) => {
                                reject('json文件解析失败', err)
                            }

                            reader.onload = () => {
                                const resultData = reader.result
                                if (resultData) {
                                    try {
                                        const importData = JSON.parse(resultData)
                                        resolve(importData)
                                    } catch (error) {
                                        reject('读取数据解析失败', error)
                                    }
                                } else {
                                    reject('读取数据解析失败', error)
                                }
                            }
                        })
                    },

                    // 保存配置到本地
                    file_read(e) {
                        this.importFileJSON(e).then(res => {
                            // 合并还是覆盖
                            if (this.config_add) {
                                let cache = {}
                                Object.keys(GM_getValue('key')).forEach(key => {
                                    cache['key_' + Math.floor(Math.random() * 10000000000)] = GM_getValue('key')[key]
                                })
                                cache = { ...cache, ...res }
                                console.log(cache)

                                GM_setValue('key', cache)
                            } else {
                                GM_setValue('key', res)
                            }
                            initialize()
                            this.rule = GM_getValue('key')
                            this.edit = this.addEdit(res)
                        })
                    },

                    // 导出配置
                    config_out() {
                        function exportJson(name, data) {
                            let blob = new Blob([data]) //  创建 blob 对象
                            let link = document.createElement('a')
                            link.href = URL.createObjectURL(blob) //  创建一个 URL 对象并传给 a 的 href
                            link.download = name //  设置下载的默认文件名
                            link.click()
                        }

                        exportJson('mt_hight_light_config.json', JSON.stringify(this.rule))

                    },

                    // 刷新
                    refresh() {
                        location.reload()
                    }

                },

                mounted() {
                    GM_registerMenuCommand('打开设置', this.open_seting)
                    // 点击其他区域关闭设置
                    document.body.addEventListener('click', (e) => {
                        // 检查是否是移动设备
                        if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
                            if (!document.querySelector('#mt_seting_box').contains(e.target)) {
                                this.close_seting()
                            }
                        }
                    })

                }
            })

        }
    }

    ///////////////////////////////////////////////////////////
    // vue根节点
    let seting_box = document.createElement('div')  // 创建一个节点
    seting_box.setAttribute('id', 'mt_seting_box') // 设置一个属性
    document.body.appendChild(seting_box)

    GM_addStyle(HIGHTLIGHT.highlightStyle)

    // 初始化数据
    initialize()
    console.log(GM_getValue('key'))

    // 静态页面的检测
    let nodeMap = textMap(document.body)
    // console.log(nodeMap);
    HIGHTLIGHT.highlight(nodeMap)
    nodeMap.clear()

    // 减少节点的重复检测
    let doOnce = ((wait) => {
        let timer = null
        // 存储动态更新的节点
        let elMap = new Map

        return (el) => {
            // 添加节点
            elMap.set(el)
            if (!timer) {
                timer = setTimeout(() => {
                    // console.log(elMap);
                    elMap.forEach((value, el) => {
                        setTimeout(() => {

                            let nodeMap = textMap(el)
                            HIGHTLIGHT.highlight(nodeMap)
                            nodeMap = null

                        }, 1)
                    })
                    elMap.clear()
                    timer = null
                }, wait)
            }
        }
    })(100)
    // 动态更新内容的检测
    watch()

    // 创建ui
    GUI.create()
}
)()