누군가 이미이 문제에 직면했을 수 있습니다.
새 브라우저 탭에서 열려면 모든 외부 링크를 만들어야합니다.
Ext.js - 새 탭에서 모든 외부 링크 열기
이 솔루션은 쉬운 것 같다 : 단지 외부 도메인과 각 링크에 target="_blank"
을 추가하지만, 전체 응용 프로그램이 Ext.js.로 작성 때문에, 좋은 방법으로 그것을 구현하는 방법
누군가 이미이 문제에 직면했을 수 있습니다.
새 브라우저 탭에서 열려면 모든 외부 링크를 만들어야합니다.
Ext.js - 새 탭에서 모든 외부 링크 열기
이 솔루션은 쉬운 것 같다 : 단지 외부 도메인과 각 링크에 target="_blank"
을 추가하지만, 전체 응용 프로그램이 Ext.js.로 작성 때문에, 좋은 방법으로 그것을 구현하는 방법
입니다. 링크에서 모든 클릭을 잡는 유일한 방법은 몸 클릭을 제어하는 것입니다 (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";
}
});
희망이 코드는 같은 문제로 누군가 인터넷 검색의 몇 시간을 절약 할 수 :)
을당신은 목표 변경은 자바 스크립트 속성 :
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을
트릭은 이벤트 위임 수행 할 수 있습니다와 "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
난 내 자신의 질문에 대답하기로 결정