2014-03-25 2 views
3

누군가 이미이 문제에 직면했을 수 있습니다.
새 브라우저 탭에서 열려면 모든 외부 링크를 만들어야합니다.
Ext.js - 새 탭에서 모든 외부 링크 열기

이 솔루션은 쉬운 것 같다 : 단지 외부 도메인과 각 링크에 target="_blank"을 추가하지만, 전체 응용 프로그램이 Ext.js.로 작성 때문에, 좋은 방법으로 그것을 구현하는 방법

답변

0

입니다. 링크에서 모든 클릭을 잡는 유일한 방법은 몸 클릭을 제어하는 ​​것입니다 (triclozan이 답변에서 쓴 것처럼).

이 코드는 클릭 한 후 모든 링크를 수정하고 새 창에서 열립니다 :

Ext.getBody().addListener('click', function (event, el) { 
    var clickTarget = event.target; 

    if (clickTarget.href && clickTarget.href.indexOf(window.location.origin) === -1) { 
     clickTarget.target = "_blank"; 
    } 
}); 

희망이 코드는 같은 문제로 누군가 인터넷 검색의 몇 시간을 절약 할 수 :)

2

당신은 목표 변경은 자바 스크립트 속성 :

var tlinks = document.getElementsByTagName('a'); 
    for (var i=0;i<tlinks.length;i++){ 
     if (tlinks[i].href.indexOf('http://www.yourownurlhere.com') == -1) { 
      tlinks[i].setAttribute('target', '_blank'); 
     }     
    } 

것은 실제 URL을

2

트릭은 이벤트 위임 수행 할 수 있습니다와 "yourownurlhere.com"를 교체해야합니다. 당신이 쓰는 경우 단지

Ext.select('a').on('click', function (e, el) { 
    el.target = '_blank'; 
}); 

다음 당신은 단지 기존의 링크 핸들러를 적용하는 것이

Ext.select('body').on('click', function (e, el) { 
    el.target = '_blank'; 
}, null, {delegate: 'a'}); 

참고. 그러나 위임은 이후에 만들어진 요소도 처리합니다. 특정 컨테이너에만 포함 된 링크에 대해 그러한 행위를 원할 경우 '본문'을 해당 컨테이너와 일치하는 선택자로 변경할 수 있습니다. 어쩌면 사람을 위해 유용하게 사용될 수 있기 때문에

여기, jsfiddle

난 내 자신의 질문에 대답하기로 결정