我有一个打印按钮,可以在任何网页上启动打印功能。一旦用户单击该按钮,该按钮就会隐藏,并显示用户是否已完成打印或在打印窗口中按下关闭按钮。它在 Chrome 中工作正常,但在 Firefox 和 IE 中失败。
<input type="button" onclick="launchPrint()" value= "Print me" />
function launchPrint(){
$(".print-box").hide();
window.print();
}
(function() {
if (window.matchMedia) {
var mediaQueryList = window.matchMedia('print');
mediaQueryList.addListener(function(mql) {
if (!mql.matches) {
$(".print-box").show();
}
});
}
}());
有什么我可能遗漏的建议吗?
最佳答案
不幸的是,我和你有同样的问题,我做了一些研究。目前看来,该错误似乎仍然存在于最近版本的 FF 和 IE 中,并且尚未修复。
您可以检查 Firefox 的这个错误:https://bugzilla.mozilla.org/show_bug.cgi?id=774398
我发现另一个人和我们有同样的问题,但没有一个真正令人满意的答案: https://social.technet.microsoft.com/Forums/office/en-US/bc3ca05e-b4ef-425b-8bbd-d3f700a8c85e/windowmatchmedia-not-firing-for-print-in-ie?forum=ieitprocurrentver
如果我遇到任何解决方案,我将对其进行编辑。
我主要使用与您相同的代码作为 highchart 在打印前调整大小的示例:
function printUpdate() {
jQuery.each(Highcharts.charts, function(index, value){
value.reflow();
});
};
var mediaQueryList = window.matchMedia('print');
if(navigator.appVersion.indexOf("MSIE 8.")!==-1)//For IE8
{
document.attachEvent(function (mql){printUpdate();}, mediaQueryList);
}
else
{
if (window.matchMedia) {
mediaQueryList.addListener(function (mql) {
if (mql.matches)
{
printUpdate();
}
});
}
}
window.onbeforeprint = printUpdate;
这在 chrome 中运行良好。但是 FF 和 IE11 不会触发该事件。
关于javascript - window.matchMedia ('print' ) 在 Firefox 和 IE 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34819813/