jquery ๋ ์ด์์ ๋ด์์ ace ํธ์ง๊ธฐ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๊ทธ๊ฒ์ ์์ฃผ ์ ์๋ํฉ๋๋ค. ๋๋ ์ ์ฒด ํ๋ฉด ๊ธฐ๋ฅ์ ๊ตฌํํ์ผ๋ฉฐ ์ ์ฒด ํ๋ฉด ๋ชจ๋์์๋ ๋ณธ๋ฌธ์ ์ ์ฉ๋๊ธฐ ๋๋ฌธ์ ์๋ ์์ฑ ํ์
์ด ๋ํ๋์ง ์๋ ๋ฐ๋ฉด ์ ๊ฒฝ์ฐ์๋ <div id="main-container">
๊ฐ ์ ์ฒด ํ๋ฉด ๋ชจ๋์ ์์ต๋๋ค.
์ ์ฒด ํ๋ฉด ๋ชจ๋์์ ctrl+space๋ฅผ ๋๋ฅธ ๋ค์ <div id="main-container">
<div class=" ace_editor ace_autocomplete ace-tomorrow">
๋ฅผ ์ด๋ํ๋๋ฐ ์ฌ๋ฐ๋ฅธ ์์น์์ ์ ๋๋ก ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
autoComplete ํ์
์ ๋ํ ์ปจํ
์ด๋๋ฅผ ์ ์ํ์ฌ ์ด ๋ฌธ์ IMO๋ฅผ ํด๊ฒฐํ ๋ณธ๋ฌธ ๋์ <div id="main-container">
๋ฅผ ์ปจํ
์ด๋๋ก ์ ๊ณตํ ์ ์์ต๋๊น?
์์ ํ ์ฝ๋: (.html๋ก ์ ์ฅ)
์ค์ ์ฐฝ์์ ๋ฒํผ ์ ์ฒด ํ๋ฉด ์ฌ์ฉ
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ACE Autocompletion demo</title>
<style type="text/css" media="screen">
body {
overflow: hidden;
}
#editor {
margin: 0;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
</style>
</head>
<body>
<!-- html -->
<div class="myDiv" style="height:800px">
<div class="ui-layout-center">Center
<button id="fullscreenButton" type="button">Full-Screen</button>
</div>
<div class="ui-layout-north">North</div>
<div class="ui-layout-south">South</div>
<div class="ui-layout-east"> code Mirror
<div id="main-container">
<div id="editor">Type in a word like "will" below and press ctrl+space or alt+space to get "rhyme completion"</div>
</div>
</div>
<div class="ui-layout-west">West</div>
</div>
<!-- ace-plugin -->
<script src="https://rawgithub.com/ajaxorg/ace-builds/master/src/ace.js" type="text/javascript" charset="utf-8"></script>
<script src="https://rawgithub.com/ajaxorg/ace-builds/master/src/ext-language_tools.js" type="text/javascript" charset="utf-8"></script>
<!-- layout.jquery-plugin -->
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<link type="text/css" rel="stylesheet" href="http://layout.jquery-dev.com/lib/css/layout-default-latest.css" />
<script type="text/javascript" src="http://layout.jquery-dev.com/lib/js/jquery-ui-latest.js"></script>
<script type="text/javascript" src="http://layout.jquery-dev.com/lib/js/jquery.layout-1.3.0.rc30.80.js"></script>
<!-- jquery-fullscreen-plugin -->
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-fullscreen-plugin/1.1.4/jquery.fullscreen-min.js"></script>
<script>
//
// setup ace editor
function setupAce() {
// trigger extension
ace.require("ace/ext/language_tools");
var editor = ace.edit("editor");
editor.session.setMode("ace/mode/html");
editor.setTheme("ace/theme/tomorrow");
// enable autocompletion and snippets
editor.setOptions({
enableBasicAutocompletion: true,
enableSnippets: true,
enableLiveAutocompletion: false
});
$("#fullscreenButton").click(function(event) {
$("#main-container").toggleFullScreen();
});
}
// init layout
$('.myDiv').layout({
resizeWhileDragging: true,
resizable: true,
east: {
size: 800
},
onload_end: function() {
setupAce();
}
});
//
</script>
</body>
</html>
+1
์ด ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
ํ์ฌ ๋ฒ์ ์ ace์์ ์๋ํ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ค์์ ์ถ๊ฐํ๋ ๊ฒ์ ๋๋ค.
function getPopup() {
if (!editor.completer) {
var Autocomplete = ace.require("ace/autocomplete").Autocomplete
editor.completer = new Autocomplete()
}
editor.completer.editor = editor
editor.completer.$init()
return editor.completer.popup.container;
}
document.onfullscreenchange = function(event) {
var popup = getPopup();
if (document.fullscreen)
$("#main-container")[0].appendChild(popup);
else
document.body.appendChild(popup);
}
@nightwing ๊ฐ์ฌํฉ๋๋ค
์ด์ฉ๋ฉด ์์ง์ฌ
editor.completer.editor = editor
editor.completer.$init()
if ๋ฌธ ๋ด๋ถ
if (!editor.completer) {
์ด๋ฐ ์์ผ๋ก ์ฌ๋ฌ ์๋ ์์ฑ๊ธฐ๋ฅผ ์ธ์คํด์คํํ๋ฏ๋ก DOM์ ์ฌ๋ฌ ๊ฐ์ ์๋ ์์ฑ๊ธฐ๊ฐ ์์ฑ๋ฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
ํ์ฌ ๋ฒ์ ์ ace์์ ์๋ํ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ค์์ ์ถ๊ฐํ๋ ๊ฒ์ ๋๋ค.