외부 링크뿐만 아니라 자신의 도메인의 특정 경로를 차단할 수있는 Ryan의 답변이 개선되었습니다.
호스트와 경로를 별도로 확인하므로 자신의 도메인이 아닌 모든 링크와 사용자 도메인의 특정 경로를 차단할 수 있습니다.
사용자가 차단 된 링크를 클릭하면 "request_confirmation"기능은 현재 페이지에서 탐색을 허용하기 전에 사용자에게 확인을 요청합니다.
논리를 여러 함수로 나눠서 쉽게 수정할 수 있습니다. 여기
$('body').on('click', 'a', function(e){
return (should_link_be_blocked($(this).attr('href')))? request_confirmation() : true;
});
function should_link_be_blocked(link){
var url = new URL(link);
return should_host_be_blocked(url.hostname) || should_path_be_blocked(url.pathname);
}
function should_host_be_blocked(host){
return !(host.match(/([a-z0-9]+\.)?example.com/));
}
function should_path_be_blocked(path){
var not_allowed = ['/block_me.html', '/block_another.html'];
var block = false;
not_allowed.forEach(function(n_a){
block = (path == n_a)? true : block;
});
return block;
}
function request_confirmation(){
return confirm('This is an external link. Are you sure you want to leave?');
}
그것의 추한 예는 노력하고 있습니다 : http://codepen.io/anon/pen/Gjagi
그래서 나는 mydomain.com 위에 표시되는 웹 사이트의 도메인 이름을 넣을 것인가? 자바 스크립트에 다른 도메인을 추가하는 방법을 보여줄 수 있습니까? 감사. – Lonnie
@Lonnie 맞습니다. 도메인에 맞게 바꾸십시오. 여러 도메인을 표시하도록 코드를 업데이트했습니다. – Ryan
원본 스크립트를이 스크립트로 대체하고 두 도메인을 추가했으나 작동하지 않습니다. 팝업은 외부 링크에 전혀 표시되지 않습니다. – Lonnie