WYSIWYG 에디터에 툴바레이어 특수문자 클릭해 삽입하기 소스 간단 정리... 블록

아래 소스를 복사해 html 파일로 만들면 완전하게 동작합니다. 함 살펴보시고 익스플로어11에 맞게 소스를 변경해 보시기 바랍니다. 핵심적인 부분은 get_selection() 함수에서 주석 처리한 부분입니다. 주석을 제거하면 1번 버튼이 동작합니다. 그럼 행운이 있길... 저도 문제점을 찾아보겠습니다.

모바일에서 소스가 잘 안보이시는 분은 다음 링크를 클릭하세요. http://bit.ly/1QdP5PR

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> 위지윅 에디터에서 툴바레이어 클릭 관련 익스플로어11 호환성 맞추기 초간단 정리 소스 </TITLE>
<script language="JavaScript">
var DocReadyState = false;
var DocReloadInterval = null;
var memoiE = null;
var memoiW = null;
var memoE = null;
var close_id = null;
var default_source = "<HEAD><STYLE> body,td,div { font-family:굴림; font-size:10pt; color:#444444; line-height:140%; scrollbar-arrow-color: #CCCCCC; scrollbar-track-color: #EEEEEE; scrollbar-highlight-color: #FFFFFF; scrollbar-shadow-color: #CCCCCC; scrollbar-face-color:#FFFFFF; scrollbar-3dlight-color: #CCCCCC; scrollbar-darkshadow-color: #FFFFFF; margin-top:2px; margin-bottom:0px; margin-left:1px; margin-right:1px; } body { background-color:#FFFFFF; }</STYLE></HEAD>";
function CSelection()
{
    this.m_selection = null;
    this.GetSelection = get_selection;
    this.PutSelection = put_selection;
}
 
function get_selection()
{
    if(this.m_selection != null)
    {
        if(this.m_selection.type != "Control")
        {
            if(memoiW.document.body.createTextRange().inRange(this.m_selection) == true)
            {
                this.m_selection.select();
            }
        } else {
            this.m_selection.select();
        }
    }
    //alert(memoiW.document.selection.type+" & "+memoiW.document.selection.createRange());
    //document.getElementById('test').innerHTML = memoiW.document.selection.type+" & "+memoiW.document.selection.createRange();
}
 
function put_selection()
{
    if(typeof window.getSelection != "undefined"){
        this.m_selection = memoiW.window.getSelection();
        this.m_selection.type = typeof memoiW.document.getSelection;
    } else if(typeof document.selection != "Control"){
        this.m_selection = memoiW.document.selection.createRange();
        this.m_selection.type = memoiW.document.selection.type;
    }
}
 
function deactivate_handler()
{
    if(DocReadyState)
    {
        selectionObj.PutSelection();
    }
}
 
function DocReload()
{
    memoiE = document.getElementById("memoi");
    memoiW = memoiE.contentWindow;
    clearInterval(DocReloadInterval);
    memoE = document.getElementById("memo");
    DocLoading();
}
 
function DocLoading()
{
    DocReadyState = true;
    memoiW.document.designMode = "On";
 
    selectionObj = new CSelection();
 
    var doc = memoiW.document.open("text/html");
    doc.write(default_source);
    doc.close();
 
    selectionObj.m_selection = null;
    memoiW.focus();
}
 
function buttonover(td)
{
    td.style.filter='glow(color=#FF0000 strength=1)';
}
 
function buttonout(td)
{
    td.style.filter='';
}
 
function command(obj,myEvent)
{
    memoiW.focus();
    
    if(selectionObj.m_selection != null)
    {
        selectionObj.GetSelection();
    }
 
    if(obj.tagName == "SELECT")
    {
        alert("잘못된 분기 여기가 아닙니다! SELECT command");
    }
    else {
        switch (obj.id) {
            case ("ed_asword") :
            {
                Layer_hidden(ed_asworddiv);
                Layer_xy(ed_asworddiv,'ed_aswordtable',0,+10,myEvent);
                break;
            }
        }
    }
}
 
function layerClick(obj,objcmd)
{
    memoiW.focus();
 
    if(selectionObj.m_selection != null)
    {
        selectionObj.GetSelection();
    }
 
    if(objcmd == "div_clear")
    {
        alert("잘못된 분기 여기가 아닙니다! This objcmd div_clear");
    }
    else {
        if(obj.id == "ed_asworddiv")
        {
            if(typeof window.getSelection != "undefined")
                memoiW.document.execCommand("InsertHTML",false,[objcmd]);
            else if(typeof document.selection != "Control"){
                var eEdit = memoiW.document.selection.createRange();
                eEdit.pasteHTML([objcmd]);
            }
            ed_asworddiv.style.visibility = "hidden";
        }
    }
 
}
 
