Sekmelerde programlı olarak yeni sayfalar açın


99

Safari veya IE7'yi yeni bir sekme kullanarak yeni bir sayfa açmaya "zorlamaya" çalışıyorum .

Programlı olarak şunu kastediyorum:

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

1
Anladığımdan emin değilim - IE ile çalışan bir uygulama mı geliştiriyorsunuz ve her yeni sayfayı yeni sekmede mi açmak istiyorsunuz? Ya da IE'yi bir bağlantıya tıklandığında yeni sekme açacak şekilde ayarlamak mı istiyorsunuz? Yoksa daha fazla bağlantı içeren bir site mi oluşturuyorsunuz ve bunların ayrı ayrı açılmasını mı istiyorsunuz? Pls bunu daha net hale getirir.
Dungeo

Tüm yorumlarınız ve yanıtlarınız için teşekkürler, bunun büyük bir sorun olmadığını ve gelişimimde bir sorun olmaması gerektiğini biliyorum, ancak bu bir müşteri isteği, sadece bilmek istediğim önemli bir istek değil. Sorun, IE7 ve Safari'nin javascript veya hedef niteliği kullanan bir sekme içeren bir açılır pencere açmaması, doğru mu?
Ricardo Vega

Yanıtlar:


63

Bunu doğrudan kontrol edemezsiniz çünkü bu, Internet Explorer kullanıcıları tarafından kontrol edilen bir seçenektir.

Window.open'ı kullanarak sayfaları farklı bir pencere adıyla açmak, pop-up gibi yeni bir tarayıcı penceresinde, VEYA kullanıcı tarayıcıyı bu şekilde yapılandırdıysa yeni bir sekmede açılır .


"Pop-up'ların nasıl açılacağına Internet Explorer karar versin" seçeneği belirlendiğinde, Internet Explorer bu kararı vermek için hangi kriterleri kullanır?
Ölü.

113

Firefox'ta çalışır, yeni bir sekmenin açılmasını sağlamak için bağlantıya target = "_ newtab" niteliğini ekleyebilirsiniz.

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

JavaScript'te kullanabilirsiniz

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

Sam ile kısmen aynı fikirdeyim dedim. Bağlantıyı tıklamadan önce ne olacağına dair bir ipucu göstermeden kullanıcıyı yeni sayfalar veya yeni sekme açmaya zorlamamalısınız .

Başka bir tarayıcıda da çalışıp çalışmadığını bana bildirin (şu anda Firefox dışında başka bir tarayıcıda deneme şansım yok).

Düzenleme: ie7 için referans eklendi Belki bu bağlantı yararlı olabilir
http://social.msdn.microsoft.com/forums/en-US/ieextensiondevelopment/thread/951b04e4-db0d-4789-ac51-82599dc60405/


6
Bu Firefox ipucu için teşekkürler, şimdi "_newtab" ve "newtab" i kaldırmak için TargetKiller eklentimi güncelledim. : P
thenonhacker

1
Cevabınızı gerçekten takdir ediyorum, ancak Firefox'un bunu yapacağını biliyorum (benim tarafımdan test edilmeyen bazı metinler, bunun her zaman doğru olmadığını, yeni bir pencere veya sekme alma şansı 50-50 olduğunu belirtiyor). Ayrıca bunun bir sorun olmaması gerektiğini düşünüyorum, ancak müşterileri bilirsiniz :)
Ricardo Vega

2
Bu, tüm yapılarda / platformlarda geçerli olmayabilir, ancak Linux'ta Firefox 3.5 bunu birden fazla yapmanıza izin vermez ... sayfanızda birden çok target = "_ newtab" bağlantınız varsa, bunlardan herhangi birine tıklayarak yalnızca tek bir yeni sekme doldurur ... yani, sonraki tıklamalar o sekmede daha önce açılmış olan her şeyin üzerine yazılır. Bunun tarayıcıya özgü bir çözüm olmaktan çok, "_newtab" adlı bir sekme açtığını düşünmeme neden oluyor.
Rylee Corradini

55
"_Newtab" kelimesinin anlamsız olduğuna eminim, aksi yönde bir belge yoksa. Tek yaptığınız, adı _newtab olan bir pencere açmaktır (bu nedenle, o hedefle sonraki tüm bağlantılar aynı pencerede açılır). "Foo" veya "bar" ı hedefleyebilir ve aynı davranışı görebilirsiniz. Tek iyi bilinen hedefler _blank, _self, _parent ve _top'tur. htmlcodetutorial.com/linking/_A_TARGET.html
Tom Lianza

44

Aşağıdakileri kullanmaya çalışanlarınız:

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

gerçekten window.open yöntemine bakmalısınız.

Tek yaptığınız, tarayıcıya NAMED "_newtab" adlı yeni bir pencere açmasını ve içine page.html dosyasını yüklemesini söylemektir. Yüklediğiniz her yeni sayfa bu pencereye yüklenecektir. Ancak, bir kullanıcının tarayıcısı yeni pencereler yerine yeni sekmelerde yeni sayfalar açacak şekilde ayarlanmışsa, bir sekme açacaktır. Ne olursa olsun, pencere veya sekme için aynı adı kullanıyor.

Farklı sayfaların farklı pencerelerde veya sekmelerde açılmasını istiyorsanız, yeni pencerenin / sekmenin ADını aşağıdaki gibi farklı bir şeye değiştirmeniz gerekecektir:

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

Elbette yeni pencere / sekmenin adı _newtab2 yerine page1, page2, page3 vb. Gibi herhangi bir ad olabilir.


