묻고답하기
Edge 브라우저에서 제 게시판 툴바 중에 특수문자랑 미디어 삽입이 동작하지 않는데 해결방법을 모르겠네요.
2016.03.20 19:35
[bbs/skin/f2plus_gallery_3_0/swe/ed_toolbar.php]
<td style='padding:0 2 0 2;'><a onClick='javascript:command(this,event);' id='ed_asword' title='특수문자' class='a_style_0'><img src='<?=$dir?>/images/edbtn/ed_asword.gif' border='0' width='18' height='18' id='ed_asword_img' onmouseover='buttonover(this)' onmouseout='buttonout(this)'></a></td>
위 코드에서 특수 문자 삽입 툴바 아이콘을 클릭하면 아래의 edit.js 파일의 command() 함수가 호출되고 거기서 Layer_xy() 함수가 호출되면서 layer.js 파일의 'ed_aswordtable' 특수문자 테이블 레이어가 보이게 되고 레이어 안의 특수문자 하나를 클릭하게 되면 layerClick() 함수가 호출되면서 마지막 소스처럼 execCommand("InsertHTML",false,[objcmd]) 커맨드에 의해 현재 커서의 위치에 해당 특수문자가 삽입이 되는 구조인데 이게 Edge 브라우저에서 동작하지 않아서 해결방법을 찾아보았지만 마땅한 해결책이 구글에서도 보이지를 않습니다. 일단 IE11 소스 부분처럼 해도 안되는 걸 보면 IE11과도 호환이 안되는 것 같던데 이 문제에 대한 해결방법을 찾습니다. 뭔가 Edge 브라우저에서만의 고유한 사용법이 있는 것 같은데 그게 뭔지 모르겠습니다. 동일한 현상으로 보이는 미디어 삽입과 더불어 이 두가지 문제랑 이전 포스트에서 언급했던 미리보기 문제만 해결하면 호환성은 거의 마무리가 되는데 무엇을 어떻게 해결해야 할지 모르겠네요. ㅡ_ㅡ;
[bbs/skin/f2plus_gallery_3_0/swe/edit.js]
case ("ed_asword") : { Layer_hidden(ed_asworddiv); Layer_xy(ed_asworddiv,'ed_aswordtable',0,+10,myEvent); break; }
[bbs/skin/f2plus_gallery_3_0/swe/edit.js]
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)); } }
[bbs/skin/f2plus_gallery_3_0/swe/layer.js]
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' class='sw_bd_style_5' 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>";
[bbs/skin/f2plus_gallery_3_0/swe/edit.js]
if(obj.id == "ed_asworddiv") { if(typeof document.selection != "Control") { if(re.exec(uAgent) != null) { //IE11 var eEdit = memoiW.window.getSelection().getRangeAt(0); eEdit.deleteContents(); eEdit.insertNode(eEdit.createContextualFragment(objcmd)); } else if(re2.exec(uAgent) != null) { //IE8 var eEdit = memoiW.document.selection.createRange(); eEdit.pasteHTML([objcmd]); } else if(typeof window.getSelection != "undefined") { //Chrome & FF memoiW.document.execCommand("InsertHTML",false,[objcmd]); } } else { //Chrome & FF memoiW.document.execCommand("InsertHTML",false,[objcmd]); } ed_asworddiv.style.visibility = "hidden"; }
- [2018/09/03] 묻고답하기 [보안] 이번에 XE4 오픈소스 게시판을 utf-8 버전으로 업그레이드 했는데... *2
- [2018/09/03] 묻고답하기 제로보드 4 스킨 적용 도와주실 분 계신가요 *1
- [2016/03/17] 묻고답하기 XE4에서 자동저장 기능을 구현한 다음 더욱 진보시켜 최초 키스트로크 2회후 한번 저장하고 60초마다 저장되도록 소스를 수정했는데요, 한가지...
- [2015/09/17] Blog XE3 일정과 몇가지 계획에 대해 공유합니다 *9
- [2015/07/13] 묻고답하기 에 맞게 게시판 스킨을 조정하면서 황당한 경험을 하고 있습니다. *2
자바스크립트 에러가 없는지, DTD 선언이 제대로 되어 있는지 먼저 확인해보세요.