我正在尝试为图像创建一个简单的点击打印链接,我想要发生的是当点击链接时,会打开一个带有图像的新窗口,浏览器会打开打印命令对话框框。
我的问题是,这是仅仅可以从URL参数,还是从发起页面上的锚元素开始?或者我是否必须使用javascript构建目标页面才能执行此操作?
以下是我所得到的样本:
<p class="click-2-print">
<a href="/img/map.jpg" target="_blank">Click here to print the map above</a>
</p>
显然上面的代码会在新窗口中打开图像,但仍需要用户按Ctrl + P,Cmd + P或使用浏览器命令。当用户点击链接时,我的客户希望图像“只是打印”,所以我试图找到最简单的方法来实现这一点。
那么我可以添加到上述标记中的任何参数或属性来完成我所描述的内容吗?
答案 0 :(得分:10)
你必须调用window.print()。也许是这样的?
function printimage(){
var URL = "http://myimage.jpg";
var W = window.open(URL);
W.window.print();
}
另一种选择可能是将图像放在一个告诉浏览器加载时打印的页面上。例如......
<body onload="window.print();">
<img src="/img/map.jpg">
</body>
答案 1 :(得分:2)
我建议您使用您正在使用的任何语言或框架创建一个页面,该页面接受图像路径的查询字符串参数,在文档中输出该图像并进行onload
/ ready
调用到window.print()
。直接链接到该图像而不是图像,并保留target="_blank"
,您应该设置。
答案 2 :(得分:1)
您必须在javascript中调用window.print()才能触发浏览器打印对话框。我非常确定您无法在没有用户互动的情况下触发打印,除非您运行已签名的小程序。
答案 3 :(得分:1)
var url = scope.src;
var w = window.open('', '');
w.document.write('<html><head>');
w.document.write('</head><body >');
w.document.write('<img id="print-image-element" src="'+url+'"/>');
w.document.write('<script>var img = document.getElementById("print-image-element"); img.addEventListener("load",function(){ window.focus(); window.print(); window.document.close(); window.close(); }); </script>');
w.document.write('</body></html>');
w.window.print();
这将打开包含图像的新页面,提示用户进行打印,打印后,关闭新选项卡并将焦点重置为原始选项卡。
忽略角度特定代码的scope.src
。只要您从其他地方提供自己的url
值
答案 4 :(得分:0)