URL'yi aynı pencerede ve aynı sekmede aç


361

Bir bağlantıyı aynı pencerede ve bağlantı içeren sayfayı içeren aynı sekmede açmak istiyorum.

Kullanarak bir bağlantı açmaya çalıştığımda window.open, aynı pencerede aynı sekmede değil, yeni sekmede açılır.

Yanıtlar:


601

Name niteliğini kullanmanız gerekir:

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

Düzenleme : URL, protokolle başlamalıdır. O olmadan göreceli url açmaya çalışır. Chrome 59, Firefox 54 ve IE 11'de test edilmiştir.


2
İkinci argüman, yeni pencerenin target=etiketinin niteliği gibi bir adıdır a. Aslında, pencerenizi istediğiniz gibi adlandırabilirsiniz. İhtiyacınız olan tek şey farklı bir değer ayarlamak, böylece aynı pencerede veya sekmede açılmayacak.
Aralık'ta

12
@ijse Aslında, kodun çalıştığı kazan / sekme anlamına gelen '_self' olan birkaç özel isim vardır.;)
vdbuilder

5
window.open () üzerindeki MDN [ developer.mozilla.org/en-US/docs/Web/API/Window/open] dokümanlarında '_self' belirtilmedi . Daha fazla çapraz tarayıcı çözümü location.replace () kullanmaktır.
Bryan Rayner

1
Yukarıdaki
yorumdaki

_selfbölümünde açıklanan 5.1.6 Tarama bağlam isimleri arasında Ekim 2014 HTML5 W3C Tavsiye 28 : En w3.org/TR/html/browsers.html#browsing-context-names (ama window.locationyine de temizleyici).
Dem Pilafian



29

URL belirtmeden aynı sayfaya gitmesini sağlayabilirsiniz:

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

Aynı sayfa değil. Herhangi bir sorgu dizesini mevcut URL'den kaldırır.
Quentin

20

Sayfalarınızı "çerçeve" içinde alıyorsanız "Window.open ('logout.aspx', '_ self')"

aynı çerçeve içine yönlendirilecek. Yani kullanarak

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

sayfayı yeni istek olarak yükleyebiliriz.


11

Javascript'in en önemli özelliklerinden biri, tıklama işleyicilerini anında ateşlemektir. Ben kullanmaktan daha güvenilir bir mekanizma aşağıdaki buldum location.href=''ya location.reload()ya 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);
}

Yukarıdaki kod da yeni sekme / pencere açmak ve tüm pop-up engelleyicileri atlamak için yararlıdır !!! Örneğin

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

Bir tıklama bağlantısı gibi başka bir URL açın

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

8

Kullanmak zorunda window.openmısın? Kullanmaya ne dersiniz window.location="http://example.com"?


5

window.open(url, wndname, params), üç argümanı vardır. aynı pencerede açılmasını istemiyorsanız, sadece farklı bir wndname ayarlayın. gibi :

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).

İşte hakkında detaylar window.open(), güvenebilirsiniz!
https://developer.mozilla.org/en/DOM/window.open

bir deneyin ~~


7
Soru, aynı pencerede ve aynı sekmede açmak istemekle ilgili !
SNag

2

Html 5 ile geçmiş API'sını kullanabilirsiniz .

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

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

Sonra bir sonraki sayfada durum nesnesine şu şekilde erişebilirsiniz:

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

1

Bu oldukça kolay. İlk pencereyi şu şekilde açwindow.open(url, <tabNmae>)

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

ve sonraki tüm pencere için . açık , vb. yerine aynı sekme adını kullanın ._self_parent


1

Aynen böyle 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> 

Geçerli sayfanın yeniden yüklenmesini tetiklemek ve daha sonra yeni bir sayfa yükleyerek sonraki ifadede iptal etmek hiç mantıklı değil.
Quentin

-3

MDN en ref söylediği gibi sadece yeni bir ad vermek gerekirse window/ ' tab.

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

kullanarak geçerli sekme sayfasında aç _self

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

kullanarak yeni bir sekme sayfasında aç _blank

demo demeti

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

vue

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

Geçerli pencerenin adını güvenilir bir şekilde bilemezsiniz. Bu 2011 cevabındaki tavsiyelere uymak ve özel _self adını kullanmak daha iyidir.
Quentin

İlk örneğiniz yanlış. _blank, açıkça adlandırılmamış yeni bir pencere veya sekmedir.
Quentin

bir şey değil! _self ayarladıysam, geçerli sayfada açılacak, bu benim için kötü, sadece yeni bir sayfaya ihtiyacım var.
xgqfrms

Soru ne ilgisi yok sen lüzum! Neye ihtiyacınız olduğu hakkında bir soruya cevap vermek istiyorsanız, bunu soran bir soru bulun.
Quentin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.