같은 창과 같은 탭에서 URL 열기


361

같은 창과 링크가있는 페이지가 포함 된 동일한 탭에서 링크를 열고 싶습니다.

를 사용하여 링크를 열려고 window.open하면 동일한 창의 동일한 탭이 아닌 새 탭에서 열립니다.

답변:


600

이름 속성을 사용해야합니다.

window.open("https://www.youraddress.com","_self")

편집 : URL 앞에 프로토콜이 붙어야합니다. 그것이 없으면 상대 URL을 열려고합니다. Chrome 59, Firefox 54 및 IE 11에서 테스트되었습니다.


2
두 번째 인수는 target=tag 속성과 같이 새 창에 대한 이름 일뿐 a입니다. 사실, 원하는대로 창 이름을 지정할 수 있습니다. 필요한 것은 모두 다른 값으로 설정되어 동일한 창이나 탭에서 열리지 않도록하는 것입니다.
ijse

12
@ijse 실제로, 몇몇 특별한 이름이 있는데, 그 중 하나는 코드가 실행되는 win / tab을 나타내는 '_self'입니다.;)
vdbuilder

5
'_self'는 window.open () 의 MDN [ developer.mozilla.org/en-US/docs/Web/API/Window/open] 문서에 지정되어 있지 않습니다 . 더 크로스 브라우저 솔루션은 location.replace ()를 사용하는 것입니다.
Bryan Rayner

1
위의 의견에서 MDN 링크는 404에 자동 링크됩니다. 링크는 developer.mozilla.org/en-US/docs/Web/API/Window/open
groovecoder

_self2014 년 10 월 28 일자 HTML5 W3C 권장 사항 의 섹션 5.1.6 브라우징 컨텍스트 이름 : w3.org/TR/html/browsers.html#browsing-context-names ( 여전히 깨끗합니다) 에서 언급됩니다 . window.location
Dem Pilafian



28

URL을 지정하지 않고 동일한 페이지로 이동할 수 있습니다.

window.open('?','_self');

같은 페이지가 아닙니다. 기존 URL에서 쿼리 문자열을 제거합니다.
Quentin

20

"frame"안에 페이지가 있으면 "Window.open ( 'logout.aspx', '_ self')"

동일한 프레임 내에서 리디렉션됩니다. 따라서

"Window.open('logout.aspx','_top')"

새로운 요청으로 페이지를로드 할 수 있습니다.


11

가장 두드러진 자바 스크립트 기능 중 하나는 onclick 핸들러를 즉시 실행하는 것입니다. 내가 사용하는 것보다 더 신뢰할 수있는 메커니즘을 다음 발견 location.href=''하거나 location.reload()또는 window.open:

// this function can fire onclick handler for any DOM-Element
function fireClickEvent(element) {
    var evt = new window.MouseEvent('click', {
        view: window,
        bubbles: true,
        cancelable: true
    });

    element.dispatchEvent(evt);
}

// this function will setup a virtual anchor element
// and fire click handler to open new URL in the same room
// it works better than location.href=something or location.reload()
function openNewURLInTheSameWindow(targetURL) {
    var a = document.createElement('a');
    a.href = targetURL;
    fireClickEvent(a);
}

위의 코드는 새 탭 / 창을 열고 모든 팝업 차단기를 우회하는데도 도움이됩니다 !!! 예 :

function openNewTabOrNewWindow(targetURL) {
    var a = document.createElement('a');
    a.href = targetURL;

    a.target = '_blank'; // now it will open new tab/window and bypass any popup blocker!

    fireClickEvent(a);
}

10

링크 클릭으로 다른 URL 열기

window.location.href = "http://example.com";

8

사용해야 window.open합니까? 사용은 window.location="http://example.com"어떻습니까?


5

window.open(url, wndname, params)여기에는 세 가지 주장이 있습니다. 같은 창에서 열지 않으려면 다른 wndname을 설정하십시오. 같은 :

window.open(url1, "name1", params); // this open one window or tab
window.open(url1, "name2", params); // though url is same, but it'll open in another window(tab).

에 대한 자세한 내용은 다음과 같습니다. window.open()신뢰할 수 있습니다.
https://developer.mozilla.org/en/DOM/window.open

시도해보십시오 ~~


7
문제는에서 열 싶은에 대해 매우 명확하게 같은 창같은 탭 !
SNag

2

html 5에서는 history API를 사용할 수 있습니다 .

history.pushState({
  prevUrl: window.location.href

}, 'Next page', 'http://localhost/x/next_page');
history.go();

그런 다음 다음 페이지에서 상태 객체에 액세스 할 수 있습니다.

let url = history.state.prevUrl;
if (url) {
  console.log('user come from: '+ url)
}

1

꽤 쉽습니다. 다음과 같이 첫 번째 창 열기window.open(url, <tabNmae>)

예: window.open("abc.com",'myTab')

그리고 다음 모든 window.open를 들어, 사용하는 같은 탭 이름 대신 _self, _parent


1

정확히 이렇게 window.open("www.youraddress.com","_self")


1
   Just Try in button.

   <button onclick="location.reload();location.href='url_name'" 
   id="myButton" class="btn request-callback" >Explore More</button>

   Using href 

  <a href="#" class="know_how" onclick="location.reload();location.href='url_name'">Know More</a> 

현재 페이지를 다시로드 한 다음 새 페이지를로드하여 다음 명령문에서 취소하는 것은 전혀 의미가 없습니다.
Quentin

-3

MDN의 심판이 말했듯이 new window/ 의 이름을 지정하면 tab됩니다.

https://developer.mozilla.org/en-US/docs/Web/API/Window/open#Syntax

를 사용하여 현재 탭 페이지에서 엽니 다 _self

<a
 href="url"
 target="_self">
   open
</a>
const autoOpenAlink = (url = ``) => {
  window.open(url, "open testing page in the same tab page");
}

를 사용하여 새 탭 페이지에서 열기 _blank

부 데모

    <div style="margin: 5px;">
        <a
            :href="url"
            @click="autoOpenAlink"
            target="_blank"
            >
            {{url}}
        </a>
    </div>

    autoOpenAlink(e) {
        e.preventDefault();
        let url = this.url;
        window.open(url, "iframe testing page");
    },

현재 창의 이름을 확실하게 알 수 없습니다. 이 2011 답변 의 조언을 따르고 특별한 _self 이름을 사용하는 것이 좋습니다.
Quentin

첫 번째 예는 잘못되었습니다. _blank는 명시 적으로 명명되지 않은 창 또는 탭입니다.
Quentin

전혀! _self를 설정하면 나에게 나쁜 현재 페이지에서 열리므로 새 페이지가 하나만 있으면됩니다.
xgqfrms

문제는 무엇인지 아닌 당신이 필요 해요! 필요한 것에 대한 질문에 대답하려면 질문을 찾으십시오.
Quentin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.