target = "_ blank" vs target = "_ baru"

512

Apa perbedaan antara <a target="_new">dan <a target="_blank">dan yang harus saya gunakan jika saya hanya ingin membuka tautan di tab / jendela baru?

Alex Grin
sumber
73
Ringkasan dari jawaban saat ini: _newtidak memiliki arti khusus. Anda bisa menulis _white_little_lambjuga.
Álvaro González
10
@ x3ro Bagaimana salah jika mengatakan bahwa " _new" tidak memiliki arti khusus?
Álvaro González
3
@ ÁlvaroG.Vicario saya merujuk pada "Anda bisa menulis ... sebagai gantinya". Tetapi ketika memikirkannya, saya berpendapat bahwa "tidak memiliki arti khusus" tidak sama dengan "tidak disarankan secara eksplisit", tetapi itu mungkin saya rewel;)
fresskoma
5
Saya ingin mengingatkan semua orang bahwa menggunakan target="_blank"tanpa rel="noopener"adalah potensi kerentanan keamanan. Cari untuk rel="noopener"mempelajari lebih lanjut.
Flimm

Jawaban:

651

Gunakan "_blank"

Menurut Spesifikasi HTML5 :

Sebuah nama konteks penjelajahan berlaku adalah setiap string dengan setidaknya satu karakter yang tidak dimulai dengan karakter U + 005F RENDAH GARIS. (Nama yang dimulai dengan garis bawah dicadangkan untuk kata kunci khusus.)

Sebuah nama konteks penjelajahan yang sah atau kata kunci adalah string yang baik nama konteks penjelajahan valid atau yang merupakan ASCII case-sensitive pertandingan untuk salah satu: _blank, _self, _parent, atau _top "-. Sumber

Itu berarti bahwa tidak ada kata kunci seperti _newdalam HTML5, dan tidak dalam HTML4 (dan akibatnya XHTML) juga . Itu berarti, bahwa tidak akan ada perilaku yang konsisten sama sekali jika Anda menggunakan ini sebagai nilai untuk atribut target.

Rekomendasi keamanan

Seperti yang ditunjukkan Daniel dan Michael dalam komentar, saat menggunakan target yang _blankmenunjuk ke situs web yang tidak terpercaya, Anda juga harus menetapkan rel="noopener". Ini mencegah situs pembuka untuk mengacaukan pembuka melalui JavaScript. Lihat posting ini untuk informasi lebih lanjut.

fresskoma
sumber
7
Meninggalkan teks tebal dari spec membuat kutipan itu membingungkan. Saya membacanya sebagai "A valid browsing context nameatau kata kunci adalah string apa pun yang merupakan valid browsing context nameatau ...."
Alex Grin
6
@lyoshenka, @ x3ro: Saya mengambil kebebasan untuk menambahkan paragraf sebelumnya ke dalam kutipan. Itu harus menjernihkan kebingungan.
Mercator
5
@ aesede: Baca spec. Mereka tidak valid, karena "my_custom_name" mungkin tidak diawali dengan garis bawah. Jadi "baru" akan baik-baik saja, tetapi "_new" tidak!
fresskoma
7
Secara aman, ini adalah bacaan penting mathiasbynens.github.io/rel-noopener
Daniel F
6
Silakan mempertimbangkan menambahkan bahwa masyarakat juga harus menambahkan rel="noopener noreferrer"karena kerentanan serangan javascript daritarget="_blank"
Michael
126

Menggunakan target="_blank"akan menginstruksikan browser untuk membuat tab atau jendela browser baru ketika pengguna mengklik tautan.

Penggunaan target="_new"secara teknis tidak valid sesuai dengan spesifikasinya, tetapi sejauh yang saya tahu setiap browser akan berperilaku dengan cara yang sama:

  • itu akan mencari tab atau jendela dengan nama konteks "_new"
  • jika tab / jendela "_new" ditemukan, maka URL tersebut dimuat ke dalamnya
  • jika tidak ditemukan, tab / jendela baru dibuat dengan nama konteks "_new", dan URL dimuat ke dalamnya

