3

我在使用时遇到了一个相当奇怪的问题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();
    });
}

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

4

1 回答 1

6

我相信这可能是因为您选择了两个元素,因此在迭代 jQuery 选择器中找到的每个元素时触发了两次。

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

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

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

于 2013-10-25T08:40:01.387 回答