HTML5'te target = “_ blank” kullanmak doğru mu?


165

HTML5'te artık kullanmanın uygun olmadığı bir yerde okumayı hatırlıyorum target="_blank" , ancak şimdi bulamıyorum.

Kullanmaya devam etmek uygun mu target="_blank" mu?

Genellikle kötü bir fikir olarak kabul edildiğini biliyorum, ancak PDF gibi bir şey için yeni bir pencere açmanın en kolay yolu ve ayrıca JavaScript'e güvenmenizi gerektirmiyor.


5
Genel olarak sitenizden harici bir site açmak istiyorsanız, o zaman yeni bir pencere açmak (muhtemelen çoğu tarayıcının bugünkü yeni bir sekmesidir) bence daha iyi bir fikirdir.
hobbes3

7
@ hobbes3, lütfen navigasyonumu ve geçmişimi karıştırmayı bırakın. Ben göz atarım ve bir bağlantının yeni (orta tıklama) veya aynı (sol tıklama) sekmesinde açılıp açılmayacağına karar veren benim. Yeni sekmelerdeki her bağlantıyı açarak "haklı en iyi uygulamayı" izlemem için beni zorlayan bir web sitesine rastladığımda, derhal ve memnuniyetle ayrılacağım.
Albireo

9
@Albireo, Sadece benim fikrim ve bazı popüler web hizmetleri de aynı fikri birleştiriyor. Örneğin, Gmail'deki postanızdaki bir bağlantıyı tıkladığınızda varsayılan olarak yeni bir pencere açılır.
'21

12
@Albireo, kullanıcının her zaman sizin kadar gelişmiş ve teknoloji meraklısı olduğunu varsayıyorsunuz.
Mike Campbell

3
Bir sebebi var targetvd. var olmak. Bazen bir zorunluluktur. Örneğin, iframe'in yeni bir sekmeden daha az istenildiği dinamik olarak oluşturulmuş dinamik olarak oluşturulmuş bir sayfa (örneğin, OP'nin belirttiği gibi bir PDF'yi görüntüleme). Veya güvenli bir site (banka gibi) sizi harici bir bağlantıya gönderdiğinde ancak içeriğin sona ermesi nedeniyle geri düğmesinin kullanılmasına izin vermediğinde. Her şey gibi bu HTML özelliği de "kötü bir fikir" değildir, ancak tüm programlamada her kütüphane, sınıf, işlev ve özellikte olduğu gibi düşünce ve özenle kullanılmalıdır.
s.co.tt

Yanıtlar:


159

target="_blank"Hala iyi görünüyor . En son HTML5 taslağında göz atma bağlamı anahtar kelimesi olarak listelenir .


54
target="_blank"kullanıcı bağlantıyı her tıkladığında yeni bir pencerenin açılmasına neden olur . Bu gerçekten olmasını istemediğiniz sürece (ve nadiren) target="somethingUnique", bağlantıyı birkaç kez tıklasalar bile, kullanıcının yalnızca bir pencere açmasını almasını düşünün . Çok daha güzel bir UX yapar.
BanksySan

4
@BanksySan: Bunun target="_blank"iyi olduğunu düşündüğüm bir örnek , düğmeleri paylaşmak.
Martin Thoma

Uzun bir makale okuyorsam ve başka bir sitede (veya aynı sitede) ilgili bazı bilgilere referans varsa. Genellikle orijinal makaledeki yerimi kaybetmeden ikisi arasında ileri geri atlamak istiyorum. target = "_ blank" bunun için mükemmel. Sayfayı terk etmek ve her sayfayı dönüşümlü olarak yeniden yüklemek zorunda kalmak (genellikle her iki sayfadaki yerimi kaybetmek) değildir. Evet, bağlantıyı sağ tıklayıp yeni bir sekmede açabileceğimi biliyorum, ancak konsantrasyonumu bozacağı için istemiyorum ve web kullanıcılarının çoğunun nasıl olduğunu bilmediğinden şüpheleniyorum.
Bob Ray

