테스트 사이트 - 개발 중인 베타 버전입니다

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

그누초보다 10개월 전 조회 1,948

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

 

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

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
glitter0gim
10개월 전

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

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

 

PHP 서버를 예시로 하자면, 

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

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

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

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

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

 

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

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

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

 

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

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

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

*JavaScript (js/common.js)

</p>

<p>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');

                }

            });

        });

    });

});</p>

<p>

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

</p>

<p><?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);

}

?></p>

<p>

*HTML 예제 (bbs/list.php)

</p>

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

<p>

 

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

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

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

 

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

10개월 전

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

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

</p>

<p>datahtml.push('<a onclick="window.location=\''+ list_data.url +'\';" style="cursor:pointer;" ' + tmp_class + '>');</p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인