window.open(url)
Bir öğe seçildiğinde çağıran bir seçim kutusu var . Firefox sayfayı varsayılan olarak yeni bir sekmede açar. Ancak, sayfanın yeni bir sekmede değil, yeni bir pencerede açılmasını istiyorum.
Bunu nasıl başarabilirim?
window.open(url)
Bir öğe seçildiğinde çağıran bir seçim kutusu var . Firefox sayfayı varsayılan olarak yeni bir sekmede açar. Ancak, sayfanın yeni bir sekmede değil, yeni bir pencerede açılmasını istiyorum.
Bunu nasıl başarabilirim?
Yanıtlar:
Pencereye width / height ile bir 'specs' parametresi verin. Olası tüm seçenekler için buraya bakın .
window.open(url, windowName, "height=200,width=200");
Bir genişlik / yükseklik belirttiğinizde, onu sekme yerine yeni bir pencerede açar.
Yüksekliği kullanmanıza gerek yoktur, sadece kullandığınızdan emin olun _blank
, onsuz, yeni bir sekmede açılır.
Boş bir pencere için:
window.open('', '_blank', 'toolbar=0,location=0,menubar=0');
Belirli bir URL için:
window.open('http://www.google.com', '_blank', 'toolbar=0,location=0,menubar=0');
location=0
JS bir düğme veya bağlantı öğesinden çağrıldığında gereklidir.
location=0
parametreleri ekliyor . Ayrıca _blank
, kullanıcı, pop-up'ı açan öğeyi birkaç kez tıklarsa ve focus()
zaten açık bir pop-up odağı alacak şekilde zincirleme yaparsa, aynı pencereyi tekrar kullanmak için, hedefi kullanmak yerine pencereyi adlandırmayı öneririm :window.open('http://stackoverflow.com', 'Stack_Overflow','location=0').focus();
Yanılıyor olabilirim, ancak anladığım kadarıyla, bu kullanıcının tarayıcı tercihleri tarafından kontrol edilir ve bunun geçersiz kılınabileceğine inanmıyorum.
Deneyin:
window.open("", [window name], "height=XXX,width=XXX,modal=yes,alwaysRaised=yes");
Ne dediğini yapan bazı kod var, ama parametreler çok şey var. Bence bunlar asgari düzeyde, işe yaramazsa bana bildirin, gerisini göndereceğim.
Tamam, çok fazla test yaptıktan sonra, benim sonucum:
Yaptığınız zaman:
window.open('www.yourdomain.tld','_blank');
window.open('www.yourdomain.tld','myWindow');
veya hedef alana ne koyarsanız koyun, hiçbir şey değişmez: yeni sayfa yeni bir sekmede açılır (dolayısıyla kullanıcı tercihine bağlıdır)
Sayfanın yeni bir "gerçek" pencerede açılmasını istiyorsanız, fazladan parametre koymanız gerekir. Sevmek:
window.open('www.yourdomain.tld', 'mywindow','location=1,status=1,scrollbars=1, resizable=1, directories=1, toolbar=1, titlebar=1');
Test ettikten sonra, kullandığınız ekstra parametre gibi görünüyor, gerçekten önemli değil: bu, "bu parametreyi" veya "bu diğerini" yeni "gerçek pencereyi" oluşturan gerçek değil, ancak yeni parametreler var. ).
Ancak bir şey karıştırılır ve birçok yanlış yanıtı açıklayabilir:
Bu:
win1 = window.open('myurl1', 'ID_WIN');
win2 = window.open('myurl2', 'ID_WIN', 'location=1,status=1,scrollbars=1');
Ve bu:
win2 = window.open('myurl2', 'ID_WIN', 'location=1,status=1,scrollbars=1');
win1 = window.open('myurl1', 'ID_WIN');
aynı sonucu vermeyecektir.
İlk durumda, ek parametre olmadan bir sayfayı ilk açtığınızda , yeni bir sekmede açılır . Ve bu durumda, verdiğiniz ad nedeniyle ikinci çağrı da bu sekmede açılır .
İkinci durumda, ilk aramanız ekstra parametre ile yapıldığından , sayfa yeni bir " gerçek pencerede " açılacaktır . Ve bu durumda, ikinci çağrı ekstra parametre olmadan yapılsa bile, bu yeni " gerçek pencerede " de açılacaktır ... aynı sekmede!
Bu, sayfanın nereye yerleştirileceğine karar verdiği için ilk aramanın önemli olduğu anlamına gelir.
Gerek yok. Kullanıcının istediği tercihlere sahip olmasına izin verin.
Firefox bunu varsayılan olarak yapar, çünkü yeni bir pencerede bir sayfa açmak can sıkıcıdır ve kullanıcının istediği şey değilse bir sayfanın bunu yapmasına asla izin verilmemelidir. (Firefox, bu şekilde ayarlarsanız sekmeleri yeni bir pencerede açmanıza izin verir).
Aşağıdaki işlevi deneyebilirsiniz:
<script type="text/javascript">
function open(url)
{
var popup = window.open(url, "_blank", "width=200, height=200") ;
popup.location = URL;
}
</script>
Yürütülecek HTML kodu:
<a href="#" onclick="open('http://www.google.com')">google search</a>
Anahtar parametrelerdir:
Eğer varsa sağlamak [Yükseklik = "", Genişlik = ""] Parametreler, o zaman yeni pencerelerde açılacak.
Eğer varsa sağlamak YAPMAYIN Parametreler, o zaman yeni bir sekmede açılır.
Chrome ve Firefox'ta test edildi
İlginç bir şekilde, boş bir yere girerseniz window.open öğesinin üçüncü özelliği için dize (boş bir dize veya özellikler listesi yerine) geçerseniz, Chrome, Firefox ve IE için yeni bir sekmede açılacağını gördüm. Eğer yoksa, davranış farklıydı.
İşte bu benim yeni telefonum:
window.open(url, windowName, '');
bu yöntemi deneyin .....
function popitup(url) {
//alert(url);
newwindow=window.open("http://www.zeeshanakhter.com","_blank","toolbar=yes,scrollbars=yes, resizable=yes, top=500, left=500, width=400, height=400");
newwindow.moveTo(350,150);
if (window.focus)
{
newwindow.focus()
}
return false;
}
Benim için çözüm
"location=0"
3. parametrede. En son FF / Chrome ve eski bir IE11 sürümünde test edildi
Kullandığım tam yöntem çağrısı aşağıda (Değişken genişlik kullanmak istediğim gibi):
window.open(url, "window" + id, 'toolbar=0,location=0,scrollbars=1,statusbar=1,menubar=0,resizable=1,width=' + width + ',height=800,left=100,top=50');
Ben sadece IE (11) ve Chrome (54.0.2794.1 kanarya SyzyASan) ile denedim:
window.open(url, "_blank", "x=y")
... ve yeni bir pencerede açıldı.
Bu, herhangi bir parametre sağlamanın yeni pencerenin açılmasına neden olacağını söylediğinde Clint pachl'ın doğru olduğu anlamına gelir .
- ve görünüşe göre bunun meşru bir parametre olması gerekmiyor!
(YMMV - Dediğim gibi, sadece iki yerde test ettim ... ve bir sonraki yükseltme sonuçları herhangi bir şekilde geçersiz kılabilir)
ETA: Yine de fark ettim - IE'de pencerenin süslemesi yok.
Burada cevap verdi . Ancak referans için tekrar gönderiyoruz.
window.open()
gerçek tıklama etkinliğinde gerçekleşmiyorsa yeni sekmede açılmaz. Verilen örnekte, url gerçek tıklama etkinliğinde açılıyor. Bu, kullanıcının tarayıcıda uygun ayarlara sahip olması koşuluyla çalışır.
<a class="link">Link</a>
<script type="text/javascript">
$("a.link").on("click",function(){
window.open('www.yourdomain.com','_blank');
});
</script>
Benzer şekilde, tıklama işlevi içinde bir ajax çağrısı yapmaya çalışıyorsanız ve başarılı bir şekilde bir pencere açmak istiyorsanız, ajax çağrısını async : false
seçenek kümesi ile yaptığınızdan emin olun .
Aynı soruyu sordum ama nispeten basit bir çözüm buldum.
JavaScript'te window.opener !=null;
pencerenin bir pop-up olup olmadığını belirlemek için kontrol ediyordum. Sitenizdeki pencerenin görüntülenip görüntülenmediğini belirlemek için benzer bir algılama kodu kullanıyorsanız, yeni pencereler JavaScript'i kullanarak "yeni" bir pencere açmak istediğinizde kolayca "kapatabilirsiniz" .
Bunu her zaman "yeni" bir pencere olmasını istediğiniz sayfanın en üstüne koyun .
<script type="text/javascript">
window.opener=null;
</script>
Bunu sitemin giriş sayfasında kullanıyorum, böylece kullanıcılar siteme gitmek için bir açılır pencere kullanıyorlarsa pop-up davranışı almıyorlar.
Bunu yapan ve daha sonra verdiğiniz URL'ye taşınan basit bir yönlendirme sayfası bile oluşturabilirsiniz. Gibi bir şey,
Ana sayfadaki JavaScript:
window.open("MyRedirect.html?URL="+URL, "_blank");
Daha sonra buradan küçük bir javascript kullanarak URL'yi alabilir ve yönlendirebilirsiniz.
Yönlendirme Sayfasında JavaScript:
<script type="text/javascript">
window.opener=null;
function getSearchParameters() {
var prmstr = window.location.search.substr(1);
return prmstr != null && prmstr != "" ? transformToAssocArray(prmstr) : {};
}
function transformToAssocArray( prmstr ) {
var params = {};
var prmarr = prmstr.split("&");
for ( var i = 0; i < prmarr.length; i++) {
var tmparr = prmarr[i].split("=");
params[tmparr[0]] = tmparr[1];
}
return params;
}
var params = getSearchParameters();
window.location = params.URL;
</script>