서버 점검 안내

dsclub은 서비스의 안정성과 성능 향상을 위해
매일 04시 30분에 정기 점검이 진행됩니다.

점검 시간: 오전 4시 30분 ~ 4시 35분

해당 시간 동안 일시적으로 서비스에 접속이 불가능하오니, 양해 부탁드립니다.

그누보드5 태그기능 업데이트 > 코딩 스토리

그누보드5 태그기능 업데이트

페이지 정보

작성자 profile_image tak2 (115.♡.171.219) 작성일 24-08-15 23:47 조회 510 댓글 2

본문

[code]
<script>

document.addEventListener('DOMContentLoaded', function() {

    var regex = /(?<!\S)#([\w가-힣]+)/g; // 앞에 공백이 없을 때만 매치하도록 수정

    var textNodesIterator = document.evaluate(

        "//text()",

        document,

        null,

        XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,

        null

    );

    

    for (var i = 0; i < textNodesIterator.snapshotLength; i++) {

        var textNode = textNodesIterator.snapshotItem(i);

        var originalText = textNode.nodeValue;

        var modifiedText = originalText.replace(regex, function(match, title) {

            if (textNode.parentNode.tagName.toLowerCase() === 'a' || 

                textNode.parentNode.tagName.toLowerCase() === 'style' || 

                textNode.parentNode.tagName.toLowerCase() === 'id') {

                return match;

            } else {

                var searchUrl = 'http://' + window.location.host + '/bbs/search.php?sfl=wr_subject%7C%7Cwr_content%7C%7Cmb_id%7C%7Cwr_name%7C%7Cwr_datetime%7C%7Cwr_last%7C%7Cwr_ip&sop=and&stx=' + encodeURIComponent(title);

                return '<a href="' + searchUrl + '" class="search_tag" style="text-decoration-line: none;color:#ee8438;">#' + title + '</a>';

            }

        });


        if (modifiedText !== originalText) {

            var newNode = document.createElement('span');

            newNode.innerHTML = modifiedText;

            textNode.parentNode.replaceChild(newNode, textNode);

        }

    }

});

</script>

[/code]

기존 문제였던 링크에 포함된#뒤의텍스트를 태그처리하는 문제를 해결했습니다.


다만 아직 오류가 일부 남아있는데요, 그누보드에서 에디터를 사용하고 계신다면 아주 큰 문제일 듯 합니다. Twave 베타 배포글을 수정하는데 왜 자꾸 작성한 내용을 수정하려고 하면 수정 페이지에서 내용이 안보이는지 이유를 조사한 결과 이놈 때문이었습니다.

좋아요0 이 글을 좋아요하셨습니다
url 복사 카카오톡 공유 라인 공유 페이스북 공유 트위터 공유

tak2님의 댓글

profile_image tak2 아이피 (192.♡.0.1) 작성일

오류 원인을 더욱 상세하게 파악했습니다.
우선 이 태그기능 뿐만아니라 비슷한 방식으로 작동하는 Twave 테마의 멘션 기능에도 같은 오류가 발생했는데요, 바로 댓글 수정 시 만약 태그나 멘션이 포함되어 있을 경우 수정 시 텍스트가 사라지는 오류입니다. 아마도 그누보드 특성의 문제인 것 같습니다.
예를 들어 그누보드의 게시판 댓글 만을 본다면, 댓글은 출력부와 수정 부분 두가지로 나뉘어지게 됩니다. 근데 수정부분의 태그, 멘션 텍스트 조차 링크로 처리해버리니 수정할 때 아에 보이지 않게 된 것 입니다.
우선 저는 댓글 수정 textarea에 class를 하나 추가하고 해당 클래쓰는 재외하는 방식으로 해결했습니다.
오류를 수정한 코드와 방법은 추후 게시하겠습니다

tak2님의 댓글

profile_image tak2 아이피 (192.♡.0.1) 작성일

textarea의 @텍스트#텍스트는 처리하지 않도록 수정하여 문제를 해결했습니다.

전체 55건
게시물 검색

접속자집계

오늘
677
어제
1,329
최대
4,271
전체
300,131