рд╕рднреА рд╣реИрдмрд░ рд░реАрдбрд░ рдХреЛ рдореЗрд░рд╛ рдирдорд╕реНрдХрд╛рд░ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдЕрдкрдирд╛ рдСрдирд▓рд╛рдЗрди рдХреЛрдб рд╕рдВрдкрд╛рджрдХ рд▓рд┐рдЦреЗрдВрдЧреЗред
рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдСрдирд▓рд╛рдЗрди рдХреЛрдб рд╕рдВрдкрд╛рджрдХ рдХреНрдпреЛрдВ рд▓рд┐рдЦрд╛?
рдПрдХ рджрд┐рди рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ jsfiddle рдЬреИрд╕реЗ рдЕрдкрдиреЗ рдСрдирд▓рд╛рдЗрди рд╕рдВрдкрд╛рджрдХ рдХреЛ рдмрдирд╛рдирд╛ рдХрд┐рддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд╕рдВрдкрд╛рджрдХ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореЗрд░реЗ рд╕рдВрдкрд╛рджрдХ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдореБрдЭреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЕрдЪреНрдЫрд╛ рдЬреНрдЮрд╛рди рдФрд░ рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдБ рдорд┐рд▓реАрдВред
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЪрдпрди
рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЪрдпрди рдЕрдкрдиреЗ рдХреЛрдб рд╕рдВрдкрд╛рджрдХ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдЖрдк рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рдмрдВрдзрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕рдВрдкрд╛рджрдХ рдЗрддрдирд╛ рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рджреЛ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ -
рдХреЛрдбрдорд┐рд░рд░ рдФрд░
рдРрд╕ ред рдореЗрд░реА рдкрд╕рдВрдж рдРрд╕ рдкрд░ рдЧрд┐рд░ рдЧрдИред
рд╢реБрд░реБрдЖрдд
рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рд╣рдореЗрдВ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рд╡рд╣ рд╣реИ рдЗрдХреНрдХрд╛ рдФрд░ рд╣рдорд╛рд░реА рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ред
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> </title> <link rel="stylesheet" href="css/style.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="https://rawgithub.com/ajaxorg/ace-builds/master/src/ext-language_tools.js" type="text/javascript" charset="utf-8"></script> <script src="https://rawgithub.com/ajaxorg/ace-builds/master/src/ace.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.3.3/ace.js"></script> <meta name="viewport" content="width=device-width, initial=scale=1"> </head>
рдЕрдм рд╣рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрдирд╛рд╡рдЯ рдФрд░ рд╕реЗрдЯ рд╕реНрдЯрд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдпрд╣ рдХреЛрдб рдЖрдЙрдЯрдкреБрдЯ HTML рдХреЛрдб рдХреЗ рд▓рд┐рдП textarea рдмрдирд╛рдПрдЧрд╛ред
<style type="text/css" media="screen"> #html-editor{ min-height: 40vh; width: 35%; } #result { background-color: white; width: 100%; height: 50vh; } </style> <div id="html-editor"></div> <div id="result-block"> <iframe id="result" frameborder="0"></iframe> </div> <br>
рдЖрдЦрд┐рд░реА рдЪреАрдЬ рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ рд╡рд╣ рд╣реИ js рдХреЛрдб рдЬреЛрдбрд╝рдирд╛ред
var htmlEditor = ace.edit("html-editor"); htmlEditor.setTheme("ace/theme/monokai"); htmlEditor.session.setMode("ace/mode/html"); htmlEditor.getSession().on('change', function() { update(); }) function update() { var res = document.getElementById('result').contentWindow.document; res.open(); res.write(htmlEditor.getValue()); res.close(); } update();
рдЕрдм, рдЬрдм рд╣рдо рдЗрд╕ textarea рдореЗрдВ html рдХреЛрдб рд▓рд┐рдЦреЗрдВрдЧреЗ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдПрдХ iframe рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдЧрд╛ред
рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рдХрд╛рд░реНрдп:ace.edit (); Document.getElementById рдХреА рддрд░рд╣ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрдХреНрдХрд╛ рдХреЗ рд▓рд┐рдПред
htmlEditor.setTheme () - рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╡рд┐рд╖рдп рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ (рд╕рднреА рд╡рд┐рд╖рдп рдЙрдирдХреЗ github рдкрд░ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ -
https://github.com/ajaxorg/ace )
htmlEditor.session.setMode () - рднрд╛рд╖рд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред
htmlEditor.getSession ()ред ('рдкрд░рд┐рд╡рд░реНрддрди', рдлрдВрдХреНрд╢рди () {
// рдХреЛрдб
})
- рдПрдХ iframe рдкрд░ рджрд░реНрдЬ рдХреЛрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЖрдЗрдП 2 рдФрд░ рдРрд╕реЗ рдлрд╝реАрд▓реНрдбреНрд╕ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЕрдм рдХреЗрд╡рд▓ рдПрдХ рдлрд╝реАрд▓реНрдб css рдХреЛрдб рдХреЗ рд▓рд┐рдП рдФрд░ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЗ рд▓рд┐рдПред
рдкреВрд░рд╛ рдХреЛрдб
index.php
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> </title> <link rel="stylesheet" href="css/style.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="https://rawgithub.com/ajaxorg/ace-builds/master/src/ext-language_tools.js" type="text/javascript" charset="utf-8"></script> <script src="https://rawgithub.com/ajaxorg/ace-builds/master/src/ace.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.3.3/ace.js"></script> <meta name="viewport" content="width=device-width, initial=scale=1"> </head> <body> <style type="text/css" media="screen"> #html-editor, #css-editor, #js-editor { min-height: 40vh; width: 35%; } #result { background-color: white; width: 100%; height: 50vh; } .all_editors { display: flex; } </style> <div class="all_editors"> <div id="html-editor"></div> <div id="css-editor"></div> <div id="js-editor"></div> </div> <div id="result-block"> <iframe id="result" frameborder="0"></iframe> </div>
app.js
var htmlEditor = ace.edit("html-editor"); htmlEditor.setTheme("ace/theme/monokai"); htmlEditor.session.setMode("ace/mode/html"); var cssEditor = ace.edit("css-editor"); cssEditor.setTheme("ace/theme/monokai"); cssEditor.session.setMode("ace/mode/css"); var jsEditor = ace.edit("js-editor"); jsEditor.setTheme("ace/theme/monokai"); jsEditor.session.setMode("ace/mode/javascript"); htmlEditor.getSession().on('change', function() { update(); }) cssEditor.getSession().on('change', function() { update(); }) jsEditor.getSession().on('change', function() { update(); }) function update() { var res = document.getElementById('result').contentWindow.document; res.open(); res.write('<style>' + cssEditor.getValue() + '</style>'); res.write('<script>' + jsEditor.getValue() + '</script>'); res.write(htmlEditor.getValue()); res.close(); } update();
рдпрд╣ рдЖрдкрдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХреЛрдб рд╕рдВрдкрд╛рджрдХ рдмрдирд╛рдиреЗ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдХреЛрдб рдХреЛ рд╕реЗрд╡ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░реЗрдВрдЧреЗ рдФрд░ рдкреЗрдЬ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдХреЗ рдЗрди 3 рдлрд╝реАрд▓реНрдбреНрд╕ рдореЗрдВ рдХреЛрдб рдбрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╣рдо рдЗрд╕ рдХреЛрдб рдХреЛ рдлрд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рднреА рдХрд░реЗрдВрдЧреЗред
рдХреЛрдб рдПрдбрд┐рдЯрд░ рдЬреЛ рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