프로그래밍 방식으로 탭에서 새 페이지 열기


98

새 탭을 사용하여 새 페이지를 열도록 Safari 또는 IE7을 "강제"하려고합니다 .

프로그래밍 방식으로 나는 다음과 같은 것을 의미합니다.

window.open('page.html','newtaborsomething');

1
요점을 잘 모르겠습니다. IE에서 작동하는 앱을 개발 중이고 새 탭에서 각각의 새 페이지를 열고 싶습니까? 아니면 링크를 클릭했을 때 새 탭을 열도록 IE를 설정하고 싶습니까? 아니면 더 많은 링크가있는 사이트를 만들고 개별적으로 열도록 하시겠습니까? Pls는 그것을 더 명확하게 만듭니다.
Dungeo

귀하의 모든 의견과 답변 덕분에 이것이 큰 문제가 아니며 제 개발에 문제가되어서는 안된다는 것을 알고 있습니다. 그러나 이것은 고객의 요청이며 제가 알고 싶었던 중요한 요청은 아닙니다. 문제는 IE7과 Safari가 자바 스크립트 또는 대상 속성을 사용하는 탭이있는 팝업을 열지 않는다는 것입니다. 사실입니까?
Ricardo Vega

답변:


63

Internet Explorer 사용자가 제어하는 ​​옵션이므로 직접 제어 할 수 없습니다.

다른 창 이름으로 Window.open을 사용하여 페이지를 열면 팝업과 같은 새 브라우저 창 에서 열리 거나 사용자가 브라우저를 구성한 경우 새 탭에서 열립니다.


"Internet Explorer에서 팝업 열기 방식 결정"옵션을 선택한 경우 Internet Explorer는이 결정을 내리는 데 어떤 기준을 사용합니까?
Dead.Rabit

113

Firefox에서 작동하는 경우 앵커에 target = "_ newtab"속성을 추가하여 새 탭을 강제로 열 수 있습니다.

<a href="some url" target="_newtab">content of the anchor</a>

자바 스크립트에서 사용할 수 있습니다

window.open('page.html','_newtab');

샘과 부분적으로 동의합니다. 사용자가 링크를 클릭 하기 전에 일어날 일에 대한 힌트를 보여주지 않고 새 페이지 나 새 탭을 열도록 강요해서는 안됩니다 .

다른 브라우저에서도 작동하는지 알려주세요 (현재 Firefox 이외의 다른 브라우저에서 시도 할 기회가 없습니다).

편집 : ie7에 대한 참조 추가 아마도이 링크가 유용 할 수 있습니다.
http://social.msdn.microsoft.com/forums/en-US/ieextensiondevelopment/thread/951b04e4-db0d-4789-ac51-82599dc60405/


6
이 Firefox 팁에 감사드립니다. 이제 "_newtab"및 "newtab"을 제거하도록 TargetKiller 애드온을 업데이트했습니다. : P
thenonhacker

1
나는 당신의 대답에 정말로 감사하지만, Firefox가 그것을 할 것이라는 것을 알고 있습니다 (내가 테스트하지 않은 일부 텍스트는 이것이 항상 사실은 아니라고 언급하고 새 창이나 탭을 얻을 수있는 기회가 50-50입니다). 나는 또한이 문제가되지해야한다고 생각하지만, 당신은 : 고객을 알고
리카르도 베가에게

2
모든 빌드 / 플랫폼에 해당되는 것은 아니지만 Linux의 Firefox 3.5에서는이 작업을 두 번 이상 허용하지 않습니다. 페이지에 여러 개의 target = "_ newtab"링크가있는 경우 해당 링크 중 하나를 클릭합니다. 만 채 웁니다 하나 입니다 새 탭을 ... 후속 클릭은 해당 탭에서 이전에 열었던 것을 덮어 쓰게됩니다. 브라우저 별 해결 방법이 아니라 실제로 "_newtab" 이라는 탭을 여는 것 같습니다 .
Rylee Corradini