3
eşyalarını biliyor. '_newtab' ayrılmış bir ad değil. '_blank', başka bir tanımlanmamış ve adsız pencere / sekme açan özel bir şeydir - bu, tekrar tekrar kullanmaya devam edebilirsiniz. '_newtab', tarayıcınızın gönderdiğiniz her url ile yenilemeye devam ettiği yeni bir sekme (varsayılan) veya pencere verdiğiniz belirli ad olması dışında özel değildir.
BradChesney79

15

Yeni sekmeler veya yeni pencereler kullanmak isteyip istemedikleri kullanıcıya bağlıdır, bu davranışı değiştirmek geliştiricinin işi değildir. Yapabileceğini sanmıyorum.

Evcil hayvanım - sitelerin beni yeni bir pencerede / sekmede açmaya zorlamasından nefret ediyorum - bu kararı kendim verebiliyorum. Özellikle javascript ile yaptıklarında - bu gerçekten yararsızdır.


1
Sam'e +1 - sekmelerde veya pencerelerde açılan yeni sayfalar tarayıcıya (ve kullanıcıya) özgü bir seçimdir. Genel olarak herhangi bir sitenin yeni bir pencere açmasından nefret ediyorum.
Richard Ev

Buna ek olarak: "Katı" tanımında, kullanıcıyı rahatsız etmediği için geçerli bir "hedef" özniteliği yoktur. Deneyin: validator.w3.org
guerda

4
Evde sekme grupları açmayı seviyorum, bu yüzden bu durumda kullanıcı benim. İstisnalar olduğunu hatırlatmak isteriz.
Mark Essel

7
Siteler eylemi zorladığında can sıkıcı olabileceğine katılıyorum, ancak birisinin neden yapmak isteyebileceğini düşünmeden bir şeyi yapmamanız gerektiğini basit bir şekilde söylemek biraz yararsızdır. Sitelerin yeni sekmelerde bir şeyler açması yaygındır, özellikle harici site bağlantılarında veya aktif bir sayfanın yeni içerikle değiştirilmesinin yararlı olmadığı durumlarda, bu tamamen beklenmedik bir davranış değildir. Ayrıca bunun gerçekten soruya bir cevap olmadığını ve orijinal gönderiye bir yorum olarak daha uygun olacağını da öneririm.
andyface

1
Buna katılmıyorum, kullanıcı için varsayılanın tarayıcı başına değil, web uygulaması başına bir tasarım seçeneği olduğunu varsayıyorum. Tarayıcı, uygulamanın olmadığı bir varsayılana abone olabilir. Ayrıca, tarayıcılar kullanıcıya uygulama varsayılanlarını / tarayıcı varsayılanlarını geçersiz kılma yolunu sağlıyorsa, bu her iki dünyanın da en iyisidir. Kullanıcı> Uygulama> Tarayıcı.
Derek Litz

8

Zaten denedin mi

var open_link = window.open('','_blank');
open_link.location="somepage.html";

Bu tarayıcılar arası uyumlu mu? IE8'de çalışıyor gibi görünüyor, gelecekteki sürümler veya diğer tarayıcılar için endişeleniyor.
n00b

Evet .. çapraz tarayıcı ile uyumludur. Şimdiye kadar sorunum yok: D
Thurein Soe

5

Chrome'da öğrendim

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

sadece bir kez çalışacak.

Kullanabilirsiniz:

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

Birden çok yeni sekme açmak için.


10
o en Chrome'da, _newtab sadece bir isim olduğunu ve bunun "_newtab" adlı sekmede sayfa açmak isteyen çünkü
w00t

3

JQuery ile kullandığım kod:

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

Bu, bir çocuktaki bir ebeveynin tıklama olaylarını ayırt etmek için kullanışlıdır. Bu yöntemi kullanarak, üst öğenin tıklama olayını tetiklemezsiniz.


8
Neden basitçe eski html kullanmıyorsunuz? <a href="page.html" target="_blank">foo</a>
pixelastic

1
@pixelastic "Bu yöntemi kullanarak, üst kuruluşun tıklama etkinliğini tetiklemezsiniz."
Michael Blackburn

3

Bu% 100 çalışıyor

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


0

İsterseniz, biraz karmaşık olan ancak istenen işlevselliği sunan bu yöntemi kullanabilirsiniz:

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

bir jsfiddle sağlayabilir misin?
Xenology

-2

Bu, bir toplu iş dosyasını çağırabilirseniz işe yarayabilir (XP sp2 ve IE8 ile php kullanıyorum ... IE7'yi deneyebilirsiniz, dunno). Windows'u açmak için .bat dosyanızda aşağıdakini (veya benzerini) kullanın: Başlat "" C: \ Progra ~ 1 \ Intern ~ 1 \ iexplore "http://www.site.com". Tırnak işareti ile C: \ Progr ... vb. Arasında boşluk yoktur. Bir noktada, bu yeni sekmeler yerine yeni pencereler (yani hedef = "_ boşluk") açmaya başlayabilir, ancak bir noktaya kadar çalışır; kapsamlı olarak test edilmemiştir. Bunu normal bir toplu iş dosyasında (CMD.exe) kullanmak için, muhtemelen açık bir pencerenizin olması gerekir. Sadece rastladığım bir şeyi paylaşıyorum. Açıklama için DÜZENLENDİ.


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

IE7'de çalışır.

Saygılarımızla,

Glenn


8
Glenn bu, OP'nin istediği şeyin tam tersi. _self, belgeyi aynı pencere veya çerçevede açacaktır.
travega

Ayrıca programlı bir şekilde açmanın yolu da bu değil. Sürpriz, bu cevapla +10 tekrar (+ 3 / -10) kazanmasıdır.
vusan
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.