Buka halaman baru di Tab secara terprogram

98

Saya mencoba untuk "memaksa" Safari atau IE7 membuka halaman baru menggunakan tab baru .

Secara terprogram, maksud saya seperti:

window.open('page.html','newtaborsomething');
Ricardo Vega
sumber
1
Saya tidak yakin saya mengerti maksudnya - apakah Anda mengembangkan aplikasi, yang bekerja dengan IE dan Anda ingin membuka setiap halaman baru di tab baru? Atau Anda hanya ingin mengatur IE untuk membuka tab baru saat mengklik tautan? Atau apakah Anda membuat situs dengan lebih banyak tautan dan Anda ingin agar dibuka secara terpisah? Tolong buat lebih jelas.
Dungeo
Terima kasih atas semua komentar dan jawaban Anda, saya tahu ini bukan masalah besar dan seharusnya tidak menjadi masalah dalam perkembangan saya, tetapi ini adalah permintaan klien, bukan yang penting yang hanya ingin saya ketahui. Masalahnya adalah IE7 dan Safari tidak akan membuka popup dengan tab menggunakan javascript atau atribut target, benar?
Ricardo Vega

Jawaban:

63

Anda tidak dapat mengontrol ini secara langsung, karena ini adalah opsi yang dikontrol oleh pengguna Internet Explorer.

Membuka halaman menggunakan Window.open dengan nama jendela yang berbeda akan terbuka di jendela browser baru seperti popup, ATAU buka di tab baru, jika pengguna mengkonfigurasi browser untuk melakukannya.

perampok
sumber
Saat opsi "Biarkan Internet Explorer memutuskan bagaimana munculan terbuka" dipilih, kriteria apa yang digunakan Internet Explorer untuk membuat keputusan ini?
Dead.Rabit
113

Anda dapat, di Firefox berfungsi, menambahkan atribut target = "_ newtab" ke jangkar untuk memaksa pembukaan tab baru.

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

Dalam javascript Anda bisa menggunakan

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

Mengatakan itu, saya setuju sebagian dengan Sam. Anda tidak boleh memaksa pengguna untuk membuka halaman baru atau tab baru tanpa menunjukkan petunjuk tentang apa yang akan terjadi sebelum mereka mengklik link tersebut.

Beri tahu saya jika ini juga berfungsi di browser lain (saya tidak memiliki kesempatan untuk mencobanya di browser selain Firefox saat ini).

Edit: referensi tambahan untuk ie7 Mungkin tautan ini bisa berguna
http://social.msdn.microsoft.com/forums/en-US/ieextensiondevelopment/thread/951b04e4-db0d-4789-ac51-82599dc60405/

Eineki
sumber
6
Terima kasih atas tip Firefox ini, sekarang saya telah memperbarui addon TargetKiller saya untuk menghapus "_newtab" dan "newtab". : P
thenonhacker
1
Saya sangat menghargai jawaban Anda, tetapi saya tahu bahwa Firefox akan melakukannya (beberapa teks, belum saya uji, berkomentar bahwa ini tidak selalu benar, ada kemungkinan 50-50 untuk mendapatkan jendela atau tab baru). Saya juga berpikir ini seharusnya tidak menjadi masalah, tetapi, Anda tahu klien :)
Ricardo Vega
2
Ini mungkin tidak terjadi pada semua build / platform, tetapi Firefox 3.5 di Linux tidak memungkinkan Anda melakukan ini lebih dari sekali ... jika Anda memiliki beberapa link target = "_ newtab" di halaman Anda, klik salah satu link tersebut hanya akan mengisi satu tab baru ... yaitu, klik berikutnya akan menimpa semua yang dibuka sebelumnya di tab itu. Membuat saya berpikir ini sebenarnya membuka tab bernama "_newtab", bukan sebagai solusi khusus browser.
Rylee Corradini
55
Saya cukup yakin "_newtab" tidak ada artinya, kecuali seseorang memiliki dokumentasi yang bertentangan. Yang Anda lakukan hanyalah membuka jendela yang namanya _newtab (itulah sebabnya semua tautan berikutnya dengan target itu terbuka di jendela yang sama). Anda dapat menargetkan "foo" atau "bar" dan melihat perilaku yang sama. Satu-satunya target terkenal adalah _blank, _self, _parent, dan _top. htmlcodetutorial.com/linking/_A_TARGET.html
Tom Lianza
43

Bagi Anda yang mencoba menggunakan yang berikut ini:

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

harus benar-benar melihat metode window.open.

Yang Anda lakukan hanyalah memberi tahu browser untuk membuka jendela baru NAMED "_newtab" dan memuat page.html ke dalamnya. Setiap halaman baru yang Anda muat akan dimuat ke jendela itu. Namun, jika browser pengguna disetel untuk membuka halaman baru di tab baru, bukan di jendela baru, itu akan membuka tab. Terlepas dari itu, itu menggunakan nama yang sama untuk jendela atau tab.

Jika Anda ingin halaman yang berbeda dibuka di jendela atau tab yang berbeda, Anda harus mengubah NAMA jendela / tab baru menjadi sesuatu yang berbeda seperti:

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

Tentu saja nama untuk jendela / tab baru dapat berupa nama apa saja seperti halaman1, halaman2, halaman3, dll., Bukan _newtab2.