function Layer_hidden(obj)
{
    var sw_Layers = new Array('ed_asworddiv');
 
    for(var i = 0 ; i < sw_Layers.length ; i++)
    {
        if(obj != sw_Layers[i])
        {
            LayerView = document.getElementById(sw_Layers[i]);
            LayerView.style.visibility = "hidden";
        }
    }
}
 
function Layer_xy(obj,objt,lpx,lpy,myEvent)
{
    var scrollLeft = (document.documentElement && document.documentElement.scrollLeft) || document.body.scrollLeft;
    var scrollTop = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;
 
    obj.style.left = (myEvent.clientX + scrollLeft + lpx) + "px";
    obj.style.top = (myEvent.clientY + scrollTop + lpy) + "px";
    obj.style.visibility = "visible";
 
    if(objt) {
        start_timeout(document.getElementById(objt));
    }
}
 
function close_div(obj)
{
    obj.style.visibility = "hidden";
    clearTimeout(close_id);
}
 
function start_timeout(table)
{
    switch (table.id) {
        case ("ed_aswordtable") : {
            asworddiv = document.getElementById("ed_asworddiv");
            close_id = setTimeout("close_div(asworddiv)",1500);
            break;
        }
    }
}
 
function clear_timeout()
{
    clearTimeout(close_id);
    close_id = null;
}
 
 
var inasw = new Array();
inasw[0] = new Array('#','&','*','@','§','※','☆','★','○','●','◎','◇','◆','□','■','△','▲','▽','▼','→','←','↑','↓','↔','〓','◁','◀','▷','▶','♤','♠','♡','♥','♧','♣','⊙','◈','▣','◐','◑','▒','▤','▥','▨','▧','▦','▩','♨','☏','☎','☜','☞','¶','†','‡','↕','↗','↙','↖','↘','♭','♩','♪','♬','㉿','㈜','№','㏇','™','㏂','㏘','℡','®','ª','《','》','『','』','【','】');
 
</script>
</HEAD>
<BODY>
<SCRIPT language="JavaScript">
  <!--
    var sw_layers_asword = "<div id='ed_asworddiv' style='position:absolute; visibility:hidden;'>";
    sw_layers_asword += "<table id='ed_aswordtable' border='0' cellpadding='0' cellspacing='0' bgcolor='yellow' onmousemove='clear_timeout()' onmouseout='start_timeout(this)'><tr><td style='padding:3;'>";
    sw_layers_asword += "<table width='210' height='170' border='0' cellpadding='2' cellspacing='0'>";
 
    function ed_aswordF()
    {
        var e_list = new String;
 
        for(var i=0 ; i < 80 ; i++)
        {
            if(!(i % 10)) e_list += "<tr>";
            if (inasw[0][i] == "blank") {
                e_list += "<td align='center'><font class='sw_ft_style_1'>X</font></td>";
            } else {
                e_list += "<td align='center' onClick='javascript:layerClick(ed_asworddiv,\""+ inasw[0][i] +"\");' onMouseOver=this.className='sw_MouseOver_0' onMouseOut=this.className='sw_MouseOut_0' style='cusor:pointer;'><font class='sw_ft_style_0'>" + inasw[0][i] + "</font></td>";
            }
            if(i % 10 == 9) e_list += "</tr>";
        }
        return e_list;
    }
 
    sw_layers_asword += ed_aswordF();
    sw_layers_asword += "</table></td></tr></table></div>";
 
    document.writeln(sw_layers_asword);
 
    DocReloadInterval = setInterval("DocReload()", 300);
  //-->
</SCRIPT>
1. 브라우저에서 DIV 영역에 selection 찍기<br>
<input type=button value="selectionObj.GetSelection();" onclick="selectionObj.GetSelection();"><br>
[DIV 영역]<br>
<div id=test></div>
[DIV 영역 끝]<br><br>
2. 브라우저에서 위지윅 에디터에 특수문자 삽입하기<br>
<input type=button value="특수문자 삽입" onClick='javascript:command(this,event);' id='ed_asword' title='특수문자' onmouseover='buttonover(this)' onmouseout='buttonout(this)'><br>
[WYSIWYG에디터 박스 영역]<br>
<iframe id="memoi" style='width:100%; height:300px; display:block;' onbeforedeactivate='deactivate_handler()' scrolling='yes' frameborder='yes' border='1' ALLOWTRANSPARENCY='true'></iframe>
<textarea id='memo' style='width:100%; height:300px; display:none;'></textarea>
[WYSIWYG에디터 박스 영역 끝]<br>
</BODY>
</HTML>

