2010-07-09 85 views
1

如何使用Javascript在我的頁面中打印出特定的div?如何製作div的打印輸出?

+11

PLZ更具體 – 2010-07-09 06:30:20

+2

你好朋友,你想打印輸出還是軟拷貝? – 2010-07-09 06:32:29

+0

有沒有什麼理由要用javascript打印div? – 2010-07-09 06:34:41

回答

0

下面是已在IE8和FF3.6.6經測試在Windows中實現 有一些東西,可以簡化,但其他是必要的(顯示:無上的iframe將打印什麼)

<html> 
    <head> 
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> 
    <title>print selected paragraphs</title> 
    <style> 
    a{text-decoration:none} 
    </style> 

    <style media="print"> 
    .noPrint { display:none} 
    .print { display:block} 
    </style> 
    <script> 
    function addPrint() { 
    var checks = document.getElementsByTagName('input'); 
    for (var i=0;i<checks.length;i++) { 
     document.getElementById(checks[i].value).className = (checks[i].checked)?'print':'noPrint'; 
    } 
    } 
    var content 
    function printThis(id) { 
    var iFrame = document.createElement('iframe'); 
    iFrame.height='1px'; 
    iFrame.width='1px'; 
    content = document.getElementById(id).innerHTML; 
    content = '<body onload="self.focus();self.print()"><style>.noprint{display:none}</style>'+content+'</body>' 
    iFrame.src='about:blank'; 
    document.body.appendChild(iFrame); 
    // Initiate the iframe's document to null 
    iFrame.doc = null; 

    // Depending on browser platform get the iframe's document, this is only 
    // available if the iframe has already been appended to an element which 
    // has been added to the document 
    if(iFrame.contentDocument) 
     // Firefox, Opera 
     iFrame.doc = iFrame.contentDocument; 
    else if(iFrame.contentWindow) 
     // Internet Explorer 
     iFrame.doc = iFrame.contentWindow.document; 
    else if(iframe.document) 
     // Others? 
     iFrame.doc = iFrame.document; 

    // If we did not succeed in finding the document then throw an exception 
    if(iFrame.doc != null) { 
     iFrame.doc.write(content) 
     iFrame.doc.close() 
    } 
    return false 
    } 
    window.onload=function() { 
    addPrint(); 
    } 
    </script> 
    </head> 
    <body> 
<div id="p1" class="noPrint"> 
<h3>1. ¿Qué es Lorem Ipsum?</h3> 
<p>Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal manera que logró hacer un libro de textos especimen. No sólo sobrevivió 500 años, sino que tambien ingresó como texto de relleno en documentos electrónicos, quedando esencialmente igual al original. Fue popularizado en los 60s con la creación de las hojas "Letraset", las cuales contenian pasajes de Lorem Ipsum, y más recientemente con software de autoedición, como por ejemplo Aldus PageMaker, el cual incluye versiones de Lorem Ipsum.</p> 
<input type="checkbox" class="noPrint" id="c1" value="p1" onClick="addPrint(this)"><label class="noPrint" for="c1">Add this to print</label>&nbsp;<a href="#" onClick="return printThis('p2')">Print this NOW</a> 
</div> 

<div id="p2" class="noPrint"> 
<h3>2. ¿Por qué lo usamos?</h3> 
<p>Es un hecho establecido hace demasiado tiempo que un lector se distraerá con el contenido del texto de un sitio mientras que mira su diseño. El punto de usar Lorem Ipsum es que tiene una distribución más o menos normal de las letras, al contrario de usar textos como por ejemplo "Contenido aquí, contenido aquí". Estos textos hacen parecerlo un español que se puede leer. Muchos paquetes de autoedición y editores de páginas web usan el Lorem Ipsum como su texto por defecto, y al hacer una búsqueda de "Lorem Ipsum" va a dar por resultado muchos sitios web que usan este texto si se encuentran en estado de desarrollo. Muchas versiones han evolucionado a través de los años, algunas veces por accidente, otras veces a propósito (por ejemplo insertándole humor y cosas por el estilo).</p> 
<input type="checkbox" class="noPrint" id="c2" value="p2" onClick="addPrint(this)"><label class="noPrint" for="c2">Add this to Print</label> 
</div> 
</body> 
</html> 
0

document.write('< div>'+ variableWithSomeContent +'</div>');

-1

Javascript does not print。您必須將div插入到DOM(文檔對象模型)中。

我建議學習一些jQuery並使用.append(),.prepend().html()函數。

+5

在對Javascript/DOM/etc有基本的理解之前學習jQuery是一個問題的解決方法IMO – 2010-07-09 06:38:00

+0

使用Javascript爲您打印一個div是多麼困難?因爲你真的必須學習jQuery ...... :)你是認真的嗎? – Reigel 2010-07-09 06:51:57

1

我會建議使用'print'css樣式表,在其中您可以指定隱藏您不想打印的dom元素(使用display:none)。嘗試僅在打印樣式表中使您想要打印的div可見。

另一種選擇是使用彈出窗口,當點擊頁面上的「打印」按鈕時顯示該窗口。在彈出窗口中只顯示div內容,並在文檔加載時觸發打印對話框。

+0

沒有什麼比打印樣式表更好。 – Alsciende 2010-07-09 07:53:11