2013-03-28 104 views
8

客戶的網站上有產品清單。該產品的價格通過頁面底部的iFrame動態提取。頁面上有Javascript,它會根據iFrame內容的大小自動將此iFrame調整到正確的高度,一旦它被加載。JavaScript:打印完整網頁時,IE似乎無法在頁面上打印iFrame的內容

客戶端報告打印頁面時,他們無法從iFrame中看到價格應該是什麼的東西 - 顯然它不是在IE中打印,而是在主頁面上打印。

我在Mac上,所以無法在IE中測試,所以我很難用這個實驗。

任何人都可以澄清在這種情況下的預期行爲?默認情況下是否可以讓IE瀏覽器打印頁面包含的iFrames?如果是這樣,我該如何去做這件事?我只能找到從父窗口打印特定框架的示例。

謝謝!

+0

這不回答你的問題,但可以讓你在未來與IE測試 - http://habdas.org/emulating-ie-with -virtualbox/ –

+0

IE處理iframe打印的方式可能存在一些差異,您最好提供網站的URL或類似問題的HTML頁面源代碼(包括CSS)。 – fitheflow

+0

我發現其他人報告類似的問題爲IE [這裏](https://issues.liferay.com/browse/LPS-16399) – fitheflow

回答

0

這是一個有趣的觀點,所以我做了一個測試使用IE8(在服務器上,不是本地)。

我在IE8中打印了一個網頁,其中包含我構建的某個iframe。它首次打印了一些內容(其他內容顯示爲黑色)。第二次印刷時,iframe內容全部爲黑色。

但是,在我的示例中,iframe中的內容不斷變化(淡入淡出的圖像和文本),並且它背後的css背景爲黑色。

此測試的iFrame內容不同於主頁面的內容。但據我所知,這裏有一個跨域策略文件。

跨域策略問題是我的第一個猜測,但它完全可能存在一些問題,當Internet Explorer將它發送到打印機時,如何呈現屏幕截圖。

0

如果您使用的是Javascript,那麼爲什麼不嘗試window.print()函數以及print media CSS

1

預期行爲應該是您在其他瀏覽器中遇到的情況。如果打印頁面,iframe應與其一起打印。在這種情況下,很難想象其他人錯誤地認爲IE是正確的。

下面是有點什麼問題威力炒作,但不知道多/看代碼是很難知道的細節:

這個問題可能是由於一些CSS,你可能在您的網頁上。我讀過類似的iframe打印問題,其中visibility設置爲hidden,最初導致iframe打印不正確。爲了解決這個特定情況,用戶必須將widthheight設置爲0px。在不瞭解您的網站的情況下,我無法正確預測這種情況正在發生。

另一個問題可能是您的動態調整大小基於iframe的內容。一個簡單的測試就是將該部分註釋掉,並在iframe上設置一個通用的widthheight以查看打印問題是否仍然存在。也許這些動態樣式不會被轉移到打印樣式表並且不會被應用(因此根本不會出現)。

作爲一個快速的建議,看看css media types

打印

旨在用於分頁材料以及在 打印預覽模式下在屏幕上查看的文檔。有關特定於分頁媒體的格式問題的信息,請參閱paged media部分的 。

有用的鏈接Print Specification

0

我無法解釋爲什麼IE瀏覽器不能正常工作,但也許你可以通過添加這部分代碼到父頁面解決問題,以迫使每個iframe要刷新:

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

要獲得瀏覽器,我使用this方法。我不使用contentDocument.location.reload(true);方法來確保iframe被刷新。請參閱SO topic

+0

'$ .browser'已從jQuery 1.9中刪除:http://api.jquery.com/jQuery.browser/ – Chase

+0

是的,您是對的。您必須使用舊的jQuery版本,因爲新方法將檢測瀏覽器是否支持給定功能,而不是獲取瀏覽器名稱。它是[jQuery.support](http://api.jquery.com/jQuery.support/)在我們的案例中,我們不知道問題出在哪裏。 – JoDev