Bob Lindabury
sumber
3
tahu barangnya. '_newtab' bukan nama yang dipesan. '_blank' adalah hal khusus yang membuka jendela / tab lain yang tidak ditentukan dan tidak disebutkan namanya-- yang ini dapat Anda gunakan terus menerus. '_newtab' tidak istimewa kecuali itu adalah nama spesifik yang Anda berikan pada tab baru (default) atau jendela, yang terus disegarkan oleh browser Anda dengan url apa pun yang Anda kirimkan.
BradChesney79
14

Terserah pengguna apakah mereka ingin menggunakan tab baru atau jendela baru, bukan urusan pengembang untuk mengubah perilaku ini. Saya tidak berpikir Anda bisa melakukannya.

Hewan peliharaan kesal saya - Saya benci jika situs memaksa saya untuk membuka di jendela / tab baru - Saya cukup mampu membuat keputusan itu sendiri. Terutama ketika mereka melakukannya dalam javascript - itu sangat tidak membantu.

Sam Meldrum
sumber
1
+1 untuk Sam - membuka halaman baru di tab atau jendela adalah pilihan khusus browser (dan pengguna). Secara umum, saya benci jika situs mana pun membuka jendela baru.
Richard Ev
Selain itu: Dalam definisi "ketat", tidak ada atribut "target" yang valid karena tidak mengganggu pengguna. Cobalah: validator.w3.org
guerda
4
Saya suka membuka kumpulan tab di rumah, jadi saya adalah pengguna dalam kasus itu. Hanya pengingat bahwa ada pengecualian.
Mark Essel
7
sementara saya setuju itu bisa mengganggu ketika situs memaksakan tindakan, saya pikir itu sedikit tidak membantu untuk menyatakan bahwa Anda tidak boleh melakukan sesuatu tanpa mempertimbangkan alasan mengapa seseorang mungkin ingin melakukannya. Merupakan hal yang umum bagi situs untuk membuka sesuatu di tab baru, terutama link situs eksternal atau jika halaman aktif diganti dengan konten baru tidak membantu, jadi ini bukan perilaku yang sepenuhnya tidak terduga. Saya juga menyarankan ini bukan jawaban untuk pertanyaan dan akan lebih cocok sebagai komentar untuk posting asli.
andyface
1
Saya tidak setuju, dengan asumsi default untuk pengguna adalah pilihan desain per aplikasi web bukan per browser. Browser dapat berlangganan default di mana aplikasi tidak. Selain itu, jika browser memberi pengguna cara untuk mengganti default aplikasi / default browser, maka itu adalah yang terbaik dari kedua dunia. Pengguna> Aplikasi> Browser.
Derek Litz
8

Apakah Anda sudah mencoba suka

var open_link = window.open('','_blank');
open_link.location="somepage.html";
Thurein Soe
sumber
Apakah browser silang ini kompatibel? Sepertinya bekerja di IE8, khawatir tentang versi masa depan atau browser lain.
n00b
Ya .. ini kompatibel untuk lintas browser. Saya tidak mendapat masalah sampai sekarang: D
Thurein Soe
5

Saya menemukan di Chrome,

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

hanya akan bekerja sekali.

Kamu bisa memakai:

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

Untuk membuka banyak tab baru.

Derek 朕 會 功夫
sumber
10
itu karena di Chrome, _newtab hanyalah sebuah nama dan Anda memintanya untuk membuka laman di tab bernama "_newtab"
w00t
3

Kode yang saya gunakan dengan jQuery:

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

Ini berguna untuk membedakan antara peristiwa klik dari induk pada anak. Dengan menggunakan metode ini, Anda tidak memicu peristiwa klik induknya.

lacroixca.dll
sumber
8
Mengapa tidak menggunakan html biasa saja? <a href="page.html" target="_blank">foo</a>
pixelastic
1
@pixelastic "Dengan menggunakan metode ini, Anda tidak memicu peristiwa klik induknya."
Michael Blackburn
3

Ini bekerja 100%

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

Kevin Muchwat
sumber
0

Jika Anda mau, Anda dapat menggunakan metode ini, yang sedikit hacky, tetapi akan menawarkan fungsionalitas yang diinginkan:

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()
Xenologi
sumber
bisakah kamu memberikan jsfiddle?
Xenology
-2

Ini dapat berfungsi jika Anda dapat memanggil file batch (saya menggunakan php dengan XP sp2 dan IE8 ... Anda dapat mencoba IE7, tak tahu). Gunakan perintah berikut (atau serupa) di file .bat Anda untuk membuka Windows: Mulai "" C: \ Progra ~ 1 \ Intern ~ 1 \ iexplore "http://www.site.com". Tidak ada spasi antara tanda kutip dan C: \ Progr ... dll. Pada titik tertentu, ini mungkin mulai membuka jendela baru (yaitu, target = "_ blank") daripada tab baru, tetapi berfungsi sampai titik tertentu; tidak diuji secara ekstensif. Untuk menggunakan ini dalam file batch biasa (CMD.exe), Anda mungkin perlu memiliki jendela yang sudah terbuka. Hanya berbagi sesuatu yang saya temukan. DIEDIT untuk klarifikasi.

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

Bekerja di IE7.

Salam,

Glenn

Glenn Moore
sumber
8
Glenn ini kebalikan dari apa yang diminta OP. _self akan membuka dokumen di jendela atau bingkai yang sama.
travega
Juga Ini bukan cara membuka dengan cara terprogram. Yang mengejutkan adalah bagaimana ia mendapatkan +10 rep (+ 3 / -10) dengan jawaban ini.
vusan