2013-03-28 20 views
8

sayfasında yazdırıyor gibi görünmüyor. Müşterinin web sitesinde ürün listelemeleri var. Ürün fiyatları, sayfanın alt kısmında bir iFrame aracılığıyla dinamik olarak çekilir. Sayfada, yüklendikten sonra iFrame içeriğinin ne kadar büyük olduğuna bağlı olarak bu iFrame'i doğru yüksekliğe otomatik olarak yeniden boyutlandıran Javascript vardır.JavaScript: Tam bir web sayfası yazdırırken, IE, iFrame'lerin içeriğini sayfa

İstemci, sayfayı yazdırırken, fiyatların olması gereken iFrame öğesinden hiçbir şey göremediğini bildiriyor. Görünüşe göre, yalnızca ana sayfada değil, IE'de yazdırılıyor.

Mac'tayım ve IE'de test yapamıyorum, bu yüzden bununla uğraşmakta zorlanıyorum.

Bu durumda beklenen davranışı netleştiren var mı? IE'yi her iki sayfaya da yazdırmak mümkün mü? ve varsayılan olarak iFrame'leri içerir ve eğer öyleyse, bunu nasıl yapacağım? Sadece bir üst pencereden belirli bir karenin yazdırılması için örnekler bulabilirim.

Teşekkürler!

+0

sorununuzu çözdü bu Plugin deneyin, ancak gelecekte IE ile test etmek izin verebilir - http://habdas.org/emulating-ie-with -virtualbox/ –

+0

IE'nin iframe'leri nasıl işlediğine ilişkin bazı farklılıklar olabilir, web sitesinin URL'sini veya siteye benzeyen bir HTML sayfasının (CSS dahil) daha iyi bir kaynağını sağlayabilirsiniz. – fitheflow

+0

Başka birinin IE için benzer bir sorun bildirdiğini öğrendim [https://issues.liferay.com/browse/LPS-16399] – fitheflow

cevap

0

Bu ilginç bir noktaydı, bu yüzden IE8 (yerel olarak değil, bir sunucuda) kullanarak bir test yaptım.

IE8'de, oluşturduğum bir şeyin iframe'sini içeren bir web sayfası yazdırdım. Ve içeriğin bir kısmını ilk defa basıyordu (diğer içerikler siyah gösteriyordu). Yazdığım ikinci kez iframe içerikleri tamamen siyahtı.

Ancak, örneğimde iframe'deki içerikler sürekli olarak değişiyor (içeri ve dışarı soldurulmuş görüntüler ve metinler) ve arkasındaki css arka planı siyah.

Bu test, iFrame'in içeriğini ana sayfanın içeriğinden farklı bir ana sunucuda içerir. Ama benim bilgime göre, burada çalışan bir alanlar arası politika dosyası var.

Etki alanları arası ilke sorunlarım ilk tahmindi, ancak Internet Explorer'ın yazıcıya gönderdiğinde ekran görüntüsünü nasıl oluşturduğuna dair bazı sorunlar var.

0

Javascript kullanıyorsanız, neden window.print() işlevini print media CSS ile birlikte deneyin.

1

beklenen davranış, diğer tarayıcılarda yaşadığınız davranış olmalı. Sayfa yazdırılırsa, iframe onunla birlikte yazdırılmalıdır. Herkesin yanlış anladığını ve IE'nin bu durumda doğru olduğunu hayal etmek zor olurdu. Aşağıda

konu kudreti olması ne spekülasyon biraz ama özelliklerini bilmek zor daha/görmeden kodunu bilmeden geçerli: nedeniyle bazı css

Bu sorun olabileceğini sen olabilir sayfanızda var. iframe yazdırma sorunlarıyla ilgili visibility'un hidden olarak ayarlandığı başlangıçta, iframe düzgün yazdırılmamasıyla sonuçlanmıştır. Bu özel durumdan kurtulmak için kullanıcı, width ve height'u 0px'a ayarlamak zorunda kaldı. Siteniz hakkında daha fazla bilgi sahibi olmadan, bunun gerçekleştiğini doğru bir şekilde tahmin edemiyorum.

Dinamik bir şekilde yeniden boyutlandırmanız, iframe'in içeriğine bağlı olarak başka bir sorun olabilir.Basit bir test, bu bölümü yorumlamak ve baskı sorununun devam edip etmediğini görmek için iframe numaralı telefona genel bir width ve height ayarlayın. Belki de bu dinamik stiller baskı stiline taşınmıyor ve uygulanmıyor (bu nedenle hiç görünmüyor).

hızlı bir öneri olarak, css media types içine bakmak:

baskı disk belleği malzeme için ve baskı önizleme modunda ekranda sayfa için Amaçlanan

. Disk belleği olan medyaya özgü biçimlendirme sorunları hakkında bilgisi için lütfen paged media bölümüne bakın.

Faydalı bağlantı: Print Specification

0

IE çalışmıyor neden açıklayamam, ama belki zorlamak amacıyla, ana sayfasına bu kod parçasını ekleyerek sorunu çözebilirsiniz her iframe yenileme olmak:

$(document).ready(function() { 
    if($.browser.msie) {//Only for IE 
     $('iframe').each(function() { 
      $(this).attr('src', $(this).attr('src')); 
     }); 
    } 
}); 

tarayıcı almak için, ben this yöntemini kullanın.
Ve iframe'in yenilenmesini sağlamak için contentDocument.location.reload(true); yöntemini kullanmıyorum. Bakınız SO topic.

+0

'$ .browser', 1.9'dan itibaren jQuery'den kaldırıldı: http://api.jquery.com/jQuery.browser/ – Chase

+0

Evet, haklısınız. Eski bir jQuery sürümünü kullanmalısınız çünkü yeni yöntem, tarayıcının belirli bir özelliği destekleyip desteklemediğini ve tarayıcı adını almamayı algılamaktır. Bu [jQuery.support] (http://api.jquery.com/jQuery.support/) Ve bizim durumumuzda, sorunun nerede olduğunu bilmiyoruz. – JoDev