我有这个创建图像的功能:
<script>
domtoimage.toJpeg(document.getElementById('print_screen'), { quality: 0.70 })
.then(function (dataUrl) {
var link = document.createElement('a');
link.download = 'invoice.jpeg';
link.href = dataUrl;
link.click();
});
</script>
问题是它在加载页面时立即启动。我想做一个按钮,如:
<a class="btn" href="" onclick="printFunction()">Click here to print</a>
我尝试将domtoimage
包裹在function printFunction
内,但这不起作用。我究竟做错了什么? :(
答案 0 :(得分:1)
如果您正在使用jQuery,那么您可以将您的函数包装在document.ready函数中,如果不是,那么当浏览器解析该标记时,您的domtoimage.toJpeg
函数将被执行。
<script>
$(document).ready(function(){
var btnHandler = function(){
domtoimage.toJpeg(document.getElementById('print_screen'), { quality: 0.70 })
.then(function (dataUrl) {
var link = document.createElement('a');
link.download = 'invoice.jpeg';
link.href = dataUrl;
link.click();
};
var $btn = $("a.btn").click(btnHandler);
});
</script>
答案 1 :(得分:1)
$(&#39; #butidid&#39;)。click(function(){ 你的代码在这里 });
答案 2 :(得分:1)
您正在触发承诺回调中的点击事件。
解决方法是在promise回调中对link.click()
进行评论,并触发另一个click event
内的function
要这样做
评论link.click()
<script>
var link=null;
domtoimage.toJpeg(document.getElementById('print_screen'), { quality: 0.70 })
.then(function (dataUrl) {
link = document.createElement('a');
link.download = 'invoice.jpeg';
link.href = dataUrl;
// Comment the below line
// link.click();
});
</script>
触发自定义函数中的click事件,如下所示:
<a class="btn" href="" onclick="printFunction()">Click here to print</a>
<script>
function printFunction(){
// trigger the click event in printFunction
link.click();
}
</script>
答案 3 :(得分:-1)
写下:
var srciptElement = document.createElement('script');
scriptElement.attr("src",the url of the jquery");
document.getElementsByTagName("BODY")[0].appendChild(scriptElement);