...
| HTML |
|---|
<!-- Synap Editor --> <script src='/se/resource/synapeditor/synapeditor.config.js'></script> <script src='/se/resource/synapeditor/synapeditor.min.js'></script> <link href='/se/resource/synapeditor/synapeditor.min.css' rel='stylesheet' type='text/css'> <!-- plugins --> <script src="/se/resource/synapeditor/plugins/codeBlockHighlighter/codeBlockHighlighter.min.js"></script> <button id="toggleThemeBtn">코드 테마 변경</button> <div style="background-color: #ffffff; width:99%; height:500px;"> <button id="toggleThemeBtn">코드 테마 변경</button> <div id="synapEditor"> <pre class="se-code-block"><code class="hljs"><span class="hljs-keyword">function</span> <span class="hljs-title function_">foo</span>(<span class="hljs-params"></span>) { <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-string">"HI"</span>); }</code></pre> <p style="margin: 16px 0px; display: block; overflow-wrap: break-word;">코드 하이라이트가 적용된 코드를 보려면 미리보기 버튼을 클릭해 주세요.<br></p> </div> <script> const LIGHT_THEME = '/se/resource/synapeditor/plugins/codeBlockHighlighter/themes/atom-one-light.min.css'; const DARK_THEME = '/se/resource/synapeditor/plugins/codeBlockHighlighter/themes/atom-one-dark.min.css'; const config = Object.assign(synapEditorConfig, { "editor.license": "/se/resource/license.json", "editor.toolbar": [ "new", "|", "codeBlock", "preview" ], "editor.menu.show": false, "editor.preview.style.urls": [LIGHT_THEME] }); window.editor = new SynapEditor( "synapEditor", config, document.getElementById('synapEditor').innerHTML ); let isLight = true; document.getElementById('toggleThemeBtn').addEventListener('click', () => { const doc = window.editor.getContentsManager().document; const head = doc.head; // 기존 hljs 테마 제거 head.querySelectorAll('link[data-hljs-theme]') .forEach(link => link.remove()); // 새 테마 추가 const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = isLight ? '/se/resource/synapeditor/plugins/codeBlockHighlighter/themes/atom-one-dark.min.css' : '/se/resource/synapeditor/plugins/codeBlockHighlighter/themes/atom-one-light.min.css'; // ★ 표식 link.dataset.hljsTheme = 'true'; head.appendChild(link); isLight = !isLight; }); </script> |
...