Firefox挂起无限循环并忽略window.print()上的css

时间:2014-04-04 10:50:01

标签: javascript jquery html css firefox

在主页上我尝试打印弹出窗口。 在Chrome上它可以工作,但在Firefox中它不起作用,不知怎的它忽略了css文件。

在Firefox中,窗口正在加载某些内容,但我不知道它是什么,因为我无法打开萤火虫。 格式化HTML看起来正确,但打印机没有获得css信息。 所以我可能会,因为他加载了一些东西。

HTML+JS代码(小提琴不允许document.write):

http://pastebin.com/QXASsTXg

popup.css

http://pastebin.com/HM6JEMnX

很抱歉使用pastebin,但代码对于stackoverflow来说很大。

Javascript Code

$( document ).ready(function() {

    $('.depart span').click(function(){

        //close all popups
        $('.popup').hide();

        //open current popup
        $(this).next().slideDown();
    });

    $('.close').click(function(){
    // close all popups    
        $('.popup').slideUp();

    });

    $('span.printbutton').click(function(){
    printPopup($(this));
    });
});
function printPopup(data){
    var popup = data.parent().parent().parent('div.popup');
    mywindow = window.open('', 'my div', 'height=600,width=420');
    mywindow.document.write('<html><head><title>Popup</title>');
    mywindow.document.write('<link rel="stylesheet" media="screen" href="popup.css" type="text/css" />');
    mywindow.document.write('<link rel="stylesheet" media="print" href="popup.css" type="text/css" />');

    mywindow.document.write('</head>')
    mywindow.document.write('<body class="popupwindow">')
    mywindow.document.write('<div class="popup">')

    mywindow.document.write(popup.html());
    mywindow.document.write('</div>')

    mywindow.document.write('</body></html>');
//  mywindow.location.reload();
    mywindow.focus();
    mywindow.print();
    setTimeout('mywindow.close();', 5000);

    return true;
}

希望有人可以提供帮助。

编辑:找到一个新的提示,当弹出窗口加载循环时,我必须按ESC键取消循环,然后我可以按STRG + P,它工作正常。 哪里可能是错误?

3 个答案:

答案 0 :(得分:1)

我自己修好了,如果其他人有同样的问题,这就是解决办法: 在你最后一次

之后
mywindow.document.write('</html>');

你需要这行Firefox:

mywindow.document.close();

在那之后,Firefox停止等待其他内容,我可以毫无问题地打印弹出窗口。 不知何故,Chrome忽略了缺失的行,我工作正常,但是firefox需要它才能正常工作。

答案 1 :(得分:0)

Throurg Jquery Pull Css from That Printout Page  
INSTEAD OF :
    mywindow.document.write('<link rel="stylesheet" media="screen" href="popup.css" type="text/css" />');
    mywindow.document.write('<link rel="stylesheet" media="print" href="popup.css" type="text/css" />');

    USE : $("#printoutpage").css();

See If It Works

答案 2 :(得分:0)

尝试引用css文件的绝对路径:

mywindow.document.write('<link rel="stylesheet" media="screen" href="\path\to\css\popup.css" type="text/css" />');
mywindow.document.write('<link rel="stylesheet" media="print" href="\path\to\css\popup.css" type="text/css" />');