2012-03-26 3 views
1

웹 사이트 내에서 링크를 열면 정상적으로 열리 며 (내비게이션, 내부 페이지 연결) 외부에서 열려면 외부 소스에 대한 링크가 필요합니다. 새창.자바 스크립트를 사용하여 링크 열기 (절대 URL 만 해당)

HTML에서 target = "_ blank"를 사용하는 것은 웹킷 브라우저에서 무시하므로 더 이상 옵션이 아닙니다. 자바 스크립트를 사용해야합니다.

JS를 사용하여 페이지의 모든 절대 URL을 새 창에서 열고 모든 상대 URL을 그대로두면 어떻게됩니까? ... 나는 '

onclick="window.open(''); return false;" 

그러나 나머지는 나를 넘어 :

내가이의 확장 버전을 수있을 것 같아요. (이 방법은 내가 두 가지를 구분하기 위해 사용하는 것입니다) d는 가능한 한 최소한의 의미 론적 마크 업을 유지하기를 원하기 때문에 클래스 나 ID를 사용하는 것을 선호합니다 (실제로 CMS 제약으로 인해 ID를 사용할 수 없습니다). 같은

+0

:

<html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> </head> <body> <!-- Here is your site content --> <script> $(document).ready(function() { $('a[href^="http://"]').on('click', function(e) { e.preventDefault(); window.open($(this).attr('href'), '_new'); }); }); </script> </body> </html> 

은 또한 당신은 다음 코드를 사용할 수 있습니다. 최신 브라우저는 기본적으로 팝업을 차단하기 때문에'window.open()'에 더 많은 문제가 있습니다. – jrummell

+0

내가 할 수 있으면 좋겠다. 나는 보통 그렇지만 내 고객의 고객 (묻지 마라!)은 확고합니다. 나는 이미 target = "_ blank"가 좋지 않은 이유와 그것에 대한 지원이 중단되었음을 설명했다. 팝업은 너무 의미가 있습니다. 감사. 브라우저가 팝업으로 취급하지 않는 방법이 있습니까? 다른 명령일까요? – Martin

+0

나는 그렇지 않다. 이것은 웹 개발의 일부이며 클라이언트의 브라우저 기능에 의해 제한됩니다. 브라우저에서 팝업 (예 : 사용자가 싫어하는)을 쉽게 표시하지 못하고 가능한 경우이를 구현하지 않는 이유를 설명하는 것이 좋습니다. – jrummell

답변

3

선택기가 외부 링크를 필터링합니다. 클릭하면 새 창이 열립니다. 대신, 새 창에서 열기 사용자가 결정하도록 링크를 강제

$('a').on('click', function(e) { 
    e.preventDefault(); 
    var domain = 'http://example.com', 
     url = $(this).attr('href'), 
     target = '_top'; 
    if (this.href.indexOf(domain) !== 0) { 
     target = '_new'; 
    } 
    window.open(url, target); 
}); 
+0

감사합니다. 내 페이지에서 어떻게 작동합니까? 머리 속에있는

2

뭔가 :

var domain = "http://example.com"; 
$("a").onclick(function() { 
    if (this.href.indexOf(domain) !== 0) { 
     window.open(this.href); 
     return false; 
    } 
    return true; 
}); 

그것은 페이지에있는 모든 <a>에 온 클릭 핸들러를 첨부합니다. 외부 사이트를 가리키는 링크 인 경우 : 새 창을 대신 열고 기본 클릭 이벤트를 취소하십시오 (return true)

+0

도와 주셔서 감사합니다. 나는 그것을 작동시키는 데 어려움을 겪고있다. $ (document) .ready (function() {})에 포장해야합니다; 또는 비슷한 무엇입니까? 코드를 쉽게 볼 수 있도록 http://tempertemper.net/portfolio.php 페이지의 머리에 넣었습니다. – Martin

+0

죄송합니다, 당신은 나를 잃어 버렸습니다 ...! 현재 스크립트는 내 페이지에서 작동하지 않습니다. 이것은 내가 입력 한 것이다. ' – Martin

관련 문제