55
누군가가 반대로 문서를 가지고 있지 않는 한 "_newtab"은 무의미하다고 확신합니다. 당신이하는 일은 이름 이 _newtab 인 창을 여는 것뿐입니다 (이것이 그 대상을 가진 모든 후속 링크가 같은 창에서 열리는 이유입니다). "foo"또는 "bar"를 타겟팅하고 동일한 동작을 볼 수 있습니다. 잘 알려진 유일한 대상은 _blank, _self, _parent 및 _top입니다. htmlcodetutorial.com/linking/_A_TARGET.html
Tom Lianza 2011 년

43

다음을 사용하려는 사람들 :

window.open('page.html', '_newtab');

window.open 메서드를 실제로 살펴 봐야합니다.

브라우저에 "_newtab"이라는 새 창을 열고 page.html을로드하도록 지시하는 것뿐입니다. 로드하는 모든 새 페이지가 해당 창에로드됩니다. 그러나 사용자가 새 창 대신 새 탭에서 새 페이지를 열도록 브라우저를 설정 한 경우 탭이 열립니다. 어쨌든 창이나 탭에 동일한 이름을 사용하고 있습니다.

다른 창이나 탭에서 다른 페이지를 열려면 새 창 / 탭의 이름을 다음과 같이 다른 이름으로 변경해야합니다.

window.open('page2.html', '_newtab2');

물론 새 창 / 탭의 이름은 _newtab2 대신 page1, page2, page3 등과 같은 이름이 될 수 있습니다.


3
그의 물건을 알고 있습니다. '_newtab'은 예약 된 이름이 아닙니다. '_blank'는 지정되지 않고 이름이 지정되지 않은 다른 창 / 탭을 여는 특별한 것입니다.이 창은 계속해서 사용할 수 있습니다. '_newtab'은 새 탭 (기본값) 또는 창에 지정한 특정 이름을 제외하고는 특별하지 않습니다. 브라우저는 어떤 URL을 보내든 계속 새로 고침합니다.
BradChesney79

14

새 탭을 사용하든 새 창을 사용하든 사용자가이 동작을 수정하는 것은 개발자의 업무가 아닙니다. 나는 당신이 그것을 할 수 있다고 생각하지 않습니다.

내 애완 동물-사이트가 새 창 / 탭에서 열도록 강제하는 것이 싫다-나는 스스로 결정을 내릴 수있다. 특히 그들이 자바 스크립트로 할 때 정말 도움이되지 않습니다.


1
+1 to Sam-탭이나 창에서 열리는 새 페이지는 브라우저 (및 사용자) 특정 선택입니다. 일반적으로 사이트가 새 창을 열 때 싫어요.
Richard Ev

이 외에도 "엄격한"정의에는 사용자를 성가 시게하지 않기 때문에 유효한 속성 "대상"이 없습니다. 시도해보십시오 : validator.w3.org
guerda

4
나는 집에서 여러 개의 탭을 여는 것을 좋아하므로이 경우 사용자입니다. 예외가 있음을 상기시켜주십시오.
Mark Essel

7
나는 사이트가 행동을 강요 할 때 성 가실 수 있다는 데 동의하지만, 누군가가 그것을 원하는 이유를 고려하지 않고 무언가를하지 말아야한다고 단순한 상태로 말하는 것은 약간 도움이되지 않는다고 생각합니다. 사이트가 새 탭, 특히 외부 사이트 링크에서 항목을 여는 것이 일반적이거나 활성 페이지를 새 콘텐츠로 대체하는 것이 도움이되지 않아 완전히 예상치 못한 동작이 발생하지 않는 경우가 많습니다. 나는 또한 이것이 실제로 질문에 대한 대답이 아니며 원래 게시물에 대한 의견으로 더 적합했을 것이라고 제안합니다.
andyface

