代碼如下
Code
function Preview( oper ) //參數為第幾個列印塊
{
bdhtml = window.document.body.innerHTML; //擷取當前頁的html代碼
sprnstr = "<!--startprint"+oper+"-->"; //設定列印開始地區
eprnstr = "<!--endprint"+oper+"-->"; //設定列印結束地區
prnhtml = bdhtml.substring(bdhtml.indexOf(sprnstr)+18); //從開始代碼向後取html
prnhtml = prnhtml.substring(0,prnhtml.indexOf(eprnstr)); //從結束代碼向前取html
window.document.body.innerHTML = prnhtml; //設定當前畫面的內容為要列印的內容, 從而不需列印的部分就沒了
//添加一個列印必備的js控制項
var WebBrowser = '<OBJECT ID="WB" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
document.body.all.WB.execwb( 7, 1 ); //預覽列印
window.document.body.innerHTML = bdhtml; //將原來畫面還原回去
}
列印按鈕中的onclick事件自不用說, 在需要列印的部分開頭加上<!--startprint1-->, 結尾加上<!--endprint1-->. (其中"1"為要列印的區塊, 是跟按鈕事件中的參數一致的)
缺欠就是每當點擊列印的時候, 首先會看到畫面的變化(變成只剩下要列印的部分), 感覺這樣使用者體驗不是很好.
還有一種方法就是將不需要列印的地方都應用@media.print的一個dispaly: none的樣式, 這樣無形中加大了太多工作量了.
哪位要是有更好的解決方案麻煩留個言, 讓小弟也學習學習. 不盡感激.