рдкреЗрдЬрдХрд┐рдЯ - рд╕реНрд╡-рд╣реЛрд╕реНрдЯреЗрдб GrapesJS рд╕рд╛рдЗрдЯ рдмрд┐рд▓реНрдбрд░, рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдмреЗрдЪрд╛ рдЧрдпрд╛ред рдЬрд▓реНрджреА рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рдЕрдВрдХ #721ЁЯТм рдЙрддреНрддрд░ рджрд┐рдпрд╛рдЦреЛрд▓рд╛ рдЧрдпрд╛ 5 рдЬрдирд╡рд░реА 2018рджреНрд╡рд╛рд░рд╛ wvaymen0 рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ

рдШрдЯрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ JS рдЬреЛрдбрд╝рдирд╛

рддреНрд╡рд░рд┐рдд рдЙрддреНрддрд░рджреНрд╡рд╛рд░рд╛ artf

@wvaymen рдЬрд╝рд░реВрд░, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛

рдиреАрдЪреЗ рдкреВрд░рд╛ рдЙрддреНрддрд░ рдкрдврд╝реЗрдВ тЖУ

рдкреНрд░рд╢реНрди

рдореЗрд░реЗ рдкрд╛рд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЗрдПрд╕ рдХреЛ GrapesJs рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╡рд╛рд▓ рд╣реИред рдХреНрдпрд╛ рдореИрдВ рдлрд╝рдВрдХреНрд╢рди editor.getComponents().add() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ grapesJS рдореЗрдВ <рд╕реНрдХреНрд░рд┐рдкреНрдЯ> рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрдЬреЗрдХреНрд╢рди рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реВрдВред document.createElement('рд╕реНрдХреНрд░рд┐рдкреНрдЯ')

рдЬрд╡рд╛рдм (2)

artfтАв 8 рдЬрдирд╡рд░реА 2018

@wvaymen рдЬрд╝рд░реВрд░, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛

const editor = grapesjs.init({
	...
	allowScripts: 1,
});
editor.addComponents('<script>alert(1)</script>');
lock[bot]тАв 18 рд╕рд┐рддрдореНрдмрд░ 2019

рдпрд╣ рдереНрд░реЗрдб рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХреЛрдИ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реБрдИ рд╣реИ. рдХреГрдкрдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдмрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВ.

рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╢реНрди рдФрд░ рдЙрддреНрддрд░

рдЗрд╕реА рддрд░рд╣ рдХреА рдореБрджреНрджреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╢реЛрдз рдЬрд╛рд░реА рд░рдЦреЗрдВред

рдЕрдВрдХ #1025

рдХрд╕реНрдЯрдо рдмреНрд▓реЙрдХ рдореЗрдВ рдирдП рд▓рдХреНрд╖рдг рдХреИрд╕реЗ рдЬреЛрдбрд╝реЗрдВ

