рдЕрдкрдиреЗ jsfiddle рдмрдирд╛рдирд╛, рднрд╛рдЧ 2

рд╕рднреА рд╣рдмреНрдмрд░ рдкрд╛рдардХ рдХреЛ рдореЗрд░рд╛ рдирдорд╕реНрдХрд╛рд░ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рдСрдирд▓рд╛рдЗрди рдХреЛрдб рд╕рдВрдкрд╛рджрдХ рдХреЛ рд▓рд┐рдЦрдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдХреЛрдб рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░реЗрдВрдЧреЗ рдФрд░ рдкреЗрдЬ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдХреЗ рдЗрди 3 рдлрд╝реАрд▓реНрдбреНрд╕ рдореЗрдВ рдХреЛрдб рдбрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╣рдо рдЗрд╕ рдХреЛрдб рдХреЛ рдлрд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рднреА рдХрд░реЗрдВрдЧреЗред

рдкрд╣рд▓реЗ рднрд╛рдЧ рд╕реЗ рдХреЛрдб рдмрджрд▓рддрд╛ рд╣реИ


рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдВрддрд┐рдо рднрд╛рдЧ рдореЗрдВ, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдХреЛрдб рдЦреЗрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рджреЗрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ред

рдирдпрд╛ рдХреЛрдб:

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"); function playCode() { 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(); } } setTimeout(playCode, 2000); 

рдЕрдм рдирдП рдХреЛрдб рдкрд░ рдЖрдЧреЗ рдмрдврд╝реЗрдВред

рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рд╕реЗрд╡рд┐рдВрдЧ рдХреЛрдб


Js рдХреЛрдб рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдПрдХ рдмрдЯрди рдмрдирд╛рдПрдВрдЧреЗ, рдЬрд┐рд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ, рдХреЛрдб рдХреЛ рд╕реЗрд╡ рдХрд░реЗрдЧрд╛

 <ul> <li class="save" id="save_code"> </li> </ul> 

рдЕрдм рд╣рдо рдПрдХ рдХреЛрдб рдЬреЛрдбрд╝реЗрдВрдЧреЗ рдЬреЛ рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬреЗрдЧрд╛ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рд▓реЗрдЧрд╛ред

 var saveBtn = document.getElementById('save_code'); saveBtn.addEventListener("click", () => { var htmlSave = htmlEditor.getValue(); var cssSave = cssEditor.getValue(); var jsSave = jsEditor.getValue(); localStorage.setItem('htmlSave', htmlSave); localStorage.setItem('cssSave', cssSave); localStorage.setItem('jsSave', jsSave); alert(' !'); }); window.onload = () => { var htmlSave = (localStorage.getItem("htmlSave")); var cssSave = (localStorage.getItem("cssSave")); var jsSave = (localStorage.getItem("jsSave")); htmlEditor.session.replace(new ace.Range(0, 0, 1, 1), htmlSave); cssEditor.session.replace(new ace.Range(0, 0, 1, 1), cssSave); jsEditor.session.replace(new ace.Range(0, 0, 1, 1), jsSave); } 

рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рдХрд╛рд░реНрдп:

localStorage.setItem ('htmlSave', htmlSave); - рдпрд╣ рдХреЛрдб рд╕реНрдерд╛рдиреАрдп рдХреЛрдб рдореЗрдВ html рдХреЛрдб рднреЗрдЬрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ 'htmlSave' рд╕реНрдерд╛рдиреАрдпрд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдЪрд░ рдХрд╛ рдирд╛рдо рд╣реИ, рдФрд░ HTMLSave рд╡рд╣ рдЪрд░ рд╣реИ рдЬреЛ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдХреЛрдб рд▓реЗрддрд╛ рд╣реИ (рд╣рдордиреЗ рдЗрд╕реЗ рдпрд╣рд╛рдВ рдХрд╣рд╛: var htmlSave = htmlEditor.getValue ();)

localStorage.getItem ("htmlSave") - рдпрд╣ рдХреЛрдб localStorage рд╕реЗ htmlSave рдЪрд░ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

htmlEditor.session.replace (рдирдпрд╛ рдРрд╕.рд░реЗрдВрдЬ (0, 0, 1, 1), htmlSave); - рдлрд╝реАрд▓реНрдб рдХреЗ рдХреЛрдб рдХреЛ рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рдХреЛрдб рд╕реЗ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред

рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб


рдЕрдм рд╣рдо рдПрдХ рдлрдВрдХреНрд╢рди рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рдПрдХ рдлрд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ html, css, js рдХреЛрдб рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рд╣рдореЗрдВ htmlup рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

 <ul> <li id="save_code"> </li> <li id="download_html">  Html </li> <li id="download_css">  Css </li> <li id="download_js">  Js </li> </li> </ul> 

рдЕрдм рд╣рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдЧреАред рдПрдХ рд╣реА рдХреЛрдб рдХреЛ рдХрдИ рдмрд╛рд░ рд░рдЬрд┐рд╕реНрдЯрд░ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдлрдВрдХреНрд╢рди рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ 3 рдмрд╛рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗред

  var htmlDownload = document.getElementById('download_html'); var cssDownload = document.getElementById('download_css'); var jsDownload = document.getElementById('download_js'); function download(clickElm, variable, fileType, fileName) { this.clickElm = clickElm; this.variable = variable; this.fileType = fileType; this.fileName = fileName; clickElm.addEventListener("click", () => { var code = ace.edit(variable); var textToWrite = code.getValue(); var textFileAsBlob = new Blob([textToWrite], {type:fileType}); var fileNameToSaveAs = fileName; var downloadLink = document.createElement("a"); downloadLink.download = fileNameToSaveAs; downloadLink.innerHTML = "Download File"; if (window.webkitURL != null) { downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob); } else { downloadLink.href = window.URL.createObjectURL(textFileAsBlob); downloadLink.onclick = destroyClickedElement; document.body.appendChild(downloadLink); } downloadLink.click(); }); } function destroyClickedElement(event) { document.body.removeChild(event.target); } 

рдбрд╛рдЙрдирд▓реЛрдб рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдордиреЗ рдЙрди рддрд░реНрдХреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛, рдЬрд┐рдиреНрд╣реЗрдВ рдЧреИрд░-рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ:

  • clickElm - рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рддрддреНрд╡ред
  • рд╡реЗрд░рд┐рдПрдмрд▓ рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдбреЗрдЯрд╛ рд▓реЗрддрд╛ рд╣реИред
  • fileType - рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░
  • fileName - рдлрд╝рд╛рдЗрд▓ рдирд╛рдо

рдЕрдм рд╣рдореЗрдВ html, css рдФрд░ js рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ 3 рдмрд╛рд░ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

 download(htmlDownload, "html-editor", "text/plain", "index.html"); download(cssDownload, "css-editor", "text/plain", "style.css"); download(jsDownload, "js-editor", "text/js", "app.js"); 

рд╡рд╣ рд╕рдм рд╣реИред

рд╕рдВрдкрд╛рджрдХ рдЬреЛ рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╣ рдСрдирд▓рд╛рдЗрди рдХреЛрдб рд╕рдВрдкрд╛рджрдХ рд╣реИ ред

Source: https://habr.com/ru/post/hi438518/


All Articles