window.print()上的奇怪问题

时间:2013-10-25 07:58:42

标签: javascript jquery

使用window.print()时,我遇到了一个相当奇怪的问题 我有一个页面需要具有与通常向用户显示的不同的打印布局。因此,我创建了一个叠加层,当用户点击print按钮然后它会触发window.print()时会显示该叠加层。一切都很好,除了打印窗口不止一次显示的一些未知原因。如果我第一次点击打印按钮,我会打印窗口2次,第二次我得到它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();
    });
}

任何想法导致了什么?

1 个答案:

答案 0 :(得分:4)

我相信这可能是因为你选择two elements因此在jQuery选择器中找到的每个元素上迭代两次。

因此,只需将其调整为$('html')标记:

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

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