Target özelliğinin birçok faydası vardır. Bunu tartışmayacağım. Pop-up reklamverenler amacını yok etti, ancak bugün tarama deneyimini bir kenara bırakan birçok hizmetle, birçok kişi mevcut makaleyi veya sekmeyi terk etmek istemiyor, ancak yine de yoğun indirilen PDF veya video ile etkileşime giriyor. _Blank kullanmak, kullanıcının aynı oturumda / sitede çok sayıda bağlantı sunuyorsanız, boş bir sekmeyi doldurmasına izin verdiğinizden emin olun. Eşsiz isimler 90 şarkı içeren bir ses listesinde sadece dağınık ... Viva la target, viva la _blank ...
Jonas Lundman

91

Kullanmak için sorun yok target="_blank"; Bu, XHTML'de ortadan kaldırıldı çünkü yeni pencereleri hedeflemek çoğu tarayıcıda her zaman pop-up uyarısını getirecektir. XHTML her zaman bir doğrulamada hedef özelliğinde bir hata gösterir.

HTML 5 geri getirdi çünkü hala kullanıyoruz. Bu bizim dostumuz ve bırakamayız.

Asla Bırakma.


İddia ettiğiniz yalnızca katı HTML için geçerlidir.
qwertzman

XHTML ve HTML için.
MEMark

15

HTML5'te kabul edilebilir olsa da target="_blank", kişisel olarak asla kullanmamayı deniyorum (PDF'leri yeni bir pencerede açmak için bile).

HTML anlam ve içerik tanımlamalıdır . Kendinize sorun “olacağını anlam ve aeğer eleman değişikliği targetnitelik çıkarıldı?” Değilse, kod HTML'ye girmemelidir. (Aslında W3C'nin bunu tuttuğuna şaşırdım… Sanırım gerçekten bırakamıyorlar.)

Tarayıcı davranışı , özellikle kullanıcıyla etkileşimli davranış, JavaScript gibi istemci tarafı komut dosyası dillerinde uygulanmalıdır. Tarayıcının belirli bir şekilde davranmasını istediğiniz için, yani yeni bir pencere açmak için JS'yi kullanmanız gerekir. Ancak belirttiğiniz gibi, bu davranış tarayıcının JS'ye güvenmesini gerektirir. (Siteniz zarif bir şekilde bozuluyorsa veya aşamalı olarak geliştiriliyorsa veya her ne olursa olsun , yine de iyi olmalıdır. JS engelli kullanıcılar çok fazla özlemeyecektir.)

Bununla birlikte, bunların ikisi de doğru cevap değildir. Orada bir yere Out olduğu görüşü bir bağlantı sonuçta son kullanıcı tarafından karar verilmelidir açılır nasıl . Bu örneği ele alalım.

Wikipedia'da sörf yapıyorsunuz, bir tavşan deliğine daha da derinleşiyorsunuz. Okuduğunuzda bir bağlantıyla karşılaşıyorsunuz.

Diyelim ki geri dönmeden önce bağlantılı sayfayı çok hızlı bir şekilde gözden geçirmek istiyorsunuz. Yeni bir sekmede açabilir ve bitirdiğinizde kapatabilirsiniz (çünkü 'geri' düğmesine basmak ve sayfaların yeniden yüklenmesini beklemek çok uzun sürer). Ya da ilginç görünüyorsa ve daha sonra saklamak istiyorsanız? Belki bunun yerine yeni bir arka plan sekmesinde açmalı ve geçerli sayfayı okumaya devam etmelisiniz. Ya da, belki de bu sayfayı okumaya karar verdiğinize göre, mevcut sekmedeki bağlantıyı takip edersiniz.

Mesele şu ki, kendi iş akışınız var ve tarayıcınızın buna göre davranmasını istiyorsunuz. Bu tür kararları sizin için verdiyse oldukça hayal kırıklığına uğrayabilirsiniz.

Bununla birlikte, web geliştiricileri bağlantılarının nereye gittiğini, hangi tür ve / veya kaynak formatlarını referans aldıklarını ve ne yaptıklarını kesinlikle netleştirmelidir. Araç ipuçları arkadaşınız olabilir (tablet veya telefon kullanmadığınız sürece; bu durumda bunları mobil sitede belirtin). Hepimiz beklemediğimiz bir yere götürülmenin ne kadar zor olduğunu biliyoruz ya da demek istediğimiz bir şey olmasını sağlıyoruz.


