a링크 있는곳에 hover하면 왼쪽 하단에 주소 상태바같은게 나오는데

a링크 있는곳에 hover하면 왼쪽 하단에 주소 상태바같은게 나오는데

QA

a링크 있는곳에 hover하면 왼쪽 하단에 주소 상태바같은게 나오는데

답변 2

본문

a링크 있는곳에 hover하면 왼쪽 하단에 주소 상태바같은게 나오는데 이거 안나오게 할 수 없나요?

 

문제가 되는것 같은곳은 datahtml.push('<a href="'+ list_data.url +'" ' + tmp_class + '>'); 이런거 같은데

이 질문에 댓글 쓰기 :

답변 2

브라우저의 하단 링크 표시 기능은 브라우저 고유의 기능으로 설계되었으며,

기본적으로 이를 변경하거나 제거할 수는 없습니다.

 

PHP 서버를 예시로 하자면, 

로직에 a 태그를 사용하는 대신, JavaScript를 활용하여

클릭 이벤트를 처리하는 방식으로 구현하여,

실제 링크를 브라우저가 직접 렌더링하지 않도록 하면 어떨까요.

예로, PHP 서버는 클릭 시 처리될 데이터를 특정 "엔드포인트"로 POST 요청하여 처리하고,

JavaScript로 서버 응답에 따라 페이지를 동적으로 이동시키는 방식을 구현하면~

 

다시 말해, JavaScript 기반의 대체 방식을 통해

주소 표시를 우회하거나 숨기는 작업은 가능하지만,

이는 브라우저의 기본 동작을 억제하는 형태일 뿐입니다.

 

※ 그누보드의 구조를 바탕으로

js/common.js 파일에 JavaScript 코드를 추가하고,

lib/uri.lib.php에 클릭 이벤트를 처리하는 PHP 엔드포인트를 작성하여 시도해 볼까요.

*JavaScript (js/common.js)


document.addEventListener('DOMContentLoaded', () => {
    const customLinks = document.querySelectorAll('.custom-link');
    customLinks.forEach(link => {
        link.addEventListener('click', (event) => {
            event.preventDefault();
            const target = link.getAttribute('data-target');
            fetch('/ajax/redirect.php', {
                method: 'POST',
                headers: { 'Content-Type': 'application/json' },
                body: JSON.stringify({ target })
            })
            .then(response => response.json())
            .then(data => {
                if (data.success) {
                    window.location.href = data.redirect;
                } else {
                    alert('Error occurred');
                }
            });
        });
    });
});

*PHP 엔드포인트 (lib/uri.lib.php)


<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $input = json_decode(file_get_contents('php://input'), true);
    $target = $input['target'] ?? '';
    if (!empty($target) && is_valid_url($target)) {
        echo json_encode(['success' => true, 'redirect' => $target]);
    } else {
        echo json_encode(['success' => false]);
    }
}
function is_valid_url($url) {
    return filter_var($url, FILTER_VALIDATE_URL);
}
?>

*HTML 예제 (bbs/list.php)


<a href="#" class="custom-link" data-target="https://gnuchoboda.kr">Gnuchoboda</a>

 

이 방식은 브라우저의 하단 표시를 숨기기는 하지만,

네트워크 요청(개발자 도구의 네트워크 탭)에서는 링크가 여전히 노출됩니다.

따라서 이 대안이 완전한 보안 대책은 아님을 염두에 두시기 바랍니다.

 

 

브라우저의 기본 기능으로 나오는 것이 정상이고 권장됩니다.

굳이 나오지 않게 하고 싶다면 javascript onlick 처리 방법이 있습니다.


datahtml.push('<a onclick="window.location=\''+ list_data.url +'\';" style="cursor:pointer;" ' + tmp_class + '>');
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
filter #url ×
전체 159
© SIRSOFT
현재 페이지 제일 처음으로