代码之家  ›  专栏  ›  技术社区  ›  ubiquibacon

调用window.print()时触发了什么事件?

  •  1
  • ubiquibacon  · 技术社区  · 14 年前

    我正在努力解决这个问题,今晚我几乎没有成功。如果我只知道在 window.print() 函数被调用。

    var browser_name = navigator.appName; 
    
    if(browser_name == 'Microsoft Internet Explorer'){
         window.attachEvent("print()",on_print_function);//I realize I cannot attach an event listener to a function, I just wanted you to see what I am trying to accomplish
    }
    
    else{
         window.addEventListener("print()",on_print_function,false);
    }
    

    print 事件发生时返回一个在数据库中存储一些信息的页。

    我的最终目标是只有当相关信息存储在数据库中时才打印页面。 我愿意接受更好的方法来解决这个问题,但我想如果我能为 print() 正如我所说的。

    编辑

    我现在已经放弃了,我已经决定用另一种方式去做我想做的事情。我期待着有一天火狐支持 onbeforeprint() onafterprint() .

    2 回复  |  直到 9 年前
        1
  •  1
  •   sTodorov    14 年前

    据我所知,ie有几个events行onbeforeprint()和onafterprint(),但其他浏览器不支持它们。所以依赖这个不是很好。

    也许你可以在你的页面上有一个打印按钮。附加一个处理程序来执行对服务器的Ajax调用,以将数据存储到数据库中。如果调用成功,请调用窗口上的print()。

    这就是你要找的吗?

        2
  •  0
  •   Community Stefan Steinegger    7 年前

    显然,您现在可以使用Firefox(但不能使用其他浏览器)来收听:

    某些浏览器(包括Firefox 6和更高版本以及Internet Explorer)会发送打印前和打印后事件,以让内容确定打印的时间。您可以使用它来调整打印过程中显示的用户界面(例如,在打印过程中显示或隐藏用户界面元素)。

    Afterprint事件在用户打印或中止打印对话框后引发。

    https://developer.mozilla.org/en-US/docs/Web/API/window.onafterprint

    您可以使用其他浏览器中的媒体查询来模拟这一点: https://stackoverflow.com/a/18325463/421243