js浏览器打印设置打印次数

JavaScript014

js浏览器打印设置打印次数,第1张

普通报表工具栏上有打印按钮,点击该按钮会弹出打印页面。

思路一:通过工具栏中的打印按钮,进行控制。设置全局变量--打印次数,如果打印次数为0,则直接打印,不再跳转到打印页面。或者在参数栏中新增一个打印按钮,在里面写JS脚本。不通过工具栏中的打印按钮实现这个功能。

思路二:在跳转的打印页面,只要点击一次打印按钮,则一方面执行打印指令,另一方面自动关闭打印页面。同时主模板自动刷新数据,重新加载打印次数为1。

思路三:在跳转的打印页面,获取全局变量--打印次数,如果为0,则打印按钮有效。否则打印按钮不可用,为灰色状态。

最近在网上看到一个js题目,刚好最近学了Promise和Generator以及async,打算用这些方法实现一下。

题目很简单,如下:

实现每一秒输出数组中的一个数字。

我立马就想到了可以用Generator来实现这个效果,其中async是Generator的语法糖,所以就用async写了。因为Generator虽然是一个状态机,返回一个遍历器对象,但是它很适合用来异步操作。

我这边用async和Promise分别写了四种实现方法,其中第一种和第二种有点类似,但是有一点区别。第三种就是用递归实现,通过在Promise的then函数里再new一个Promise来达到效果。第四种就是普通的递归实现。

第一种:

async function apr(arr){

for(let i=0i<arr.lengthi++)

{

await (new Promise((resolve)=>setTimeout(resolve,1000,arr[i]))).then((value)=>console.log(value))

}

}

ls=[1,2,3]

apr(ls)

第二种:

async function apr(arr){

for(let i=0i<arr.lengthi++)

{

await new Promise((resolve)=>setTimeout(resolve,1000))

console.log(arr[i])

}

}

ls=[1,2,3]

apr(ls)

第三种:

function timeout(i=0) {

if (i<arr.length)

new Promise((resolve) =>{

setTimeout(resolve, 1000,arr[i++])

}).then((value)=>{console.log(value)timeout(i)})

}

arr=[1,2,3]

timeout()

第四种:

function timeout(i=0) {

if (i<arr.length)

setTimeout(()=>{console.log(arr[i++])timeout(i)}, 1000)

}

arr=[1,2,3]

timeout()

最近做了个运用浏览器打印合同的功能,之前没做过,记录一下其中遇到的问题,打印页面建议使用新开窗口 原型图如下: 页面内容不多说,表格直接用table绘制,在页面顶部加一个悬浮的打印按钮。点击打印按钮调用打印机(ctrl+p) 实现的打印预览效果如下图: 谷歌浏览器可在打印预览-更多设置-选项中去除页眉和页脚的勾选 打印的页面不可出现横向滚动条,否则会出现打印出来的内容显示不全的问题。