window.print()没有'不起作用

window.print() doesn't work

本文关键字:不起作用 没有 print window      更新时间:2024-02-04

我试图使用按钮打印文档,但每次尝试按钮都不起作用。

        var printContents = document.getElementById("test").innerHTML;
        var originalContents = document.body.innerHTML;
        document.body.innerHTML = printContents;
        window.print();
        document.body.innerHTML = originalContents;

当这不起作用时,我打开控制台并尝试,但后来我得到了这个

类型错误:无法读取null的属性"innerHTML"

我尝试创建一个空的html页面,上面除了一个短语和一个运行代码的按钮之外什么都没有。

function print(){
window.print();
}

但这也无济于事。

edit:难道没有一种只使用JavaScript的方法吗?这是我为学校项目做的最后一件事,但我不知道Jquery:s,老师说用Javascript是可能的。

看起来你在文档准备好之前就访问了元素——你能包括像jQuery这样的东西吗?

请参见此处:http://jsbin.com/edeNIPE/1/

但是,这不是打印内容的最佳方式,您是否考虑过使用打印样式表(http://coding.smashingmagazine.com/2011/11/24/how-to-set-up-a-print-style-sheet/)允许您隐藏显示元素?

@media print {
   .some-class{
       display:none;
   }
}

根据请求,如果您不想使用JQuery:http://jsbin.com/edeNIPE/1/

function init(){
  var printContents = document.getElementById("test").innerHTML;
  var originalContents = document.body.innerHTML;
  document.body.innerHTML = printContents;
  window.print();
  document.body.innerHTML = originalContents;
 };
window.onLoad = init();

这里试试这个:好的,这里是:Fiddle

HTML

<button onclick="myFunction()">Click me</button>
<div id="test">This is supposed to print</div>

CSS

#test
{
   display:none;
}
 @media print {
    #test
   {
       display:block;
   }
 }

JS-虽然我不确定你为什么要尝试获取innerHTML-你应该调用函数并执行window.print();-应该这样做。

function myFunction ()
{
    var printContents = document.getElementById("test").innerHTML;
    var originalContents = document.body.innerHTML;
    document.body.innerHTML = printContents;
    window.print();
    document.body.innerHTML = originalContents;
}

在尝试访问页面上的任何元素之前,您需要等待文档准备就绪。

SO和其他地方有很多关于这个主题的页面。这里有一个:

$(document).ready等价物,不带jQuery