1
사용자의 기본값이 브라우저가 아닌 웹 애플리케이션 별 디자인 선택이라고 가정하고 동의하지 않습니다. 브라우저는 애플리케이션이없는 기본값을 구독 할 수 있습니다. 또한 브라우저가 사용자에게 애플리케이션 기본값 / 브라우저 기본값을 재정의 할 수있는 방법을 제공한다면 두 가지 모두에서 최고입니다. 사용자> 애플리케이션> 브라우저.
Derek Litz

8

이미 시도해 보셨습니까?

var open_link = window.open('','_blank');
open_link.location="somepage.html";

이 크로스 브라우저가 호환 되나요? IE8에서 작동하는 것처럼 보이며 향후 버전이나 다른 브라우저에 대해 걱정합니다.
n00b

예 .. 크로스 브라우저와 호환됩니다. 지금까지 아무 문제 없어 : D
Thurein SOE

5

Chrome에서 발견했습니다.

window.open('page.html','_newtab')

한 번만 작동합니다.

당신이 사용할 수있는:

window.open(ct.getNewHref(),'_newtab' + Math.floor(Math.random()*999999));

여러 새 탭을 열려면.


10
Chrome에서 _newtab은 이름 일 뿐이며 "_newtab"이라는 탭에서 페이지를 열도록 요청하기 때문입니다
w00t

3

jQuery와 함께 사용하는 코드 :

$("a.btn_external").click(function() {
    url_to_open = $(this).attr("href");
    window.open(url_to_open, '_blank');
    return false;
});

이는 자식에서 부모의 클릭 이벤트를 구별하는 데 유용합니다. 이 방법을 사용하면 상위의 클릭 이벤트를 트리거하지 않습니다.


8
단순히 오래된 HTML을 사용하지 않는 이유는 무엇입니까? <a href="page.html" target="_blank">foo</a>
pixelastic 2012-01-09

1
@pixelastic "이 방법을 사용하면 부모의 클릭 이벤트를 트리거하지 않습니다."
Michael Blackburn

3

이것은 100 % 작동합니다

window.open('http://www.google.com/','_newtab' + Date.now());


0

원하는 경우이 방법을 사용할 수 있습니다.이 방법은 약간 해키하지만 원하는 기능을 제공합니다.

jQuery('<a/>', {
    id: 'foo',
    href: 'http://google.com',
    title: 'Become a Googler',
    rel: 'external',
    text: 'Go to Google!',
    target:'_blank',
    style:'display:none;'
}).appendTo('#mySelector');

$('#foo').click()

jsfiddle을 제공 할 수 있습니까?
Xenology 2013-09-13

-2

배치 파일을 호출 할 수 있으면 작동 할 수 있습니다 (XP sp2 및 IE8에서 PHP를 사용합니다 ... IE7, dunno를 사용해 볼 수 있음). .bat 파일에서 다음 (또는 유사)을 사용하여 Windows를 엽니 다. ""C : \ Progra ~ 1 \ Intern ~ 1 \ iexplore "http://www.site.com"을 시작합니다. 인용 부호와 C : \ Progr ... 등 사이에는 공백이 없습니다. 어떤 시점에서 이것은 새 탭이 아닌 새 창 (즉, target = "_ blank")을 열기 시작할 수 있지만 어느 정도 작동합니다. 광범위하게 테스트되지 않았습니다. 일반 배치 파일 (CMD.exe)에서이를 사용하려면 창이 이미 열려 있어야합니다. 내가 우연히 발견 한 것을 공유했습니다. 설명을 위해 편집되었습니다.


-7
<a href="http://www.google.com/" target="_self">New Tab Example</a>

IE7에서 작동합니다.

문안 인사,

Glenn


8
Glenn 이것은 OP가 요구 한 것과 반대입니다. _self는 동일한 창 또는 프레임에서 문서를 엽니 다.
travega

또한 프로그래밍 방식으로 여는 방법도 아닙니다. 놀랍게도이 답변으로 +10 rep (+ 3 / -10)을 얻는 방법입니다.
vusan 2017-06-14
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.