1

주제: 위지윅 에디터 버그 r100

r100 기준입니다. changeset 을 확인해본바로는 에디터쪽은 변화가 없는듯하니 현재 그대로 진행형인 문제가 아닐까 싶어 올립니다.
1.0.4 에서는 없었던 문제인데, editor.js 를 놓고 판단하기에는 딱히 문제를 일으킬 만한 부분을 찾을수가 없네요.

IE6 에서, 위지윅 상태에서 HTML 로 전환하는 경우 위지윅에서 적용했던 html 효과들이 모두 사라집니다.
그러나 HTML 상태에서 입력한 태그는 위지윅 상태로 전환하더라도 유효하며 다시 HTML 상태로 왕복해도 여전히 사라지지 않습니다.

위지윅 -> 텍스트을 위한 변환 함수가 html2ttml() 이고, 그 반대의 경우 ttml2html() 이죠?
그렇다면 분명 html2ttml 함수의 어딘가에 버그가 있다고밖에 판단할 수 없는 상황인데요,
이 부분의 diff 결과만 놓고봐서는 딱히 문제가 된다고 판단될 만한 코드를 못찾아내겠습니다ㆀ

이 외에, FF 1.5.0.3 에서 위지윅 -> 텍스트 모드 변환시, HTML 속성을 입히지 않은 상태에서는 문제가 없으나
일부라도 HTML 속성이 입혀진 상태에서 모드 변환을 시도하면 잘못된 연산을 일으키며 웹브라우저가 종료됩니다.

왠만큼 사소한건 priority 를 내려두려고 했는데, 이 문제는 아무래도 우선해결대상에 두어야 뒷탈이 없을것 같습니다.

2

답글: 위지윅 에디터 버그 r100

말씀하신 내용을 정리해보면 IE6에서,

새글쓰기로 들어가서 위지윅 화면에 ABCD라고 쓰고 전체를 선택해 글자색을 빨간색으로 만든 후 HTML 모드로 변경하면

텍스트 화면에는 <font color="#ff0000">ABCD</font> 가 아니고 ABCD 라고만 나오는 상황인가요?

일단 위 상황에서 editor.js html2ttml 함수 var obj = this.contentDocument.body.cloneNode(true); 요 다음 줄에 alert(obj.innerHTML); 해서 뭐라고 나오나 한번 봐주세요..

그나저나 스크립트 때문에 IE가 죽는건 많이 봤는데 파폭이 죽어버린다니 또 희한하군요..;;

3

답글: 위지윅 에디터 버그 r100

음, 말씀해주신 구문을 통해서 얻어지는 결과는 정상적인 HTML 이 나옵니다.
http://yooe.be/tmpshot.jpg

파폭이 죽는건 첨 겪어보는 일이라 당황스러워요;;

4

답글: 위지윅 에디터 버그 r100

음.. 희한하네요
어떻게 재현해보기가 힘든 상황이라 현재로서는 디버깅 가능한 환경이 라지엘님뿐이라는 것도 난관..;;
html2ttml 함수에서 var str = obj.innerHTML; 아래부터 시작해서 alert(str); 을 점점 아래로 찍어가며 의심스러운 부분이 있는지 한번 살펴봐주세요..

5

답글: 위지윅 에디터 버그 r100

일단 찾아낸 것은 html2ttml 의 마지막 부분에 들어가는 while 을 통과하면 태그가 죽는다는 것입니다.
그 이전에 끊어버리면 코드가 그대로 살아남습니다.

현재 코드는 이렇습니다

while(result = regTag.exec(str)) 
    {
        var tagBody = result[0];
        var tagStart = "<" + result[1];
        var tagFinish = result[3] + ">";

        if(tagStart == "<!--")
            continue;

        var attributeString = result[2];

        var regAttribute = new RegExp("(\\s*[^=]*)=((?:\"[^\"]+\")|(?:'[^']+')|(?:[^\\s]+))", "g");

        var attributes = new Array();

        while(result = regAttribute.exec(attributeString))
            attributes.push(new Array(result[1].trim(), result[2].replace(new RegExp("['\"](.*)['\"]", "g"), "$1").trim()));

        var sb = new StringBuffer();

        for(var i in attributes) 
        {
            if(trim(attributes[i][0].toLowerCase()) == "style") 
            {
                var regStyle = new RegExp("([\\w-]+): ([^;]*)", "gi");
                var sbStyle = new StringBuffer();

                while(result = regStyle.exec(attributes[i][1]))
                    sbStyle.append(result[1].toLowerCase() + ": " + result[2] + "; ");

                sb.append(" style=\"" + sbStyle.toString().replace(new RegExp("(.*); $", "g"), "$1") + "\"");
            }
            else
                sb.append(" " + attributes[i][0].toLowerCase() + "=\"" + attributes[i][1] + "\"");
        }

        var tagAttributes = sb.toString();

        switch(tagStart.toLowerCase()) 
        {
            case "<img":
            case "<br":
            case "<hr":
                tagFinish = (tagFinish == ">") ? "/>" : tagFinish;
        }

        if(tagStart.toLowerCase() == "<img" && tagAttributes.indexOf("alt=") == -1)
            tagFinish = ' alt=""' + tagFinish;

        str = str.replaceAll(tagBody, tagStart.toLowerCase() + tagAttributes + tagFinish);
    }

여기에서 이전 버전의 코드와 차이가 있는 부분은

tagFinish = " alt=\"\"" + tagFinish;
str = str.replace(tagBody, tagStart.toLowerCase() + tagAttributes + tagFinish);

두 가지 뿐인데, 이것을 1.0.4 코드로 교체해도 좀 오락가락 합니다ㆀ

6

답글: 위지윅 에디터 버그 r100

수고하셨습니닷 smile
일단 범위가 좁혀졌으니 한문장씩 검토해보겠습니다.. 앞으로도 몇번 더 테스트를 부탁드려야 할 것 같네요.. ^^;

7

답글: 위지윅 에디터 버그 r100

http://crizin.xyanblue.com/test/test1.html
http://crizin.xyanblue.com/test/test2.html

이 두개를 열어서 화면에 어떻게 나오는지 확인해주세요..
첫번째는 기존 코드를 그대로 가져다 쓴거고 두번째는 약간 수정된 코드입니다

8

답글: 위지윅 에디터 버그 r100

test1.html 작성:

Before: <FONT COLOR="#FF0000">ABCD</FONT>
After: <font color="#FF0000">ABCD</FONT>

Before: <font color="#FF0000">ABCD</FONT>
After: <font color="#FF0000">ABCD</font>

test2.html 작성:

Before: <FONT COLOR="#FF0000">ABCD</FONT>
After: <font color="#FF0000">ABCD</FONT>

Before: <font color="#FF0000">ABCD</FONT>
After: <font color="#FF0000">ABCD</font>

이렇게 봐서는 결과가 동일합니다 'ㅂ'

9

답글: 위지윅 에디터 버그 r100

으음.. 그렇다면 이부분이 아닌 더 윗쪽에서 문제가 쌓여 이곳에서 터져버린게 아닌가 하는 생각이 드는군요
아이구 점점 미궁속으로.. ;ㅁ;

10

답글: 위지윅 에디터 버그 r100

범인은 이 안에 있다! 이긴 한데, 단서가 너무 적어요[...]
그렇다면 수사는 원점으로?!