JavaScript에서 target="_blank"를 시뮬레이션하는 방법
사용자가 연결을 누르면 데이터베이스의 필드를 업데이트한 후 새 창에서 요청된 연결을 열어야 합니다.업데이트는 문제가 없지만 다른 하이퍼링크를 클릭하지 않고 새 창을 여는 방법을 모르겠습니다.
<body onLoad="document.getElementById('redirect').click">
<a href="http://www.mydomain.com?ReportID=1" id="redirect" target="_blank">Report</a>
</body>
<script>
window.open('http://www.example.com?ReportID=1', '_blank');
</script>
두 번째 매개 변수는 선택 사항이며 대상 창의 이름입니다.
이것은 도움이 될 수 있습니다.
var link = document.createElementNS("http://www.w3.org/1999/xhtml", "a");
link.href = 'http://www.google.com';
link.target = '_blank';
var event = new MouseEvent('click', {
'view': window,
'bubbles': false,
'cancelable': true
});
link.dispatchEvent(event);
저는 이것이 완료되고 정리된 거래라는 것을 알고 있지만, 여기 제 앱에서 문제를 해결하기 위해 사용하는 것이 있습니다.
if (!e.target.hasAttribute("target")) {
e.preventDefault();
e.target.setAttribute("target", "_blank");
e.target.click();
return;
}
기본적으로 여기서 일어나는 일은 링크가 있는지 확인하는 것입니다.target=_blank
기여하다.그렇지 않으면 링크 트리거를 중지하고 새 창에서 열리도록 설정한 다음 프로그래밍 방식으로 클릭합니다.
한 단계 더 나아가 다음을 시도하여 원래 클릭의 중지를 건너뛰고 코드를 훨씬 더 압축할 수 있습니다.
if (!e.target.hasAttribute("target")) {
e.target.setAttribute("target", "_blank");
}
만약 당신이 속성 크로스 브라우저를 추가하는 구현을 추상화하기 위해 jQuery를 사용했다면, 당신은 이것을 대신 사용해야 합니다.e.target.setAttribute("target", "_blank")
:
jQuery(event.target).attr("target", "_blank")
정확한 사용 사례에 맞게 재작업해야 할 수도 있지만, 제가 가려운 곳을 긁은 방법은 이렇습니다.
이것은 여러분이 가지고 놀 수 있는 실제 행동의 데모입니다.
(jsfiddle의 링크는 이 토론으로 돌아갑니다.새 탭 필요 없음 :)
jQuery는 이렇게 합니다.링크별로 새 창에서 열고 싶은 클래스가 있습니다.
$(function(){
$(".external").click(function(e) {
e.preventDefault();
window.open(this.href);
});
});
저는 개인적으로 단일 링크용이라면 다음 코드를 사용하는 것을 선호합니다.그렇지 않으면 유사한 코드로 함수를 만드는 것이 가장 좋습니다.
onclick="this.target='_blank';"
저는 W3C의 XHTML 엄격한 테스트를 우회하기 위해 그것을 사용하기 시작했습니다.
a 태그에서 href를 추출할 수 있습니다.
window.open(document.getElementById('redirect').href);
이것이 제가 제 웹사이트에서 하는 방법입니다.몇 개의 버튼이 각각의 새로운 웹 페이지에 대해 항상 새로운 탭을 여는 하나의 자바스크립트 함수를 호출합니다.
<button type="button" onclick="newTab('http://google.com')">search</button>
<button type="button" onclick="newTab('http://amazon.com')">buy</button>
<button type="button" onclick="newTab('http://gmail.com')">read</button>
<script>
function newTab(url) {
window.open(url, '_blank');
}
</script>
이렇게 하면 모든 페이지 링크를 열 수 있습니다.
$(".myClass").each(
function(i,e){
window.open(e, '_blank');
}
);
다음 시간마다 열립니다.<a href="" class="myClass"></a>
항목을 클릭한 것처럼 항목을 다른 탭에 연결합니다.
브라우저 콘솔에 붙여넣기만 하면 됩니다.jQuery 프레임워크 필요
사용자가 Shift 키를 누른 상태에서 새 창이 아닌 새 탭을 프로그래밍 방식으로 열려고 할 때 해결책은 시간 초과를 줄로 묶는 것입니다.
브라우저 설정에 따라 다르지만 기본 크롬 동작은 "shift down + javascript's window.open()" 조합에 문제가 있습니다.
someElement.addEventListener('click', (e) => {
if (e.shiftKey) {
// Shift down + window.open() requires a "timeout" wrapper
// Else a "new window" opens instead of a new tab
setTimeout(() => window.open(url, '_blank'))
} else {
// if shift is not down this will open a new tab
window.open(url, '_blank')
}
}
js의 변경 사항(href='#' target='_blank')
언급URL : https://stackoverflow.com/questions/1574008/how-to-simulate-target-blank-in-javascript
'programing' 카테고리의 다른 글
복사 스레드가 lsn(Mariabackup 무한, 루프, innodb)을 읽기를 기다리는 중입니다. (0) | 2023.08.06 |
---|---|
파일을 복사하고 이름을 바꿀 수 있는 단일 PowerShell 명령이 있습니까? (0) | 2023.08.06 |
mysql 전체 텍스트 검색 오른쪽 색인 (0) | 2023.08.06 |
iOS 7 UIRefreshControl tintColor가 beginRefresh에 대해 작동하지 않음 (0) | 2023.08.06 |
'Element'에서 'setAttribute'를 실행하지 못했습니다. ']'은(는) 올바른 특성 이름이 아닙니다. 각 4 (0) | 2023.08.06 |