grapesjs.plugins.add('рдХрд╕реНрдЯрдордмреНрд▓реЙрдХреНрд╕', рдлрд╝рдВрдХреНрд╢рди (рд╕рдВрдкрд╛рджрдХ, рд╡рд┐рдХрд▓реНрдк) { рд╡рд┐рдХрд▓реНрдк = рд╡рд┐рдХрд▓реНрдк || {}; рд▓рдХреНрд╖рдг-рдкреНрд░рддрд┐рдШрдЯрдХ(); addHTMLCodeComponent(); addHTMLCod...

3 рдЙрддреНрддрд░рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ 17 рд╕рд┐рддрдореНрдмрд░ 2019

рдЕрдВрдХ #1584

Editor.getComponents() рд╕реЗ рдмреНрд▓реЙрдХ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣реА рд╣реИ

рдиреАрдЪреЗ рд╡рд╣ рдШрдЯрдХ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВред this.editor.BlockManager.add('dob-mmyy-pii', { рдЖрдИрдбреА: 'рдбреЛрдм-рдПрдордПрдорд╡рд╛рдИ', рд▓реЗрдмрд▓: DOB (MM, YYYY) (PII), рд╢реНрд░реЗрдг...

3 рдЙрддреНрддрд░рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ 19 рдирд╡рдореНрдмрд░ 2019

рдЕрдВрдХ #743

Editor.getComponents() load multiple times when refreshed.

рдирдорд╕реНрдХрд╛рд░ editor.getComponents().add('<div class="grid-stack" style="height:800px;"></div>'); рддрд╛рдЬрд╝рд╛ рд╣реЛрдиреЗ рдкрд░ рдХрдИ рдмрд╛рд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЗрд╕реЗ рдХреИрд╕реЗ рд░реЛрдХреЗрдВред...

3 рдЙрддреНрддрд░рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ 18 рд╕рд┐рддрдореНрдмрд░ 2019

рдЕрдВрдХ #1771

рд▓рдХреНрд╖рдг рдкреНрд░рдХрд╛рд░: рдмрдЯрди рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ

рд╣рд╛рдп, @artf рдЬрдм рдореИрдВ рдмрдЯрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд╛рдпрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЗрд╕рдореЗрдВ рдореЗрд░реА...

2 рдЙрддреНрддрд░рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ 7 рдлрд╝рд░рд╡рд░реА 2020

рд╕рд╢реБрд▓реНрдХ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ

рд╕рдорд╕реНрдпрд╛ рдХреАрд╡рд░реНрдб рдФрд░ рд▓реЗрдмрд▓ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рджреНрд╡рд╛рд░рд╛ рдХреНрдпреВрд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдкрдХреЛ рддреЗрдЬрд╝реА рд╕реЗ рд╢рд┐рдк рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓ рд╕рдХреЗред

рд╕рднреА рдкреНрд▓рдЧрдЗрдиреНрд╕ рджреЗрдЦреЗрдВ

рд╕рд╢реБрд▓реНрдХ рдкреНрд▓рдЧрдЗрди рдЕрдиреБрд╢рдВрд╕рд╛рдПрдБ рд▓реЛрдб рд╣реЛ рд░рд╣реА рд╣реИрдВ ...

рдирд┐рдГрд╢реБрд▓реНрдХ рд╡рд┐рдХрд▓реНрдк

рдУрдкрди-рд╕реЛрд░реНрд╕ GrapesJS рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ GitHub рдпрд╛ рд╣рдорд╛рд░реЗ рдореБрдлреНрдд рдХреИрдЯрд▓реЙрдЧ рдореЗрдВ рдПрдХ рддреНрд╡рд░рд┐рдд рдЦреЛрдЬ рдЪрд▓рд╛рдПрдВред

рдореБрдлреНрдд рдкреНрд▓рдЧрдЗрдиреНрд╕ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░реЗрдВ тЖТ
рдкреНрд░реАрдорд┐рдпрдо рд╡рд┐рдХрд▓реНрдк

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

рдкреНрд░реАрдорд┐рдпрдо рдкреНрд▓рдЧрдЗрдиреНрд╕ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░реЗрдВ тЖТ

рд╕рдВрдмрдВрдзрд┐рдд рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓

рдПрдХ рд╣реА рд╡рд┐рд╖рдп рдкрд░ рдЧрд╣рди рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛рдПрдБред

рд╕рднреА рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ тЖТ

рдмреНрд░рд╛рдЙрдЬрд╝ рдкреНрд▓рдЧрдЗрди рд╢реНрд░реЗрдгрд┐рдпрд╛рдБ

рд╕реАрдзреЗ рдмрд╛рдЬрд╝рд╛рд░ рдкрд░ рдкреНрд▓рдЧрдЗрди рд╢реНрд░реЗрдгреА рдХреЗ рдкреГрд╖реНрдареЛрдВ рдкрд░ рдЬрд╛рдПрдБред