Buka URL di jendela yang sama dan di tab yang sama


361

Saya ingin membuka tautan di jendela yang sama dan di tab yang sama yang berisi halaman dengan tautan itu.

Ketika saya mencoba membuka tautan dengan menggunakan window.open, maka tautan itu terbuka di tab baru — bukan di tab yang sama di jendela yang sama.

Jawaban:


600

Anda perlu menggunakan atribut nama:

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

Sunting : Url harus diawali dengan protokol. Tanpa itu mencoba membuka url relatif. Diuji di Chrome 59, Firefox 54 dan IE 11.


2
Argumen kedua hanyalah nama ke jendela baru, seperti atribut target=tag a. Bahkan, Anda dapat memberi nama jendela apa pun yang Anda suka. Yang Anda butuhkan hanyalah menetapkan nilai yang berbeda, sehingga tidak akan terbuka di jendela atau tab yang sama.
ijse

12
@ijse Sebenarnya, ada beberapa nama khusus, salah satunya adalah '_self' yang merujuk pada win / tab yang digunakan oleh kode.;)
vdbuilder

5
'_self' tidak ditentukan dalam dokumen MDN [ developer.mozilla.org/en-US/docs/Web/API/Window/open] di window.open (). Solusi lintas-browser lainnya adalah dengan menggunakan location.replace ().
Bryan Rayner

1
Tautan MDN dalam komentar di atas secara otomatis terhubung ke 404. Tautan adalah developer.mozilla.org/en-US/docs/Web/API/Window/open
groovecoder

_selfdisebutkan di bagian 5.1.6 Menjelajahi nama konteks dari Rekomendasi HTML5 W3C 28 Oktober 2014 di: w3.org/TR/html/browsers.html#browsing-context-names (tetapi window.locationmasih lebih bersih).
Dem Pilafian


62

Untuk memastikan bahwa tautan dibuka di tab yang sama, Anda harus menggunakan window.location.replace()

Lihat contoh di bawah ini:

window.location.replace("http://www.w3schools.com");

Sumber: http://www.w3schools.com/jsref/met_loc_replace.asp


3
Itu tidak menjaga riwayat penjelajahan, kita tidak harus menggunakannya. alih-alih coba window.open (" google.com", "_ top" ) tautan referensi geeksforgeeks.org/…
shyam_

2
ini baik untuk saya, terima kasih Bung
Angelus Roman

28

Anda dapat membawanya ke halaman yang sama tanpa menentukan url:

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

Itu bukan halaman yang sama. Ini akan menghapus string kueri apa pun dari URL yang ada.
Quentin

20

Jika Anda memiliki halaman Anda di dalam "bingkai" maka "Window.open ('logout.aspx', '_ self')"

akan diarahkan ke dalam bingkai yang sama. Jadi dengan menggunakan

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

kami dapat memuat halaman sebagai permintaan baru.


11

Salah satu fitur javascript yang paling menonjol adalah untuk mengaktifkan penangan onclick on the fly. Saya menemukan mekanisme berikut lebih dapat diandalkan daripada menggunakan location.href=''atau location.reload()atau 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);
}

Kode di atas juga membantu untuk membuka tab / jendela baru dan melewati semua pemblokir pop-up !!! Misalnya

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

Buka url lain seperti tautan klik di

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

8

Apakah Anda harus menggunakan window.open? Bagaimana dengan menggunakan window.location="http://example.com"?


5

window.open(url, wndname, params), ia memiliki tiga argumen. jika Anda tidak ingin itu terbuka di jendela yang sama, cukup tetapkan wndname yang berbeda. seperti :

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

Berikut detailnya window.open(), Anda bisa mempercayainya!
https://developer.mozilla.org/en/DOM/window.open

Selamat mencoba ~~


7
Pertanyaannya sangat jelas tentang keinginan untuk membuka di jendela dan tab yang sama !
SNag

2

Dengan html 5 Anda dapat menggunakan API riwayat .

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

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

Kemudian pada halaman berikutnya Anda dapat mengakses objek keadaan seperti itu

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

1

Cukup mudah. Buka jendela pertama sebagaiwindow.open(url, <tabNmae>)

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

dan untuk semua window.open selanjutnya, gunakan nama tab yang sama, bukan _self, _parentdll.



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> 

Sama sekali tidak masuk akal untuk memicu pemuatan ulang halaman saat ini dan kemudian membatalkannya di pernyataan berikutnya dengan memuat halaman baru.
Quentin

-3

Sebagai ref MDN mengatakan, hanya perlu memberikan nama baru window/ tab.

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

buka di halaman tab saat ini menggunakan _self

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

buka di halaman tab baru menggunakan _blank

demo vue

    <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");
    },

Anda tidak dapat dengan andal mengetahui nama jendela saat ini. Lebih baik mengikuti saran dari jawaban 2011 ini dan menggunakan nama _self khusus.
Quentin

Contoh pertama Anda salah. _blank, secara eksplisit, adalah jendela atau tab baru tanpa nama .
Quentin

tidak semuanya! jika saya mengatur _self, itu akan terbuka di halaman saat ini yang buruk bagi saya, saya hanya perlu satu halaman baru.
xgqfrms

Pertanyaannya bukan tentang apa yang Anda butuhkan! Jika Anda ingin menjawab pertanyaan tentang apa yang Anda butuhkan, maka temukan pertanyaan yang menanyakannya.
Quentin
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.