2009-05-20 22 views
11

Engellemeye çalıştığım bir pop-up var. Birisi sitemdeki bir Print resmine tıkladığı için oluşturulan bir pop-up.Javascript window.open, IE popup blocker tarafından bloke edildi.

IE'nin, popup bir onclick aracılığıyla geldiğinde bunların engellenmemesi gerektiğini düşündüm.

Herkes yardımcı olabilir mi? açılır pencere engelleyicisi etkinse child1 değişken her zaman

Belki sorun İşte

child.document.write benim basittir onclick olay daha sonra bir html dosyası yükler ve does yeni işleve kontrol geçer yani ... NULL olarak döndürülür code ..

var width = 800; 
var height = 600; 
var left = parseInt((screen.availWidth/2) - (width/2)); 
var top = parseInt((screen.availHeight/2) - (height/2)); 
var windowFeatures = "width=" + width + ",height=" + height 
    + ",menubar=yes,toolbar=yes,scrollbars=yes,resizable=yes,left=" 
    + left + ",top=" + top + "screenX=" + left + ",screenY=" + top;  

child1 = window.open("about:blank", "subWind", windowFeatures); 

cevap

13

sorun mevcut ev sahibi içinde bir yerde gitmekte olduğunuz sadece pencerenin bir başvuru döneceğini açık olacaktır. Hakkında geziniyorsunuz: ana makinenizde olmayan boşluk.

Sitenize bir blank.htm dosyası eklemeyi deneyin ve bunun yerine bunu açın. Belgenin yazmaya izin verilemeyeceğinden hala emin değilim. Yazım için belgenin açık olmayacağından emin olabilirsiniz, ancak mevcut boş belgenin DOM'sini değiştirebiliyor olabilirsiniz.

+0

içinde işe yaramıyor Evet, bu, temelde benim mevcut web bir dosya yüklemek gerekir BLANK değil ... ben boş bir html dosyası oluşturdum .. yüklü ve windows.write kullanılmış benim html yazmak için .. teşekkür sen ve herkes için teşekkürler elses yorumlar –

3

Bu, bir hedef = "_ blank" olan bir çapa olmadığı için engeller. Açılır pencereyi programlı olarak oluşturuyorsunuz.

Bunu, sağladığınız kod örneğinden sonra yapın.

if (!child1) { 
     alert('You have a popup blocker enabled. Please allow popups for www.yourSite.com'); 
} 
+2

:

let win = window.open(); setTimeout(function(){ win.customParam = 'xxxx'; }); 

galibiyetiyle, bir zamanlayıcı veya döngü ile pencere yüklenmesinden sonra customParam alabilirsiniz Bu IE 8 – JBeckton

0

Bir window.open() yerine bir target = "_ blank" ile bir taklit [form] oluşturmanızı öneririm.

Umarım çalışır.

Saygılarımızla.

PD: Sitenizi "güvenilen sitelere" eklemek bir seçenek değil, doğru mu?

4

Internet Explorer açılır pencere engelleyicisi, Medium filtre düzeyine ayarlandığında, bir kullanıcı eylemi tarafından başlatılmışsa, JavaScript tarafından açılan pencereleri engellemez. IE 6, 7 ve 8'de ince aşağıdaki çalışır:

<script type="text/javascript"> 
function openWin() { 
    var width = 800; 
    var height = 600; 
    var left = Math.floor((screen.availWidth - width)/2); 
    var top = Math.floor((screen.availHeight - height)/2); 
    var windowFeatures = "width=" + width + ",height=" + height + 
      ",menubar=yes,toolbar=yes,scrollbars=yes,resizable=yes," + 
      "left=" + left + ",top=" + top + 
      "screenX=" + left + ",screenY=" + top; 
    child1 = window.open("about:blank", "subWind", windowFeatures); 
    writeTo(child1); 
} 
function writeTo(w) { 
    w.document.write('Test'); 
} 
</script> 
<a href="#" onclick="openWin();return false;">Test</a> 

Not yeni açılan pencereye document.write kullanarak bazı web tarayıcılarında çalışmıyor söyledi. Ayrıca, Internet Explorer'da gösterildiği gibi çalışsa bile, bunun diğer tarayıcılarda bir pop-up engelleyiciyi tetikleyebileceğini unutmayın.

onclick olayından JavaScript'i çağırmanın, bazı durumlarda, açılır pencere engelleyicinin tetiklenmesine neden olabileceğini gördüm. uzakwindow.open()'un onclick olayından nasıl bir şey yapacağı anlaşılıyor. window.open()'u aramadan önce işlevleri çağıran çok fazla işlev düzeyi. Tam olarak uygulamanızı görmeden, bunun sahip olduğunuz sorun olup olmadığını size söyleyemem.

+0

güzel kod çalışıyor! teşekkürler –

1

kod deneyin

var newWin = window.open(...); 
if (newWin && newWin.top) { 
    // popup has opened 
} else { 
    // popup has been blocked 
} 
0

i yani 10/11 bir fikrin var: