我在我的项目中使用打印(使用HTML和javascript)。在mozilla onbeforeprint和onafterprint工作正常但没有使用chrome。
答案 0 :(得分:10)
对Chrome有用的是检查' matchmedia'在'窗口'如:
<div class="container">
<div class="bs-docs-example">
<ul id="myTab" class="nav nav-tabs">
<li class="active"><a href="#home" data-toggle="tab">Crop</a>
</li>
<li><a href="#profile" data-toggle="tab">Render View</a>
</li>
</ul>
<div id="Content" class="tab-content">
<div class="tab-pane fade in active" id="home">
<div class="col-md-6">
<div class="panel crop">
<div class="well">
<div class="file-warning"></div>
<div class="form-group">
<label for="imageid">Select an image</label>
<input type="file" name="file" class="btn btn-default form-control" id="file" accept="image/jpg, image/png, image/jpeg" />
</div>
<div class="form-group">
<label for="imageid">Enter asset ID</label>
<input type="text" onkeypress="return charsOnly(this, event)" maxlength="64" class="form-control" id="imageid" name="imageid" placeholder="Enter image ID">
</div>
<button class="btn btn-default" id="reset">Reset</button>
<!--<input id="renderButton" type="button" value="Render final image" class="btn btn-primary" />--></div>
<div class="panel-body cropper">
<div id="container" class="well"></div>
<input id="renderButton" type="button" value="Render cropped image" class="btn btn-primary" />
</div>
</div>
</div>
</div>
<div class="tab-pane fade" id="profile">
<div class="col-md-6 render">
<div class="panel">
<div class="panel-body">
<div class="response"></div>
<div id="result_container" class="result"></div>
</div>
<!--<div class="share-link"></div>-->
<div class="well submit-well">
<div class="share-link"></div>
</div>
</div>
</div>
</div>
</div>
</div>
var $tabs = $('#Content');
$('#renderButton').on('click', function () {
$tabs.filter('.active').next('li').find('a[data-toggle="tab- pane"]').tab('show');
});
答案 1 :(得分:1)
Chrome doesn't have onbeforeprint.
执行此操作的首选方法是使用print media specific stylesheets。
如果你绝对必须发现Print operations with javascript cross browser这看起来很有希望,但我自己没试过。
答案 2 :(得分:1)
Chrome不支持这些活动。相反,它支持&#39; window.matchMedia&#39;。还有一个bug in Chrome阻止它打印所有页面。因此,我建议您在网页上添加一个打印按钮,并要求用户使用该按钮,而不是通过Chrome菜单进行打印。
var beforePrint = function() {
console.log("before");
};
var afterPrint = function() {
console.log("after");
};
var launchedFromMenu = true;
if (window.matchMedia) {
var mediaQueryList = window.matchMedia('print');
mediaQueryList.addListener(function(mql) {
if (mql.matches) {
if(launchedFromMenu) {
// https://bugs.chromium.org/p/chromium/issues/detail?id=571070
alert("There is a bug in Chrome/Opera and printing via the main menu does not work properly. Please use the 'print' icon on the page.");
}
beforePrint();
} else {
afterPrint();
}
});
}
// These are for Firefox
window.onbeforeprint = beforePrint;
window.onafterprint = afterPrint;
function printPage() {
window["beforePrint"]();
launchedFromMenu = false;
window.print();
}
答案 3 :(得分:0)
快速更新,因为支持打印事件has improved a lot
答案 4 :(得分:0)
根据他们的变更日志,此功能自Chrome 63起可用。
答案 5 :(得分:-1)
在Chrome中无法使用onbeforeprint&amp; onAfterPrint。
但您可以使用css打印介质限制打印页面
示例
<link rel="stylesheet" href="print.css" type="text/css" media="print" />
此css包含在页面标题中。
css具有以下样式
#header, #menu, #entry-content, .noprint {display: none;}