javascript 控制局部列印 (有缺欠)

來源:互聯網
上載者:User

代碼如下

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的樣式, 這樣無形中加大了太多工作量了.
哪位要是有更好的解決方案麻煩留個言, 讓小弟也學習學習. 不盡感激.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.