window.matchMedia('print') 在 Firefox 和 IE 中失败
window.matchMedia('print') failing in Firefox and IE
我有一个打印按钮,可以在任何网页上启动打印功能。该按钮在用户单击后立即隐藏,并显示用户是否已完成打印或在打印窗口中按关闭。它在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
如果我遇到任何解决方案,我会编辑它。
我主要使用与您相同的代码作为示例,以便在打印前调整高图表的大小:
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;
这在铬中工作正常。但是FF和IE11不会触发该事件。
你可能想看看 onafterprint 事件。至少这是由 Firefox 和 IE 触发的,因此为您的用例使用潜在的防护装置(以确保事件不会多次触发),您可以同时收听matchMedia("print")
和onafterprint
事件。
相关文章:
- jQuery代码在Firefox中工作,但在IE中失败
- Javascript正则表达式在IE中失败,但在Chrome和Edge中工作
- 使用空媒体查询调用matchMedia失败,IE中的参数无效
- appendChild dataURI映像到window.open在IE中失败
- 在IE中显示iframe中的blob失败
- 为什么对img标记的前向引用在Chrome上失败,但在FireFox和IE上有效
- IE中的jQuery load()回调失败
- IE 焦点事件在 ajax 加载后随机失败
- CORS 预检请求的奇怪问题在 IE 11 上失败
- parseInt 在 IE 中失败
- getElementsBySelector 在 IE 8 中失败
- Ajax 请求在 IE 8 中似乎失败
- Ajax 调用在 chrome/safari 中工作,但在 ff 和 ie 中失败
- window.matchMedia('print') 在 Firefox 和 IE 中失败
- doPostback在IE 11+Windows 8.1中失败
- Firefox和IE再次失败帮助我的代码跨浏览器?JQuery自动滚动
- IE 9在展开缩略图网格版本中单击失败
- 循环使用Ajax的函数.仅在IE中失败.其他浏览器都能正常工作
- IE中的动画失败
- 从MS Excel复制粘贴在IE中失败,但在Firefox中有效