2011-08-04 45 views
2

我有一个lightbox插件,需要额外的选项 - 打印图像。 所以我做了打印图像如下一点的JS函数:window.print()javascript does not get previewed in chrome

var headstr="<!DOCUMENT html><html xmlns='http://www.w3.org/1999/xhtml'><head><title></title></head><body>"; 
var footstr="</body>"; 
var newstr="<img src=\"[img-location]\" alt='courses' />"; 
document.body.innerHTML=headstr+newstr+footstr; 
window.print(); 
window.location.reload(); 

的问题是,当打印按钮,用户按下后,chrome它会打开一个新窗口(铬打印页),并在其中它说 - print preview failed。在Firefox和IE8中,它工作得很好...

回答

0

我不确定这是否是问题,但是您正在创建无效的html。首先,你不要关闭<html>标签。另外,你正在把htmlhead标签放在你的身体内。

+0

我加一个结束的HTML标签,但有什么不妥: - 又名 - 你的第二句话。顺便说一句,关闭HTML仍然没有帮助。 – Nir

+0

该结构适用于整个页面,但您将其插入到body \ document.body.innerHTML'中。所以,你已经有了''和里面的,你把另一' etc.' –

+0

哦,对了,我该怎么办文件= headstr + +中newstr footstr?我想要它,因为它也删除了现有的标题内容 – Nir

3

我不知道这是什么原因导致了你的失败,但是如果window.print()是从一个<输入类型=“提交”>调用的方法=“后”的形式(即每个asp。网页有史以来)然后Chrome打印预览假发了。

解决方法是添加返回false;在window.print()之后,这样页面不会回发。

<html> 
<head> 
</head> 
<body> 
    <form method="post" action="test.html"> 
    <p>This is only a test. Had this been a real emergency....</p> 

    <!--This doesn't work --> 
    <!-- <input type="submit" onclick="JavaScript:window.print();">--> 

    <!--But this does --> 
    <input type="submit" onclick="JavaScript:window.print();return false;"> 

</form> 
</body> 
</html> 
+0

抱歉,但这不起作用。 – kta