рдХреБрдВрдЬреА | рдореВрд▓реНрдп
-- | --
рд╕рд┐рд╕реНрдЯрдо рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдо | рдПрдПрдордбреА 64, рд╡рд┐рдВрдбреЛрдЬ-10-10.0.14393
рдмреНрд░рд╛рдЙрдЬрд╝рд░ | рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдбреЗрд╡рд▓рдкрд░ рд╕рдВрд╕реНрдХрд░рдг (55.0 рдмреАрдЯрд╛ 1, 64 рдмрд┐рдЯ)
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯ | Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55.0
рд╡рд┐рдиреНрдпрд╛рд╕ рдмрдирд╛рдПрдБ | https://hg.mozilla.org/releases/mozilla-beta/rev/6872377277a618b2b9e0d2b4c2b9e51765ac199e
рддреЗрд▓ рдмрдВрджрд░ | 3.11
// ==UserScript==
// <strong i="15">@name</strong> HeadTest
// <strong i="16">@namespace</strong> HeadTest
// <strong i="17">@include</strong> *
// @run-at document-start
// <strong i="18">@version</strong> 1
// <strong i="19">@grant</strong> none
// ==/UserScript==
AddGlobalStyle('body{background-color:red;}');
function AddGlobalStyle(css) {
var head, style;
head = document.getElementsByTagName("head")[0];
console.log("[Test]: Head: %o", head); //DEBUG
console.log("[Test]: document.head: %o", document.head); //DEBUG
}
[Test]: Head: <head>
[Test]: document.head: <head>
[Test]: Head: undefined
[Test]: document.head: null
рдпрд╣ рд╕рдорд╕реНрдпрд╛ GM_addStyle
. рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ
рдЕрдВрддрд┐рдо рдЕрдЪреНрдЫрд╛: рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ 55.0a1 (2017-03-17)
https://hg.mozilla.org/mozilla-central/rev/39607304b774591fa6e32c4b06158d869483c312 рд╕реЗ рдмрдирд╛рдПрдВ
рдкрд╣рд▓рд╛ рдЦрд░рд╛рдм: рдлрд╛рдпрд░рдлреЙрдХреНрд╕ 55.0a1 (2017-03-17)
https://hg.mozilla.org/mozilla-central/rev/23a4b7430dd7e83a2809bf3dc41471f154301eda рд╕реЗ рдмрдирд╛рдПрдВ
рдкреБрд╢рд▓реЙрдЧ:
https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=39607304b774591fa6e32c4b06158d869483c312&tochange=23a4b7430dd7e83a2809bf3dc41471f154301eda
рдмрдЧ 1333990 рд╕рдВрджрд┐рдЧреНрдз рд╣реИред
рдпрд╣ рднреА рджреЗрдЦреЗрдВ #1849
@janekptacijarabaci рдПрдХ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛:
setTimeout(()=>{
AddGlobalStyle('body{background-color:red;}');
});
рдпрд╣ рдЕрд╕реНрдерд┐рд░ рдФрд░ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЪреАрдЬреЛрдВ рдХреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
... рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЕрднреА рднреА рдЧрд▓рдд рд╣реИред
https://developer.mozilla.org/en-US/docs/Observer_Notifications#Documents
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдмрдЧ рд╣реИред document-start
рдмрд╣реБрдд рдкрд╣рд▓реЗ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдХрд┐рд╕реА рднреА рд╕рд╛рдордЧреНрд░реА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреГрд╖реНрда рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдмрд╛рдж рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдмрд╕ document-end
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдпрд╛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рддрддреНрд╡ рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
@the8472
рд╢рд╛рдпрдж рдЖрдк рдареАрдХ рдХрд╣ рд░рд╣реЗ рд╣реИрдВред
рдПрдордбреАрдПрди рдХреЗ рдЕрдиреБрд╕рд╛рд░:
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝-рддрддреНрд╡-рд╕рдореНрдорд┐рд▓рд┐рдд
рдХрд┐рд╕реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдореВрд▓ рддрддреНрд╡ рдмрдирдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗред
document-start
( document-element-inserted
рдкрд░ рдЖрдзрд╛рд░рд┐рдд) <html></html>
рдмрдирдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ рд╕рдордп, <head>
рд╢реВрдиреНрдп рд╣реИред
рд▓реЗрдХрд┐рди рдпрд╣ рдХрдИ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ рдЬреЛ рдкреГрд╖реНрда рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╢реИрд▓реА рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ (рдпрджрд┐ рдЖрдк GM_addstyle
document-end
рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдкреГрд╖реНрда рдмреНрд▓рд┐рдВрдХ рдХрд░ рд░рд╣рд╛ рд╣реИ) рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЬрд╛рдирдмреВрдЭрдХрд░ рд╣реИ
GM_addStyle рд╡реИрд╕реЗ рднреА рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ <style>
рдЯреИрдЧ рдХреЛ <head>
рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЖрдк рд╕реНрд╡рдпрдВ рдПрдХ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЪрд┐рдВрддрд╛ рд╣реИ рддреЛ рдЗрд╕реЗ <head>
рдЙрдкрдпреЛрдЧ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред
@ the8472 рдпрджрд┐ рд╡рд░реНрддрдорд╛рди document-start
рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рд╣реА рдФрд░ рдЬрд╛рдирдмреВрдЭрдХрд░ рд╣реИ, рддреЛ рд╣рдореЗрдВ рд╣рд░ рдмрд╛рд░ рд╢реИрд▓реА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдХреБрдЫ рдЗрд╕ рддрд░рд╣
function addGlobalStyle(css){
let headHunter = new MutationObserver(
records => {
; check mutation records
; is added node's tag name 'head'?
; create a style node then throw it in
; then disconnect us
}
);
headhunter.observer(document, {childlist : true});
}
document-end
рд╕реЗ рдкрд╣рд▓реЗ рд╢реИрд▓реА рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╡рд╣ рдЙрдмрд╛рдК рд╣реИред
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ GM_addstyle
рдореЗрд░реЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рд╡рд┐рдХреА рдореЗрдВ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдЪреЗрддрд╛рд╡рдиреА рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИ ("GM_addstyle @run-at document-start рд╡рд╛рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, рд╕реНрд╡рдпрдВ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬреЗрдВ ", рдЖрджрд┐)
рд╣рд╛рдВ, gm_addstyle рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд▓реЗрдХрд┐рди рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛ рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддреА рд╣реИ, рдЙрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝-рд╕реНрдЯрд╛рд░реНрдЯ рдкрд░ рднреА рдЙрд╕реА рд╣реБрдкреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреВрджрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЙрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╡рд┐рд╢реЗрд╖ рдирд╣реАрдВ рд╣реИред DOM рдореЗрдВ рд╕реЗ рдХреБрдЫ рднреА рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЬреЛ рдХреБрдЫ рднреА рдЪрд╛рд╣рд┐рдП рдЙрд╕рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреА рд╣реЛрдЧреАред рдпрд╛рдиреА рдЖрдкрдХреЛ рд╡реИрд╕реЗ рднреА рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рджрд╕реНрддрд╛рд╡реЗрдЬрд╝-рд╢реБрд░реВ рдореЗрдВ рдЪреАрдЬреЗрдВ рдЪрд▓рд╛рддреЗ рд╣реИрдВред
рд╡рд┐рд╕реНрддреГрдд рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдпрд╣ WAI рд╣реИ, рдФрд░ 3.x рд╢рд╛рдЦрд╛ рд╡реИрд╕реЗ рднреА ~ рдореГрдд рд╣реИред (рдореИрдВ, рдПрдХ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдирдП рд╡реЗрдм рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЕрдзрд┐рдкрддрд┐ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░рддрд╛ рд╣реВрдВред) GM_addStyle
рдЬреИрд╕реА рдЪреАрдЬреЗрдВ 4.x рдореЗрдВ рдХрднреА рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрдиреЗ рд╕реЗ рддрдп рдХреА рдЬрд╛рдПрдВрдЧреАред
https://arantius.com/misc/greasemonkey/amazon-url-cleaner.user.js рдЬреИрд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореМрдЬреВрдж рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ DOM рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ ASAP рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@ the8472 рдпрджрд┐ рд╡рд░реНрддрдорд╛рди
document-start
рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рд╣реА рдФрд░ рдЬрд╛рдирдмреВрдЭрдХрд░ рд╣реИ, рддреЛ рд╣рдореЗрдВ рд╣рд░ рдмрд╛рд░ рд╢реИрд▓реА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИрдХреБрдЫ рдЗрд╕ рддрд░рд╣
document-end
рд╕реЗ рдкрд╣рд▓реЗ рд╢реИрд▓реА рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╡рд╣ рдЙрдмрд╛рдК рд╣реИредрдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐
GM_addstyle
рдореЗрд░реЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рд╡рд┐рдХреА рдореЗрдВ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдЪреЗрддрд╛рд╡рдиреА рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИ ("GM_addstyle @run-at document-start рд╡рд╛рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, рд╕реНрд╡рдпрдВ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬреЗрдВ ", рдЖрджрд┐)