如何等待javascript文件在打印前加载twitter并在打印后关闭选项卡

时间:2016-05-04 08:52:39

标签: javascript

嘿我正在使用延迟加载twitter嵌入来加载到我的页面上。目前我已经提供了2000 setTimeout,之后我使用window.print()打印页面。但是,如果网络连接速度很慢,那么这将无效,如果净速度好于那么浪费时间。此外,打印后我需要关闭我正在使用的标签window.close()

block main-script
  // build:js /js/lazy-x.js
  script(src="/js/lazy-x.js")
  // endbuild
  script.
    document.addEventListener("DOMContentLoaded", myFunction);
    function myFunction() {
      setTimeout(function(){
        var file_name = ("{{article['title']}}".replace(/[^0-9a-zA-Z_?: .]/g, ""));
        document.title="Scroll - "+file_name;
        window.print();}, 2000);
        window.onfocus=function(){ window.close();}

    }

我正在使用的jade文件。我需要等待lazy-x.js加载每个twitter嵌入,然后会出现打印对话框,打印后我需要关闭标签。但是标签没有关闭。

1 个答案:

答案 0 :(得分:1)

我不确定你的问题是否合适。你可以在脚本上执行onLoad:

function importScript (sSrc, fOnload) {
    var oScript = document.createElement("script");
    oScript.type = "text\/javascript";
    oScript.onerror = loadError;
    if (fOnload) { oScript.onload = fOnload; }
    document.currentScript.parentNode.insertBefore(oScript, document.currentScript);
    oScript.src = sSrc;
}

示例来自:https://developer.mozilla.org/en/docs/Web/API/HTMLScriptElement

然后你的代码将是:

importScript('/js/lazy-x.js', function() {
    var file_name = ("{{article['title']}}".replace(/[^0-9a-zA-Z_?: .]/g, ""));
    document.title="Scroll - "+file_name;
    window.print()
});

也可以在玉石模板

中进行
script(type="text/javascript" src="path_to_js" onload ="callMyFunction()")

另一件事,在window.focus上你要关闭窗口,它可能会阻止打印/停止JS。而不是window.focus检查window.onafterprintwindow.onbeforeprint事件