【问题标题】:callback jquery plugin printThis回调 jquery 插件 printThis
【发布时间】:2014-07-04 23:10:41
【问题描述】:

我试图通过这个搜索和谷歌找到解决方案,但我找不到任何东西,希望你能帮助我。

我正在使用 printThis 插件仅打印部分页面(在我的情况下为 DIV=modal 对话框)。插件页面:https://github.com/jasonday/printThis

在调用 print-dialog 并打印文档后,我想自动关闭我的模态对话框,但因此我需要一个回调函数。

这就是用于打印的代码:

$(".printable").printThis({
             debug: false,
             printContainer: false,
             pageTitle: $("#info-modal .short-info .panel-headline-wrapper h1").html(),
             formValues: true,
             printDelay: 0
            })

现在我想我从 jquery 中添加了一个“done()”函数来“捕获”回调...... 我尝试了以下方法,但没有成功:

$(".printable").printThis({
            debug: false,
            printContainer: false,
            pageTitle: $("#info-modal .short-info .panel-headline-wrapper h1").html(),
            formValues: true,
            printDelay: 0
        }).done(function(n){
            //close modal dialog
        });

我在拉取请求中发现了一些东西:https://github.com/jasonday/printThis/pull/28 但是不知道怎么用。

我正在使用最新版本的 printThis (v 1.4) 和 jquery (v 1.11.0)

非常感谢。

干杯, 马可

【问题讨论】:

    标签: jquery-plugins jquery-callback printthis


    【解决方案1】:

    我是 printThis 插件的作者。

    由于打印对话框的性质,您当前的设置将不起作用,因为没有与打印对话框关联的事件(当它被触发、完成等时)。此外,$.done 是延迟对象或承诺的一部分。在这种情况下它不会起作用。

    我尚未测试拉取请求,但它“可能”工作,因为浏览器可能会在打印对话框打开时停止并堆叠 javascript 执行。但是,我不知道这如何跨浏览器工作。

    如果您查看拉取请求,提交者会在标题中添加说明以及其他说明。您实际上是在配置对象中放置了一个函数。

    还有另一种选择。您可以在用于触发打印功能的同一单击事件上简单地关闭模式。这种方法会更简单,直到我找到一种有效合并回调的方法。

    【讨论】:

    • 嗨,杰森,非常感谢您的快速回答。我查看了提交评论并尝试了一个函数(“回调:testfunction”)......但不起作用。甚至内联也不起作用,例如: $(".printable").printThis({callback: function(){alert("打印完成...")} });... (用 firefox 29.0 测试.1)...所以我采取了您提到的解决方案,通过单击打印来关闭模态对话框:-) 到目前为止谢谢。如果您有其他解决方案,我将很高兴获得信息 :-) 非常感谢。干杯
    • 哦,对不起,杰森,我忘了从提交中插入更改 (if (typeof opt.callback == 'function') opt.callback.call();) ......现在它可以工作了! !! (在 Firefox 中)所以再次感谢你。干杯马可
    • Jason,我正在使用 printThis 打印需要跟踪的内容。如果我调用 printThis 并出现浏览器对话框,我需要知道在该对话框中是否单击了打印或取消。有没有办法追踪这个?
    • @DougWolfgram - 我不相信有任何方法可以跟踪该事件,因为在我所有的测试/调查中,浏览器在那时都是盲目的/停止的。我确实发现了一个 IE 事件 onafterprint (help.dottoro.com/ljddsslq.php),但它没用 - 在对话框打开时触发。
    • 好的。谢谢。我们选择了一种解决方案,在打开打印对话框之前提示用户,一旦他们进入,它就会被标记为打印。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多