Greasemonkey: WebExt: рд╕рднреА рдЬреАрдПрдо рдПрдкреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 3 рдорд╛рд░реНрдЪ 2017  ┬╖  19рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: greasemonkey/greasemonkey

https://wiki.greasespot.net/Greasemonkey_Manual :API

Greasemonkey API рдЖрдорддреМрд░ рдкрд░ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ, рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рд╕рднреА рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВред рд╕рд╛рдордЧреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ (рд▓рдЧрднрдЧ) рдХреЛрдИ рдПрдкреАрдЖрдИ рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╡реЗрдм рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗрд╡рд▓ рдПрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рдВрджреЗрд╢ рдкрд╛рд╕рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд

рдЗрд╕рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд┐ рдХреА рдЕрдкрдиреА рдЪреБрдиреМрддрд┐рдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВред

рдЖрд╕рд╛рди:

  • GM_getResourceURL рдХреЛ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдкрд░рд┐рдгрд╛рдо рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреБрдЪреНрдЫ рд╣реИред
  • GM_addStyle рддреБрдЪреНрдЫ рд╣реИред
  • GM_log рд╢рд╛рдпрдж рд╕реЗрд╡рд╛рдирд┐рд╡реГрддреНрдд рд╣реЛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рд╕рд┐рд░реНрдл console.log рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
  • GM_openInTab рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЖрджреЗрд╢ рджреЗрдирд╛ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред
  • GM_registerMenuCommand рдХрд╛ рдХреЛрдИ рд╕рдордХрд╛рд▓рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реИред
  • GM_setClipboard рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
  • GM_xmlhttpRequest рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╣реИред

рдФрд░ рдЬреЛрд░ рд╕реЗ:

  • GM_deleteValue рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдЖрджреЗрд╢ рджреЗрдирд╛ рдЕрднреА рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ (рдЕрд░реНрдерд╛рдд X рдХреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ X рдХреЗ рдХрд┐рд╕реА рднреА рд╕реЗрдЯ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдЯрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ)ред
  • GM_setValue рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдХреЛрдИ рд╕рдордХрд╛рд▓рд┐рдХ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдЖрджреЗрд╢ рджреЗрдирд╛ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИред

рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓:

  • GM_getValue рдХреЛ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдкрд░рд┐рдгрд╛рдо рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред
  • GM_listValues рдХреЛ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдкрд░рд┐рдгрд╛рдо рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред (рдкреНрд▓рд╕ AFAICT рд╕реНрдЯреЛрд░реЗрдЬ рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рдмреИрдХрд┐рдВрдЧ рдПрдкреАрдЖрдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдПрдХрдорд╛рддреНрд░ рд╡рд┐рдХрд▓реНрдк рдирд╛рдо рд╕реЗ рдПрдХ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ, рдпрд╛ рд╕рднреА рдирд╛рдо рдФрд░ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред рдЕрд▓рдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдЬреИрд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ред)
  • GM_getResourceText рдХреЛ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдкрд░рд┐рдгрд╛рдо рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╡реЗ рдмрд╣реБрдд рдмрдбрд╝реЗ рдорд╛рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред (рдпрд╛рдиреА рд╕реНрдореГрддрд┐ рдореЗрдВ рдЙрди рд╕рднреА рдХреЛ рдкреВрд░реНрд╡-рдХреИрд╢рд┐рдВрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдорд╣рдВрдЧрд╛ рд╣реИред)

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

Tampermonkey рдореЗрдВ, GM_addStyle рдореЗрдВ рд╢реИрд▓реА рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХреНрд╖рдорддрд╛ рд╣реИ рдЬреЛ CSP рдкреНрд░рддрд┐рдмрдВрдз рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░ рд╕рдХрддреА рд╣реИ (рдпрджрд┐ рдЗрдирд▓рд╛рдЗрди <style> рдирд┐рд╖рд┐рджреНрдз рд╣реИ)ред рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Greasemonkey рдореЗрдВ рднреА рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

рд╕рднреА 19 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдмрдЧ 1323433 рдФрд░ рдмрдЧ 1332273 рдпрд╣рд╛рдВ рд░реБрдЪрд┐ рдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рд╡реЗ рджреЛрдиреЛрдВ рд╕реБрдкрд░ рдЙрдкрдпреЛрдЧреА рд╣реИрдВред

рдУрд╣, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╕рдордХрд╛рд▓рд┐рдХ рд╕рдВрджреЗрд╢ рдЧреБрдЬрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ!

https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/runtime/onMessage#Sending_a_synchronous_response

рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред рдХреНрдпрд╛ рдпрд╣ рдКрдкрд░ рдмрддрд╛рдП рдЧрдП рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдкреГрд╖реНрдарднреВрдорд┐-рдХреЗрд╡рд▓ рдПрдкреАрдЖрдИ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ?

рдпрд╣ рд╕рд╛рдордЧреНрд░реА рдкрдХреНрд╖ рдкрд░ рдПрдХ рд╡рд╛рджрд╛ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ async рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рд╕рд┐рдВрдХреНрд░реЛрдирд╕" рдпрд╣рд╛рдВ рдПрдХ рдЧрд▓рдд рдирд╛рдо рд╣реИ, рдпрд╣ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдмрдЪреНрдЪреЗ рд╕реЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рдЬреЛрдбрд╝рдирд╛ рдкрд╕рдВрдж рд╣реИ рддрд╛рдХрд┐ рдХрд┐рд╕реА рдХреЛ рд▓рдВрдмрд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЯреНрд░реИрдХ рди рд░рдЦрдирд╛ рдкрдбрд╝реЗред

рдЕрдлреИрдХ рдЙрдкрд▓рдмреНрдз рдПрдХрдорд╛рддреНрд░ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдПрдкреАрдЖрдИ рд╕рд┐рдВрдХ рдПрдХреНрд╕рдПрдЪрдЖрд░ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рддрдм рд╡реЗрдмрд░реЗрдХреНрд╡реЗрд╕реНрдЯ рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рд╛рдордЧреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рд┐рдВрдХ рдПрдХреНрд╕рдПрдЪрдЖрд░ рдареАрдХ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: https://bugzilla.mozilla.org/show_bug.cgi?id=1360968, рдЗрд╕рд▓рд┐рдП рдЕрднреА рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рд╛рдордЧреНрд░реА> рдкреГрд╖реНрдарднреВрдорд┐ рд╕реЗ рдХреЛрдИ рд╕рд┐рдВрдХ рдЪреИрдирд▓ рдирд╣реАрдВ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ GM_setValue рдФрд░ GM_getValue рдХреЛ рд╕рд┐рдВрдХ рдСрдкрд░реЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд╕рд┐рдВрдЧрд▓ рдкреНрд░реЛрд╕реЗрд╕реЗрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╡реЗ рдареАрдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рд╣рдо рдХрдИ рдЯреИрдм рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди e10s рдореЗрдВ рдирд╣реАрдВ (https://github.com/greasemonkey /рдЧреНрд░реАрд╕рдореЛрдирдХреА/рдореБрджреНрджреЛрдВ/2427)ред рдкреБрд░рд╛рдиреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди API рд╕реЗ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд░рд┐рдкреЗрдпрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди WebExt рдореЗрдВ рдирд╣реАрдВред рд╕рд┐рдВрдХ рд╕рдВрджреЗрд╢ рдХреЗ рдмрд┐рдирд╛ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЫреЛрдЯреЗ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдХрдо рдореВрд▓реНрдп рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░реЗрдВ) рд╣рдо рдЕрдзрд┐рдХ рдЯреИрдм рдХреЗ рдмреАрдЪ рдореВрд▓реНрдп рдХреЛ рдареАрдХ рд╕реЗ рд╕рд┐рдВрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдпрд╣ рд╣рдореЗрд╢рд╛ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реЛрдЧреАред

рднрд▓реЗ рд╣реА рдЖрдк WebExt рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рдореБрджреНрджреЛрдВ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ, рд╣рдореЗрдВ рдПрд╕рд┐рдВрдХ рддрд░реАрдХреЗ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдирдпрд╛ рд╕реЗрдЯ/рдкреНрд░рд╛рдкреНрдд рд╡рд┐рдзрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдЬрд╣рд╛рдВ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрд╕рд┐рдВрдХ рддрд░реАрдХреЗ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдХрдИ рдЯреИрдм рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ GM_setValue рдФрд░ GM_getValue рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдХрдореА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдЖрдИрдПрдордУ, рдпрд╣ рджреБрд░реНрд▓рдн рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬреЛ рдХрдИ рдЯреИрдм рдкрд░ GM_setValue / GM_getValue рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрджреЗрд╢ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдирддреАрдЬрддрди, рд╕рд╛рдордЧреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ _GM_values_ рдХреА рдПрдХ рдкреНрд░рддрд┐ (рдХреИрд╢) рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛, рд╣рдореЗрд╢рд╛ рдХреИрд╢ рд╕реЗ рдкрдврд╝рдирд╛, async рд╡рд╛рдкрд╕ рд▓рд┐рдЦрдирд╛, рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЯреНрд░рд┐рдЧрд░ рдХреА рдЧрдИ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреИрд╢ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред


рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ GM_addValueChangeListener рдмрд░рд╛рдмрд░ рдПрдХ рдПрдкреАрдЖрдИ рдЬреЛрдбрд╝реЗрдВ рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред (рдФрд░ рдореБрдЭреЗ addValueChangeListener рдирд╛рдо рдирд╛рдкрд╕рдВрдж рд╣реИ, рд╢рд╛рдпрдж рдХреБрдЫ рдФрд░ рдмреЗрд╣рддрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рдореЗрд░реА рджреЗрд╡ рд╢рд╛рдЦрд╛ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИ:

  • GM.getResourceURL
  • GM.deleteValue , GM.getValue , GM.listValues , GM.setValue

рдореИрдВ рдХрднреА рдирд╣реАрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ:

  • GM_log
  • GM_addStyle

рд╣рдореЗрдВ рдЕрднреА рднреА рдЪрд╛рд╣рд┐рдП :

  • GM_xmlhttpRequest

рдореИрдВ рджреЗрд░реА рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ (рдпрд╛ рд╢рд╛рдпрдж рдбреНрд░реЙрдк):

  • GM_registerMenuCommand (рдпрд╣ рд╣рдореЗрд╢рд╛ рдПрдХ рдмрдбрд╝реА рд╕рдорд░реНрдерди рд▓рд╛рдЧрдд рд░рд╣реА рд╣реИ)
  • GM_getResourceText

рдпрд╛рдиреА рдпрд╣рд╛рдВ рдкреНрд░рдЧрддрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдлреА рдХрд░реАрдм рд╣реИред

рдЙрдкрд░реЛрдХреНрдд рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдкрд░ рдЕрдЪреНрдЫреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рдордд рднреВрд▓рдирд╛ред

рдореИрдВрдиреЗ рдЕрднреА рдирдП рдРрдб-рдСрди рдкрд░ рдПрдХ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрд░реЙрд╕ рдбреЛрдореЗрди xhr рдЕрдиреБрд░реЛрдз GM_xhr рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдкрд╣рд▓реЗ рд╣реА рд╕рдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ?

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдмрд╕ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрджрд╛рди рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

fetch(prompt()).then(resp => resp.text()).then(text => alert(text)).catch(error => alert(error));

рдЙрд╣, рдкреБрд╖реНрдЯрд┐ рдХреАред рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ "рд╕рд╛рдордЧреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ" рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ -- рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА, рд╕рднреА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рдеред

рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдереЛрдбрд╝рд╛ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдореИрдВ рдЕрдВрдзреЗрд░реЗ рдореЗрдВ рд╣реВрдВ рдХрд┐ рдХреИрд╕реЗ рдЕрдирдкреЗрдХреНрд╖рд┐рдд ("рд╡реЗрдм рд╕реНрдХреЛрдк" рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП - рдЕрдм рд╣рдо рдЗрд╕реЗ рдХреНрдпрд╛ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ "рдХрдВрдЯреЗрдВрдЯ" рд╕реНрдХреЛрдк рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ?!) рдХреЛрдбред рд╕рдмрд╕реЗ рдирдЬрд╝рджреАрдХреА рдЪреАрдЬрд╝ рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ, рд╡рд╣ рд╣реИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдмрдирд╛рдирд╛, рдЬрд┐рд╕реЗ рдкреЗрдЬ рдХреЗ рд╕реАрдПрд╕рдкреА рджреНрд╡рд╛рд░рд╛ рдмреНрд▓реЙрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ/рд╣реЛрдЧрд╛, рдЬреЛ рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реАрдПрд╕рдкреА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд░ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдирд╛ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реИред рд╡реЗрдм рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╕рд╛рдордЧреНрд░реА рд╕реАрдПрд╕рдкреА рд╕реЗ рдЫреВрдЯ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд▓реЗ рдореБрджреНрджреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрди рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ <script> рдЯреИрдЧ window.eval рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкреЗрдЬ рд╕реНрдХреЛрдк рдореЗрдВ рднреА рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╢рдмреНрдж "рдХрдВрдЯреЗрдВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдХреЛрдк" рдмрдирд╛рдо "рдкреЗрдЬ рд╕реНрдХреЛрдк" рд╣реИрдВред

рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЕрд▓рдЧ рджрд╛рдпрд░реЗ рдореЗрдВ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧ-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЛ рдЬреАрдПрдо рдПрдкреАрдЖрдИ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХреЗред

рдореИрдВрдиреЗ рд╡реЗрдмрдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ Sandbox рд╕рдордХрдХреНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдЧ рднреА рджрд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рднреА рдирд╣реАрдВ рд╣реИред

AIUI рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ eval рджреЛрдиреЛрдВ рд╣реА CSP рджреНрд╡рд╛рд░рд╛ рдмреНрд▓реЙрдХреЗрдЬ рдХреА рдЪрдкреЗрдЯ рдореЗрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдкреБрд╖реНрдЯрд┐ рдХреА рд╣реИ рдХрд┐ eval рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

https://bugzilla.mozilla.org/show_bug.cgi?id=1391669

рдпрджрд┐ рд╣рдо рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рдкреГрд╖реНрда рдкрд░ рд╕рд╛рдордЧреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ <all_urls> рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░реА рд╕рд╛рдордЧреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╡рд╣ рдорд┐рд▓ рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ XHR рдХрд╣реАрдВ рднреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

рдХрдо рд╕реЗ рдХрдо рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ ( https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_scripts#Using_eval ()_in_content_scripts ) рд╣рдо рдкреЗрдЬ рд╕реНрдХреЛрдк рдкрд░ рдбреНрд░реЙрдк рдбрд╛рдЙрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреЗрдЬ рд╕реНрдХреЛрдк рд╣реИрдВ рдФрд░ рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдкреАрдЖрдИ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдмреЗрдирдХрд╛рдм рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рдкреГрд╖реНрда (AFAIK) рдореЗрдВ рдЪрд▓ рд░рд╣реА рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝/рд╕рдм рдХреБрдЫ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд┐рдП рдмрд┐рдирд╛, рдЬреЛ рдФрд░ рднреА рдмрджрддрд░ рд╣реИред

рдХреНрдпрд╛ рд╕рд╛рдордЧреНрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд╛рдиреЗ рдФрд░ xhr рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рдлрд╝реЗрдЪ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ рдЬреЛ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рд╕реАрдУрдЖрд░рдПрд╕ рдЬрд╛рдВрдЪ рдХрд░реЗред

  • GM.xmlhttpRequest() рдХреЛ 60a50d05b1e565571d8a3e638b0683a1a9c2beaa рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛
  • GM.getResourceText() рдХреЛ #2548 . рдореЗрдВ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
  • GM.registerMenuCommand() рдХреЛ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
  • рдХреНрд░реЙрд╕-рдУрд░рд┐рдЬрд┐рдирд▓-рдлрд╝реЗрдЪ (рдЙрдкрд░реЛрдХреНрдд рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЕрдиреБрд╕рд╛рд░) рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ #2549 . рд╣реИ

@ the8472 https://github.com/greasemonkey/greasmonkey/issues/2232#issuecomment -326841025 рдореЗрдВ withUnsafeWindow() рдХреЗ рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦреЗрдВ

рдпрд╣ рдкреБрд░рд╛рдиреЗ with (object) ... рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдирдХрд▓ рдХрд░рддрд╛ рд╣реИ, рдмрд╕ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╕реБрд░рдХреНрд╖рд┐рддред (рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред)

@arantius рдиреЗ 25 рдЬреБрд▓рд╛рдИ рдХреЛ рд▓рд┐рдЦрд╛ рдерд╛:

рдореИрдВ рдХрднреА рдирд╣реАрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ:

GM_log
GM_addStyle

рдЗрдиреНрд╣реЗрдВ рдЗрд╕ рдЯрд┐рдХрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ ( 3 рдорд╛рд░реНрдЪ рдХреЛ @arantius рджреНрд╡рд╛рд░рд╛) рддреБрдЪреНрдЫ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ (GM_log рд╕реЗ рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ рдХреА рдореИрдкрд┐рдВрдЧ рдорд╛рдирддреЗ рд╣реБрдП)ред

рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ, рдпреЗ рджреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА API рдХреЙрд▓ рд╣реИрдВред рдХреНрдпрд╛ рдЙрдиреНрд╣реЗрдВ рдЫреЛрдбрд╝рдирд╛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрд╛рд░рдг рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реА рдкреБрд░рд╛рдиреА рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рддреЛрдбрд╝ рджреЗрдирд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛? рдпрд╛ рдЖрдк рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджреЗрд╡ рд╢рд╛рдЦрд╛ рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣реЗ рдереЗ?

Tampermonkey рдореЗрдВ, GM_addStyle рдореЗрдВ рд╢реИрд▓реА рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХреНрд╖рдорддрд╛ рд╣реИ рдЬреЛ CSP рдкреНрд░рддрд┐рдмрдВрдз рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░ рд╕рдХрддреА рд╣реИ (рдпрджрд┐ рдЗрдирд▓рд╛рдЗрди <style> рдирд┐рд╖рд┐рджреНрдз рд╣реИ)ред рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Greasemonkey рдореЗрдВ рднреА рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

makyen picture makyen  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

byzod picture byzod  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

moham96 picture moham96  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

GuardianMajor picture GuardianMajor  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

darkred picture darkred  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