我们的网站具有可以打印会员资料的功能。它的工作方式是通过 onsubmit 将 javascript 函数附加到按钮上。javascript 函数使用 window.open 以特殊模式重新打开页面,该模式重新显示页面的打印机友好版本。
此功能自 2008 年左右就已经存在,并且适用于所有浏览器。除了大约一周前,它已停止在 Chrome 中工作。使用 Chrome 时,打开的窗口确实打开了,但随后又短暂打开了另一个空白窗口,然后所有窗口都关闭了。
在搜索这个问题的讨论时,我无法找到确切的问题,但确实找到了一些说“return false”应该添加到 onsubmit 的内容。我尝试添加它,但它没有帮助。
这是 onsubmit 的样子:
<button onclick="PrintEmailSubmit('print');">Print Profile</button>
以下是打开窗口的代码:
window.open('print-email-profile.php?mode=' + mode,'','width=' + width + ',height=' + height + ',scrollbars=yes,location=0,menubar=1,status=0,toolbar=0')
虽然没必要看,这里是整个函数 PrintEmailSubmit():
/*
* called by view-profile.php
*/
function PrintEmailSubmit(mode)
{
var width;
var height;
switch(mode)
{
case 'print':
width = 850;
height = 1000;
break;
case 'email':
width = 400;
height = 120;
break;
default:
alert('Error: invalid calling sequence -- should not happen!');
exit;
}
window.open('print-email-profile.php?mode=' + mode,'','width=' + width + ',height=' + height + ',scrollbars=yes,location=0,menubar=1,status=0,toolbar=0');
}
最后,使这项工作有效的原因是特殊版本的页面在 body 标记中添加了以下内容:
<body onload="window.print();window.close();">
如上所述,该功能在 IE 和 Firefox 中继续有效。只是 Chrome 有这个问题。
有任何想法吗?