Twave [BETA] 패치 - 멘션 및 태그 관련
본문
[code]
<!-- @ 태그 발견 시 프로필 링크처리{ -->
<script>
document.addEventListener('DOMContentLoaded', function() {
var currentPage = window.location.pathname;
var blockedPages = [
'/bbs/member_profile.php',
'/bbs/profile.php'
];
if (blockedPages.includes(currentPage)) {
return;
}
// 정규 표현식 수정: @ 앞에 공백이 없을 경우 매치하지 않도록 설정
var regex = /(?<!\S)@(\w+)/g;
var textNodes = document.evaluate(
"//text()",
document,
null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
null
);
for (var i = 0; i < textNodes.snapshotLength; i++) {
var node = textNodes.snapshotItem(i);
var text = node.nodeValue;
var newText = text.replace(regex, function(match, id) {
var url = 'http://' + window.location.host + '/bbs/profile.php?mb_id=' + id;
return '<a href="' + url + '" class="mansion" style="text-decoration-line: none;color:#2497ff;">@' + id + '</a>';
});
if (newText !== text) {
var newNode = document.createElement('span');
newNode.innerHTML = newText;
node.parentNode.replaceChild(newNode, node);
}
}
});
</script>
<!-- # 검색 태그 발견 시 검색 링크처리{ -->
<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]
등록된 댓글이 없습니다.