ajax加載數據到頁面沒法打印的解決辦法

        今天,弄一個打印頁面的功能大體的原理想法是,ajax加載頁面到當前的一個隱藏iframe裏面,而後打印iframe,爲了兼容全部的瀏覽器,只好捨棄預覽功能,使用print()方法打印。但是試了好幾遍,每次打印都是空白啊。具體的代碼以下html

function XmlPostprint(){
	var result='';
	$.ajax({
		url:"test222.html",
		success:function(data){
			var doc=$("iframe#flyso")[0].contentWindow.document;
			doc.write(data);
			doc.close();

		}
	});
}

function prints()
{
	XmlPostprint();
		var ss=document.getElementById("flyso");
		ss.contentWindow.close();
		ss.contentWindow.focus();
		ss.contentWindow.print();


}

        以後無心中一次點擊了兩次打印按鈕,忽然發現居然又能夠打印了。才恍然大悟,jquery的ajax默認是異步加載的,也就是說prints()方法中的XmlPostprint()方法還沒有完成,就直接執行下面的js語句了。解決方法就是jquery的ajax添加上async:false的屬性,修改後的XmlPostprint()以下:

function XmlPostprint(){
	var result='';
	$.ajax({
		url:"test222.html",
		async:false,
		success:function(data){
			var doc=$("iframe#flyso")[0].contentWindow.document;
			doc.write(data);
			doc.close();

		}
	});
}
注:contentWindow是用於獲取iframe框架的window對象。本想用contentDocument,但此屬性兼容性很差。再者,很是感謝jquery插件printArea的做者,許多想法都看了插件的源代碼才實現,萬分感謝
相關文章
相關標籤/搜索