Note target="_new"akan berperilaku sama persis dengan target="new", dan yang terakhir adalah HTML yang valid sedangkan yang pertama adalah HTML yang tidak valid.

Menambahkan beberapa kebingungan untuk ini, dalam HTML4 targetatributnya sudah usang. Di HTML5 keputusan ini dibalik, dan ini adalah bagian resmi dari spek sekali lagi. Semua browser mendukung targetversi HTML apa pun yang Anda gunakan, tetapi beberapa validator akan menandai penggunaannya sebagai usang jika doctype Anda adalah HTML4.

Abhi Beckert
sumber
4
Jadi, pada dasarnya, jika saya memiliki dua (atau lebih) tautan target="_new", keduanya akan terbuka di tab yang sama, satu menimpa yang lain?
art-solopov
4
@ art-solopov sejauh yang saya tahu, ya itulah yang akan terjadi di setiap browser. Namun "_new" adalah nilai ilegal untuk target jadi jangan lakukan itu.
Abhi Beckert
25

TL; DR
USE _blank

Atribut target menentukan tempat untuk membuka dokumen yang ditautkan.

USAGE: target="xyz"  [don't forget double quotes]

_blank  Opens the linked document in a new window or tab
_self   Opens the linked document in the same frame as it was clicked (this is default)
_parent     Opens the linked document in the parent frame
_top    Opens the linked document in the full body of the window 
framename   Opens the linked document in a named frame

SEJAK "_new" bukan salah satu dari ini AKAN DATANG DI BAWAH "framename" jadi jika pengguna mengklik kembali pada hyperlink itu tidak akan membuka tab baru alih-alih memperbarui tab yang ada. Sedangkan di _blank jika pengguna mengklik dua kali maka 2 tab baru terbuka.

abe312
sumber
21

Saya tahu ini adalah pertanyaan lama dan jawaban yang benar, gunakan _blank, telah disebutkan beberapa kali, tetapi menggunakan <a target="somesite.com" target="_blank">Link</a> adalah risiko keamanan .

Hal ini direkomendasikan ( tunjangan kinerja ) penggunaan:

<a href="somesite.com" target="_blank" rel="noopener noreferrer">Link</a>
Michal Frystacky
sumber
1
Hanya beberapa bacaan tambahan pada aspek risiko keamanan: jitbit.com/alexblog/…
8bithero
14

Ini mungkin telah ditanyakan sebelumnya tetapi:

"setiap tautan yang menentukan target =" _ new "mencari dan menemukan jendela itu dengan nama, dan terbuka di dalamnya.

Jika Anda menggunakan target = "_ blank," jendela baru akan dibuat setiap kali, di atas jendela saat ini. "

dari sini: http://thedesignspace.net/MT2archives/000316.html

berkarat
sumber
12

target="_blank" membuka tab baru di sebagian besar browser.

Abudayah
sumber
12

itu pemahaman saya yang target = whateverakan mencari bingkai / jendela dengan nama itu. Jika tidak ditemukan, itu akan membuka jendela baru dengan nama itu. Jika whatever == "_new", itu akan muncul seperti jika Anda menggunakan _blankkecuali .....

Menggunakan salah satu nama target yang dicadangkan akan melewati fase "tampak". Jadi, target = "_blank"pada selusin tautan akan membuka selusin jendela kosong, tetapi target = whateverpada selusin tautan hanya akan membuka satu jendela. target = "_new"pada selusin tautan dapat memberikan perilaku tidak konstan. Saya belum mencobanya di beberapa browser, tetapi seharusnya hanya membuka satu jendela.

Setidaknya begitulah cara saya mengartikan aturan.

Hampster
sumber
9

Perhatian - ingatlah untuk selalu menyertakan "tanda kutip" - setidaknya di Chrome, target=_blank(tanpa tanda kutip) BUKAN SAMA dengan target="_blank"(dengan tanda kutip).

Yang terakhir membuka setiap tautan di tab / jendela baru. Yang pertama (tanda kutip yang hilang) membuka tautan pertama yang Anda klik di satu tab / jendela baru, kemudian menimpa tab / jendela yang sama dengan setiap tautan berikutnya yang Anda klik (yang dinamai juga dengan tanda kutip yang hilang).

cnd
sumber
Poin yang sangat bagus. Saya mengalami masalah ini ketika saya tidak menyertakan tanda kutip _blank. Tautan yang saya klik dari tab "kosong" yang baru saya buat adalah menulis konten di dalam tab itu alih-alih membuka tab baru. Menutup _blank dalam tanda kutip memaksa chrome untuk membuka tab baru setiap saat.
Steve Scherer
Pastikan juga untuk menggunakan "_blank" bukan "_BLANK". Chrome sebenarnya cerewet tentang kasus dan tidak akan membuka tab baru menggunakan "_BLANK" beberapa kali.
Steve Scherer
5
  • _blank sebagai nilai target akan memunculkan jendela baru setiap kali,
  • _new hanya akan menelurkan satu jendela baru.

Juga, setiap tautan yang diklik dengan nilai target _new akan menggantikan halaman yang dimuat di jendela yang sebelumnya dihasilkan.

Anda dapat mengklik di sini Kapan menggunakan _blank atau _new untuk mencobanya sendiri.

James Drinkard
sumber
Bisakah Anda membuat daftar browser yang dihormati _newseperti yang dijelaskan?
Dima Tisnek
@ qarma Perilaku itu seperti yang dijelaskan di semua browser yang saya tahu, _newbukan kata kunci ajaib, itu hanya nama, jika jendela dengan nama itu ada akan menggunakannya kembali, kalau tidak akan membukanya. Mengeklik banyak tautan untuk jendela itu hanya akan membuka halaman berbeda di jendela bernama, daripada membuka banyak halaman baru.
scragar
Spesifikasi ini sebenarnya menyarankan kepada browser bahwa mereka ignoremenargetkan yang dimulai dengan garis bawah tetapi bukan kata kunci. Tidak ada saran untuk apa yang harus dilakukan browser ketika "mengabaikan" nama target yang tidak valid. Kemungkinan meliputi: (1) perlakukan seperti "_blank" (2) perlakukan seperti nama jendela (seolah-olah tidak ada garis bawah ilegal) (3) perlakukan seperti nama jendela yang kosong secara eksplisit (4) perlakukan seperti ada tidak ada atribut target. - Browser apa pun dapat memilih salah satu interpretasi.
Jesse Chisholm
0

Atribut target suatu tautan memaksa browser untuk membuka halaman tujuan di jendela browser baru. Menggunakan _blanksebagai nilai target akan memunculkan jendela baru setiap kali saat menggunakan _newhanya akan memunculkan satu jendela baru dan setiap tautan yang diklik dengan nilai target _newakan menggantikan halaman yang dimuat di jendela yang sebelumnya dibuat.

Carlos Guzman
sumber
0

Untuk membuka tautan di tab / jendela baru, Anda akan menggunakannya <a target="_blank">.

value _blank= konteks penelusuran yang ditargetkan: yang baru: tab atau jendela tergantung pada pengaturan penelusuran Anda

nilai _new= tidak valid; tidak ada nilai seperti itu di HTML5 untuk atribut target pada elemen

atribut target dengan semua nilainya pada elemen: demo video

Daniel
sumber
-1

Penggunaan _New berguna saat bekerja pada halaman yang dibingkai. Karena target = "_ blank" tidak melakukan trik dan membuka halaman pada iframe yang sama ... target baru adalah solusi terbaik untuk Halaman Iframe. Hanya lima sen saya.

Ozzy Gonzalez
sumber