Ve eğer herkes Tanrı'nın kontrol hakkını her bağlantıyla (kolayca, bilinçaltında olduğu gibi) çok kolay bir şekilde kullanmasına izin veren bir kullanıcı widget'ı tasarlayacak kadar akıllıysa, o zaman tarayıcılara eklenmelidir ve tüm <a> etiketleri onu sağlamak.
Mark Goldfain

Bu cevap bence mantıklı ve mimari olarak en doğru. İdeal bir dünyada yazarlar, parçaların doğru anlamsal tanımlanması ve parçaların davranışlarının önceden belirlenmesi konusunda daha az endişe duymalıdırlar. Ortaya çıkan uyarlanabilir içerik evreninde pencere davranışları, istek anında hangi duyarlı temanın veya kullanıcı tercihinin geçerli olduğuna bağlı olabilir; giden semantik "şey" yalnızca dönüşümle (DOM veya normal ifade, sunucu veya tarayıcı) gerektiği gibi değiştirilir. Bu şekilde, pencere davranışları bir CMS'de bir yazardan ziyade kullanıcıya kalmış olabilir.
Don Günü

12

PDF gibi bir şey için yeni bir pencere açmanın en kolay yolu

Ayrıca Windows olmayan kullanıcıları rahatsız etmenin en kolay yolu. PDF diğer platformlardaki tarayıcılarda gayet iyi açılır. Yeni bir pencere açmak, navigasyon geçmişini bozar ve akıllı telefonlar gibi daha küçük platformlardaki maddeleri karmaşıklaştırır.

Windows'un eski sürümleri bozulduğundan PDF gibi şeyler için yeni pencereler açmayın.


11
İnsanlara bir şey kullanmamalarını söylediğinizde neyin yardımcı olduğunu biliyor musunuz? Ne bunları gösteriliyor etmek kullanın HTML5 indir özellik: <a download="[file adı here]" href="file.ext"> vb </a> .
John

5

Çoğu web geliştiricisi target="_blank"yalnızca bağlantıları yeni sekmede açmak için kullanır . Eğer kullanırsanız target="_blank"yalnızca yeni bir sekmede açık bağlantıları, o zaman bir saldırganın karşı savunmasızdır. Bir bağlantıyı yeni bir sekmede ( target="_blank") açtığınızda, yeni bir sekmede açılan sayfa ilk sekmeye erişebilir vewindow.opener özelliği .

Javascript kodu:

window.opener.location.replace(malicious URL)

önleme:

rel="nofollow noopener noreferrer"

Nofollow'un güvenlikle ilgili olduğundan emin değilim - arama motoru botları için.
Darryl Hein

4

HTML5'te hedef hala kabul edilebilir olsa da, tercih edilmez. Bir PDF dosyasına bağlanmak için indirmeyi kullanın , hedef özellik yerine özelliğini kullanın.

İşte bir örnek:

<a href="files/invoice.pdf" download>Invoice</a>

Orijinal dosya adı benzersiz dosya depolaması için kodlanmışsa, indirme özelliğine bir değer atayarak kullanıcı dostu bir indirme adı belirleyebilirsiniz:

<a href="files/j24oHPqJiUR2ftK0oeNH.pdf" download="invoice.pdf">Invoice</a>

Çoğu modern tarayıcı bu özelliği desteklerken bazılarının desteklemeyebileceğini unutmayın. Daha fazla bilgi için caniuse.com adresine bakın .



0

Bunu jquery ile aşağıdaki şekilde yapabilirsiniz, bu yeni bir pencerede açılır:

<input type="button" id="idboton" value="google" name="boton" /> 

<script type="text/javascript">
    $('#idboton').click(function(){
        window.open('https://www.google.com.co');
    });

</script>

Neden button = target = "_ blank" ile bir form eklemiyorsunuz? Bu daha kolay ve JS ihtiyacını ortadan kaldırır gibi görünüyor.
Darryl Hein

-1

Bence hedef özelliği <link>öğe için kullanımdan kaldırıldı , değil <a>, muhtemelen bu yüzden artık kullanılmaması gerektiğini duydunuz.

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.