使用window.print()时遇到一个相当奇怪的问题。
我的页面需要具有与通常显示给用户的页面不同的打印布局。因此,我创建了一个叠加层,当用户单击print按钮并触发window.print()时会显示该叠加层。一切正常,除非出于某些未知原因,打印窗口显示多次。如果我第一次单击“打印”按钮,则将获得两次打印窗口,第二次将其得到4次。

HTML:

<div id="printDiv" style="position: fixed; overflow: auto; top: 0px; width: 100%; height: 100%; background: white; z-index: 9999;display: none;">
   The print page content
</div>

JavaScript:
function show_print(){
    $('body').css('overflow', 'hidden');
    $('html,body').animate({ scrollTop: 0 }, 'fast', function () {
        window.print();
    });
}

任何想法是什么原因造成的?

最佳答案

我相信这可能是因为您选择two elements从而在对jQuery选择器中找到的每个元素进行迭代时触发两次。

因此,通过将其调整为仅$('html')标签:

$('html').animate({ scrollTop: 0 }, 'fast', 'swing', function () {
    window.print(); //Prints once
});

小提琴:http://jsfiddle.net/ThFvD/

07-24 09:36
查看更多