같은 창과 같은 탭에서 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.