덧글

  • 희망의빛™ 2014/10/26 17:27 # 답글

    이 문제가 익스플로어11의 버그라는 이야기가 있네요. 다음 문서를 참조하시죠. ^^;

    http://ajaxcontroltoolkit.codeplex.com/workitem/27547
    https://www.mail-archive.com/wikibugs-l@lists.wikimedia.org/msg306513.html

    그리고 구글에서 "window.getSelection() document.selection.createRange() explorer11 ie11" 란 검색어로 함 검색해 보시기 바랍니다.
  • 희망의빛™ 2014/10/26 18:04 # 답글

    MS가 웃긴 게 이런 버그도 안고치고 벌써 윈도우 8.1에 맞는 익스플로어 12 개발을 준비하고 있다는 사실입니다. 이것도 좀 어이없지 않나요?
  • 글리 2014/10/26 18:30 # 답글

    님 영어 약하시죠? 첫번째 문서 님의 문제하곤 아무 상관없고 두번째 문서는 상관은 있는데 난 인정못해라고 징징대는건데요? 아니 난 아무 조건식 없이 IE11에서만 돌아가는 소스 잘 굴리고 있거든요? 툴바레이어클릭 안된다고 징징대면서 어째서 소스 공개안하나 했더니 아니 다를까??

    if(typeof window.getSelection != "undefined")
    memoiW.document.execCommand("InsertHTML",false,[objcmd]);
    else if(typeof document.selection != "Control"){
    var eEdit = memoiW.document.selection.createRange();
    eEdit.pasteHTML([objcmd]);

    두명이서 몇번을 지적했는데 이거 왜 이러나요? get_selection() put_selection() 에 이어 추가로 layerClick(obj,objcmd)도 고치셔야겠네요.

  • 희망의빛™ 2014/10/26 18:50 #

    괜한 교란 작전 펴지 말고 제가 완전체 소스를 올려드렸으니까 전체 소스를 올려주시죠. ㅡ_ㅡ 그리고 전 전체 브라우저와 호환되는 소스를 원합니다.
  • 희망의빛™ 2014/10/26 19:00 #

    ㅋㅋ 자신있으면 IE11에서만 된다는 소스 함 올려보세요. 제가 함 월요일에 해보게.
  • 글리짱 2014/10/26 20:19 # 삭제

    글리님// 대단하십니다. 대신디버깅해주시다니요. 와우
  • 글리 2014/10/26 18:59 # 답글

    layerClick쪽은 설명할려면 머리 빠개질거 같아서 그냥 완전 답안을 던져드리니 잘 받아 먹으시길. 그리고 시큰둥? 뭐 의도? IE8땜에 헛굴렀른건 독같은데 그렇게 구르면 기분이 high하나요? 그게 트롤링이었다면 전자를 선택하나 후자를 선택하나 의도한 결과가 동일인건 어찌 생각하나 모르겠다.

    /*if(objcmd == "div_clear")
    {
    alert("잘못된 분기 여기가 아닙니다! This objcmd div_clear");
    }
    else {
    if(obj.id == "ed_asworddiv")
    {
    if(typeof window.getSelection != "undefined")
    memoiW.document.execCommand("InsertHTML",false,[objcmd]);
    else if(typeof document.selection != "Control"){
    var eEdit = memoiW.document.selection.createRange();
    eEdit.pasteHTML([objcmd]);
    }
    ed_asworddiv.style.visibility = "hidden";
    }
    }*/

    //IE11
    if(objcmd == "div_clear")
    {
    alert("잘못된 분기 여기가 아닙니다! This objcmd div_clear");
    }
    else {
    if(obj.id == "ed_asworddiv")
    {
    var eEdit = memoiW.window.getSelection().getRangeAt(0);
    eEdit.deleteContents();
    eEdit.insertNode(eEdit.createContextualFragment(objcmd));
    ed_asworddiv.style.visibility = "hidden";
    }
    }
  • 희망의빛™ 2014/10/26 19:33 #

    이 부분만 고치면 되는 겁니까? 근데 get_selection() put_selection() 소스까지 알려주셔야죠. 지난번에도 알려드렸지만 거기서 에러가 뜨는데? 그럼 이 소스는 동작하지 않는다는 소리?
  • 글리 2014/10/26 19:04 #

    몰라요~ 절삭한 소스가지고 내가 그딴 확답을 어찌하나? 병신같은 소리하네. 님 집에 IE11도 없다면서?
  • 희망의빛™ 2014/10/26 19:34 #

    병신은 당신이야. 그럼 안된다는 소리네.
  • 글리 2014/10/26 19:03 # 답글

    괜한 교란 작전 펴지 말고?? 이사람 정신상태가 왜이래? 깝치지 마세요.

    //IE11
    function get_selection()
    {
    this.m_selection.removeAllRanges();
    this.m_selection.addRange(this.range);
    }

    //IE11
    function put_selection()
    {
    this.m_selection = memoiW.window.getSelection();
    this.range = this.m_selection.getRangeAt(0);
    }

    무식하면 용감하다고 레페런스를 한번만 확인하고 거기서부터 물어보면 술술 풀리는걸 교란작전이래. 답이 없다.
  • 글리 2014/10/26 19:44 # 답글

    병신은 당신이야. 그럼 안된다는 소리네?? ^^

    병신같은 소리하네(2) 님 본문의 코드에서 제 소스를 대체하면 무슨 이유로 안돌아간다고 개소리를 하시나요? 설마 크롬이나 IE8로 돌리셨나?? 무식하면 용감하다고(2) IE11에서 되니까 올렸지? 사람을 못믿네?? 집에 IE11가 정말 없다는건 잘 알겠다.

    절삭한 소스가 무슨 소리인지 이해를 못하십니까? 지금 이게 도대체 몇번째 글인데 이제서야 layerClick()이 튀어나오나? layerClick() 말고 뭘 더 개판으로 하고 있는지 아닌지 그걸 내가 뭔 재주로 알까? 이님 가만보면 계속 질문한 정보범위를 넘는선까지 상대방이 해결해줄거라고 믿는데 말이 되는걸 바라야지.
  • 디베스테이터 2014/10/27 08:57 #

    상대하시면 안됩니다. 특정부분에 대한 질문처럼 올려놓고 거기서 빨아낼 수 있는 소스 다 빨고 자기가 처리한 것처럼 꾸미는 자라고 봐야합니다. 정작 남들이 다 알려준 후에는 약간 몰랐던 것처럼 남을 속이고요. 아래 댓글에서도 전체 소스를 달라고 하는 등, 이미 다 들통나고 있지만 말입니다.
  • 희망의빛™ 2014/10/27 09:09 #

    해당 소스는 익스플로어11에서 동작하지 않습니다. get_selection() 함수의 this.m_selection.addRange(this.range); 서부터 "잘못된 인수" 에러가 뜹니다. 테스트도 안해본 소스를 올렸구만요... ㅡ_ㅡ
  • 글리님 2014/10/26 20:20 # 삭제 답글

    글리님 존경합니다.
  • 글리님 2014/10/26 20:20 # 삭제

    "제가 이전부터 궁금했던 걸 알고 계시는군요" 라고 말해놓고선 무슨 개소리야진짜
  • Miyun_86 2014/10/26 21:37 # 삭제 답글

    글리님 // 아주 박살을 내놓으시네요... 고생하셨습니다.
  • Kalaheim 2014/10/27 08:59 # 답글

    Es gibt keine Lösung.
  • 2014/10/27 09:04 # 삭제 답글

    이런 황당한 경우를 다루는 방법이 하나있죠.

    저런 무대뽀식은

    돈 주면 알려주마


    로 대응하면 됩니다.
  • 2014/10/27 09:09 # 삭제 답글

    쥔장의 궁금증도 풀어주고
    잘 작동하는 소스 전체를 원한다면
    돈내고 선생님 모시거나
    돈내고 구입하세요.


    알려주느라 댓글 다시는 분들

    이 쥔장의 경우 꼭 유상지원만 가능함을 알려주세요
  • 글리 2014/10/27 10:01 # 답글

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> 위지윅 에디터에서 툴바레이어 클릭 관련 익스플로어11 호환성 맞추기 초간단 정리 소스 </TITLE>
    <script language="JavaScript">
    var DocReadyState = false;
    var DocReloadInterval = null;
    var memoiE = null;
    var memoiW = null;
    var memoE = null;
    var close_id = null;
    var default_source = "<HEAD><STYLE> body,td,div { font-family:굴림; font-size:10pt; color:#444444; line-height:140%; scrollbar-arrow-color: #CCCCCC; scrollbar-track-color: #EEEEEE; scrollbar-highlight-color: #FFFFFF; scrollbar-shadow-color: #CCCCCC; scrollbar-face-color:#FFFFFF; scrollbar-3dlight-color: #CCCCCC; scrollbar-darkshadow-color: #FFFFFF; margin-top:2px; margin-bottom:0px; margin-left:1px; margin-right:1px; } body { background-color:#FFFFFF; }</STYLE></HEAD>";
    function CSelection()
    {
    this.m_selection = null;
    this.GetSelection = get_selection;
    this.PutSelection = put_selection;
    }

    //IE11
    function get_selection()
    {
    this.m_selection.removeAllRanges();
    this.m_selection.addRange(this.range);
    }

    //IE11
    function put_selection()
    {
    this.m_selection = memoiW.window.getSelection();
    this.range = this.m_selection.getRangeAt(0);
    }

    function deactivate_handler()
    {
    if(DocReadyState)
    {
    selectionObj.PutSelection();
    }
    }

    function DocReload()
    {
    memoiE = document.getElementById("memoi");
    memoiW = memoiE.contentWindow;
    clearInterval(DocReloadInterval);
    memoE = document.getElementById("memo");
    DocLoading();
    }

    function DocLoading()
    {
    DocReadyState = true;
    memoiW.document.designMode = "On";

    selectionObj = new CSelection();

    var doc = memoiW.document.open("text/html");
    doc.write(default_source);
    doc.close();

    selectionObj.m_selection = null;
    memoiW.focus();
    }

    function buttonover(td)
    {
    td.style.filter='glow(color=#FF0000 strength=1)';
    }

    function buttonout(td)
    {
    td.style.filter='';
    }

    function command(obj,myEvent)
    {
    memoiW.focus();

    if(selectionObj.m_selection != null)
    {
    selectionObj.GetSelection();
    }

    if(obj.tagName == "SELECT")
    {
    alert("잘못된 분기 여기가 아닙니다! SELECT command");
    }
    else {
    switch (obj.id) {
    case ("ed_asword") :
    {
    Layer_hidden(ed_asworddiv);
    Layer_xy(ed_asworddiv,'ed_aswordtable',0,+10,myEvent);
    break;
    }
    }
    }
    }

    //IE11
    function layerClick(obj,objcmd)
    {
    memoiW.focus();

    if(selectionObj.m_selection != null)
    {
    selectionObj.GetSelection();
    }

    if(objcmd == "div_clear")
    {
    alert("잘못된 분기 여기가 아닙니다! This objcmd div_clear");
    }
    else {
    if(obj.id == "ed_asworddiv")
    {
    var eEdit = memoiW.window.getSelection().getRangeAt(0);
    eEdit.deleteContents();
    eEdit.insertNode(eEdit.createContextualFragment(objcmd));
    ed_asworddiv.style.visibility = "hidden";
    }
    }

    }

    function Layer_hidden(obj)
    {
    var sw_Layers = new Array('ed_asworddiv');

    for(var i = 0 ; i < sw_Layers.length ; i++)
    {
    if(obj != sw_Layers[i])
    {
    LayerView = document.getElementById(sw_Layers[i]);
    LayerView.style.visibility = "hidden";
    }
    }
    }

    function Layer_xy(obj,objt,lpx,lpy,myEvent)
    {
    var scrollLeft = (document.documentElement && document.documentElement.scrollLeft) || document.body.scrollLeft;
    var scrollTop = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;

    obj.style.left = (myEvent.clientX + scrollLeft + lpx) + "px";
    obj.style.top = (myEvent.clientY + scrollTop + lpy) + "px";
    obj.style.visibility = "visible";

    if(objt) {
    start_timeout(document.getElementById(objt));
    }
    }

    function close_div(obj)
    {
    obj.style.visibility = "hidden";
    clearTimeout(close_id);
    }

    function start_timeout(table)
    {
    switch (table.id) {
    case ("ed_aswordtable") : {
    asworddiv = document.getElementById("ed_asworddiv");
    close_id = setTimeout("close_div(asworddiv)",1500);
    break;
    }
    }
    }

    function clear_timeout()
    {
    clearTimeout(close_id);
    close_id = null;
    }


    var inasw = new Array();
    inasw[0] = new Array('#','&','*','@','§','※','☆','★','○','●','◎','◇','◆','□','■','△','▲','▽','▼','→','←','↑','↓','↔','〓','◁','◀','▷','▶','♤','♠','♡','♥','♧','♣','⊙','◈','▣','◐','◑','▒','▤','▥','▨','▧','▦','▩','♨','☏','☎','☜','☞','¶','†','‡','↕','↗','↙','↖','↘','♭','♩','♪','♬','㉿','㈜','№','㏇','™','㏂','㏘','℡','®','ª','《','》','『','』','【','】');

    </script>
    </HEAD>

  • 글리 2014/10/27 10:01 # 답글

    너님의 BODY부는 이글루 덧글에선 제대로 출력을 안해주니 다 적어줄 수가 없네. 이 글 본문 소스의 HEAD부를 이렇게 교체하면 IE11에서 실행돼.
  • 희망의빛™ 2014/10/27 14:26 #

    당신말은 콩으로 메주를 쑨다고 해도 이젠 못 믿겠소. get_selection() 함수의 this.m_selection.addRange(this.range); 에서 에러가 난다니까요. '잘못된 인수' 에러.. 확인은 해보셨는지... 욕할때부터 뭔가 믿음직스럽지 못했는데 당신 자신이나 먼저 돌아보고 남을 탓하시오. ㅡ_ㅡ
  • ... 2014/10/27 14:50 # 삭제

    ...프로그래밍 쪽은 전혀 몰라서 뭐라 할 말은 없지만... 설마 IE11에서 돌려보라는 코드를 IE8에서 돌려보고 에러난다고 하는 건 아니겠지?!
  • Miyun_86 2014/10/27 15:08 # 삭제

    일하다가 하도 궁금해서 주인장 소스에서 글리님 헤더 부분만 복붙해다가 인코딩만 유니코드로 저장하고(기본값이 ANSI로 되어 있어서 다 깨지는 바람에 급 변경;;;) IE 11에서 돌리니까 제대로 돌아가는데요? alert 창도 안 띄우고?
    물론 IE 11입니다.

    ......설마하니 코드 이해 못하는건 둘째치고 복붙도 제대로 못하는건지?
  • Miyun_86 2014/10/27 15:12 # 삭제

    병원 근무중이라 스샷 첨부는 불가능하고(지금 이글루 접속도 닷지크롬으로 우회접속이라 해당 브라우저에서 구글 드라이브가 접근이 안됨 -_-...) 정 못 믿겠으면 퇴근후 집에서 아예 영상으로 찍어다가 올려줄수도 있습니다.
    알려주는 사람 ㅄ취급하지 말고 못 알아듣는 자신을 좀 탓하면서 책이라도 좀 찾아보세요.

    구글 검색은 기본이 되고 나서 쓰는거지, 기본도 없는 사람이 찾아 쓰는게 아닙니다. 그럼 더 바보짓하는거죠.
  • 글리 2014/10/27 15:46 #

    이 글에 트랙백 걸겠습니다 http://goo.gl/80CA5a

    예상한 반응이라 준비해뒀으니까요. 시큰둥한 것보다 이런 솔루션이 좋다면 결과로 비교해야지요. 더 상대하고 싶지도 않고 이 문제 마무리는 페어하게 갑시다.
  • Miyun_86 2014/10/27 15:55 # 삭제

    글리님 // 글리님 이글루가 비로그인 댓글 허용이 아닌지라 부득이하게 이쪽에 답니다.

    제가 할려고 했던걸 대신 하셨네요...(......) 그냥 이 이후로는 뭐라 떠들던 무시하시면 될 듯 합니다.
  • 희망의빛™ 2014/10/27 22:13 #

    그러니까 소스 그냥 살짝 넘기지 마시고 완전체 소스로 올려달라구요. 다른 사람들도 다 테스트 할 수 있게... 다 아시다시피 프로그램 코드는 한 글자만 틀려도 안되게 되어 있죠. 괜한 트릭 쓰지 마시고... ㅎㅎ

    그러고 보니까 글리님만 빼고 다 비로그인이네요. ㅎㅎ. 물론 로그인도 믿을 수 없지만요. ㅎㅎ
  • 글리 2014/10/27 17:44 #

    이게 왜 안보이시나요? 신기하네?? http://pds21.egloos.com/pds/201410/27/76/test102714_html.zip
  • Miyun_86 2014/10/27 17:46 # 삭제

    트릭이 문제가 아니라 복붙도 제대로 못 하는 본인 탓을 좀 하세요. 음모론 신봉도 정도껏이지...
  • 디베스테이터 2014/10/27 17:48 #

    글리님 상대를 마시죠. 저도 테스트해보니 매우 잘 되는 관계로, 이거 트랙백이나 걸고 놀려먹도록 하겠습니다.
  • 글리 2014/10/27 17:53 #

    그럼 이것도 안보이시는건가? http://pds26.egloos.com/pds/201410/27/76/d0017676_544de3dbd3107.gif

    완전하구만??!? 님말고 다른 사람들은 다 완전하게 보인다고 자신해. 깝치지마. 내가 짜고 느낀 문제점은 트랙백에 추신으로 적어 놨다. 다른 분들껜 너무 감사합니다. 염두하겠습니다.
  • 희망의빛™ 2014/10/27 17:53 #

    전 될 줄 알고 잔뜩 기대했었는데 get_selection() 함수의 this.m_selection.addRange(this.range); 에서 에러가 나 버립니다. 제가 켑쳐한 화면 올려드릴께요. 완전체 소스를 올려 주세요. 가르쳐 주기 싫으면 싫다고 솔직히 이야기하시지 매우 더티하게 나오시네요. 프로그램 코드 가지고 장난치시는 것도 아니고...ㅎㅎ

    http://www.blrun.net/images/range_error1.png
  • Miyun_86 2014/10/27 17:58 # 삭제

    아무리 봐도 본문 소스 및 제가 글리님 것 그대로 복붙한 소스에서는 this.m_selection.addRange() 다음에 else 나오는 구간이 없는데요?
    본인이 올린 소스에 그대로 한게 아니고 어설프게 또 이해도 못한 상황에서 적용하고 연계되어서 에러나니까 징징대는 꼴로밖에 안 보이는데, 복붙 정도는 똑바로 합시다.
  • 희망의빛™ 2014/10/27 17:59 #

    제공해 주신 소스로 낼 다시 테스트 해보겠습니다. 오늘은 분명 해당 줄에서 에러가 났습니다만...
  • Miyun_86 2014/10/27 18:02 # 삭제

    아, 도망가지 마시고 하나만 좀 확답해주고 가세요.

    본인이 올린 소스에 글리님 헤더 부분 그대로 복붙해서 테스트한겁니까? 아님 현재 개발한다고 하는 게시판에 바로 일부분만 적용한겁니까?
    전자면 복붙도 못하는 바보 인증이고, 후자면 이해도 못하면서 국소구간으로 적용하고 안된다는 패기에 할 말이 없습니다.

    - 웬지 후자로 확신됩니다만. 스샷 좀 잘 찍으시지. 티나게 그러시면 어쩝니까.
  • 엘르 2014/10/28 00:20 #

    트랙백도 하긴 했지만... 암튼 잘 돼요.
    동영상 찍었으니 복사 붙이기 어떻게 하는지 확인이나 하세요. 억지 좀 그만 부리시고.
    https://www.youtube.com/watch?v=wTFXnqd_fbY
  • ff 2014/10/27 13:18 # 삭제 답글

    대체 얼마나 염치가 없으면 도와주는 사람보고 니가 해보던가 따위의 소리를 하는지 모르겠다
    그런데도 도와줬더니 사람을 병신을 만들고...
  • 샬옷 2014/10/27 18:15 # 삭제 답글

    여러분들께서는 지금 제대로 된 진짜 프로그래머분이
    복붙도 제대로 못하는 되도 않은 입만 산 얼치기를
    공개적으로 조지는 감동적인 장면을 보고 계십니다.
  • Miyun_86 2014/10/27 18:21 # 삭제

    에이. 전 FA/SM 합쳐서 2년차에 불과한 생초짜 프로그래머입니다. ㅋㅋ
  • 샬옷 2014/10/27 18:30 # 삭제

    그 정도면 매우 훌륭한 프로그래머시죠.
    복붙도 제대로 못하면서 남을 사기꾼이네 병신이네
    밸리에서 난동부리는 백수에 비하면 대단하신 거죠.
  • ... 2014/10/27 18:38 # 삭제 답글

    이쯤되면 슬슬 '안되는 코드를 가르쳐 줘 놓고 전부 다 한통속이되어 되는코드라고 거짓말 하고있다. 나를 바보취급하려는 비겁한 음모론이다. ' 고 주장하는 포스팅이 올라올 때가 된 것같은데요. 내일도 시도해보고 에러 띄운다음 이렇게 떠들 걸로 예상해봅니다.
  • 총통 R 레이퍼 2014/10/27 21:51 #

    아니아니...
    이제야 되네요. 이렇게 어렵게 해야만 호환되게 만든 MS가 나쁜놈입니다
    라고 예상해봅시다.
  • agkdc 2014/10/27 22:49 #

    아니요 하루 사이에 MS에서 이윤찬씨 음해하려고 몰래 패치했다고 음모론 내놓을 것 같은데요
  • 해색주 2014/10/27 21:36 # 답글

    정신 좀 차리세요. 소스 다 내놓으라고 하는게 말이 안되죠. 남들이 가르쳐 주면 본인이 공부하셔서 따라가야지 이게 무슨 민폐입니까.
  • 나일링 2014/10/27 22:50 # 삭제 답글

    프로그래밍이라고는 기초교양도 뗄까말까한 수준의 나도 테스트 해볼 수 있는걸 복붙도 못하나요.ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 미치겠다 진짜.
  • 무한 2014/10/27 23:02 # 답글

    다른 분이 도와줬으면 고마운 줄 알아라. 직접 고쳐볼 생각도 좀 하고.
  • 근성공 2014/10/27 23:07 # 답글

    이거 분노조절 실험인가요 ?
  • 희망의빛™ 2014/10/28 14:45 # 답글

    방금 제공해 주신 소스 정상적으로 동작하는 것 확인했습니다. 전 if 문을 브라우저 종류에 따라 추가하고 순서를 달리했더니 동작하지 않는 거였습니다. 원본 소스로 되는 것 확인하고 나머지 작업들도 완료하고 이제 게시판 소스에 적용만 하면 됩니다. 글리님 제가 집에서 테스트를 못해서 잠시나마 의심하고 경솔하게 행동했던 점 진심으로 사과드리구요 소스 제공에 감사드리며 비록 코드는 길어졌지만 지금은 나름 만족스럽게 생각합니다.

    다시한번 글리님께 죄송하다는 말씀 드리며 아울러 감사의 말씀을 거듭 전합니다. 꾸벅~
  • Miyun_86 2014/10/28 13:42 # 삭제

    결론은 그대로 테스트해본 것도 아니고 어설프게 적용했다가 안 되는걸 가지고 남들 다 된다는거 안된다고 바락바락 우겼다는 이야기군요. 그렇게 어설프게 작업하면 전체 코드 가독성 및 구조 자체가 다 꼬일 수 있는데 그런거 고려는 하십니까, 예? 자기만 알아보면 끝이 아닙니다. 프로그래머든 개발자든 자칭할려면요.(본인이 안 그랬다고 할지 몰라서 덧붙입니다만, MS 정책 비난하면서 개발자 운운한건 본인입니다.) 특히나 스스로 오픈소스라고 큰소리치는데 오픈해놔봤자 남들이 해석 못해서 유지보수나 기능추가를 같이 못한다면 오픈소스도 아닙니다. 그냥 라이센스 푼 암호일 뿐이죠.

    ......최소한의 기본 개념 갖출려면 프로그래밍 언어 책 좀 하나 보세요. 기본 프로그래밍 언어 책에서도 최소한의 코드 작성법 및 유도 방법 정도는 써놓습니다. 자기가 잘못된거 남이 지적해주면 자기가 옳다고 바락바락 우기면서 계속 이렇게 어그로 끌지말고요. 되도않는 책 보기 싫다는 핑계따위 대지 말고, 진짜 제대로 하고 싶으면 구글링보다 일단 기초 PHP 책부터 붙잡고 독파 후에나 구글링하면서 수정하던가 하시길 바랍니다. 안 그러면 계속 자기 혼자의 우울에서 어그로나 끄는 어그로 종자 취급만 받을테니까요.

    - 지금 주인장이 잘하는데 남들이 이유 없이 뭐라고 할 꺼라고 생각하고 있을꺼라 생각합니다만, 세상이 그리 만만한게 아닙니다. 나이는 주인장보다 적을 지 모르겠지만 최소한 직장경험 등 사회경험은 주인장보다 더 해본 사람의 충고입니다.
  • Miyun_86 2014/10/28 13:48 # 삭제

    아, 미리 봉쇄합니다만 책 살 돈 없다니 그런 핑계는 댈 생각도 마십쇼. 널린게 무료도서관이고, PHP 입문책 정도는 쉽게 찾을 수 있으니까요.
    설마하니 책 빌리러 가기 귀찮다는 소리까진 안 쓰겠죠...

    - 결론이요? 할꺼면 정말 제대로 해서 남들에게 칭찬받으면서 하면 좋지 않습니까? 괜히 어설프게 알면서 혼자만의 고집으로 우기면서 욕 먹지 말고, 기본부터 제대로 하란 이야기입니다.
  • 희망의빛™ 2014/10/28 14:53 #

    네 ^^; 잘 알겠습니다 Miyun_86님. 저도 예전에 PHP5 관련 서적을 하나 산 게 있는데 그것도 여태 못보고 있습니다. 좋은 책인데 참고서 정도로 들추어 봤을 뿐 정독을 한번도 못했네요. 사실 전 PHP는 소스 분석해서 배웠지 관련 서적은 한권도 보질 않았네요. ㅡ_ㅡ; C 관련 서적은 학교 다닐 때 한 권 독파를 하긴 했습니다만... 어떻게 보면 책 섭렵에 관해선 형편없이 창피한 일이죠. ㅋㅋ

    기초부터 잘 닦아야 하는데 워낙 책을 쥐잡듯이 보는 스타일이라... 많이 피곤합니다. ^^;
  • 란에드린 2014/10/28 16:43 #

    요즘 개발자는 개발서 들춰보기만 해도 개발자 칭호 달수 있다면서요? 개발자 의미가 책 한번 들춰보고 대충 남의 소스 만지작거리면 개발자 타이틀 달 최소조건인줄 아나본데 남에꺼 조물딱거려서 만드는게 개발자는 아니니까 그놈의 개발자 타이틀좀 그만 다시죠 태세전환 속도가 지릴듯

    희망의빛™ 2014/10/26 19:34 #

    병신은 당신이야. 그럼 안된다는 소리네.

    이러던 인간이 지가 잘못한거 나오니까 입싹 씻는 클라스
  • 덱 책안본다며 2014/10/28 18:10 # 삭제

    희망의빛™2014/10/27 23:17 
    제가 책 보는 걸 지루해 해서 말이죠. 주로 구글을 활용하죠.뭘 책을 쥐잡듯 본다는건지? 말하는게 모순 투성이네. 댁 때문에 이렇게 고생하신 '진짜' 프로그래머 분들이 시간낭비 한건 어떻게 할거냐? 앞에선 욕을 그렇게 신명나게 하더니만 증명 다해주니 빌빌기는거 보소. 이제 이 이후로 제로보드 수정판 올라오는거 안보고 싶네. 댁이 코드 짠게 아니라 다른분들이 짠거니까.
  • 좆발자 2018/03/10 18:38 # 삭제 답글

    좆발자 이윤찬 형빽으로 취업해서 오전 늦게 출근해서 점심먹고 퇴근하여 등산질 하는 걍 좆병신.
댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.


웹로그 검색