2016-05-04 3 views
0

ちょっと、私のページに読み込まれるtwitter埋め込みのために遅延読み込みを使用しています。現在、私は2000年のsetTimeoutを与えて、その後、私はwindow.print()を使ってページを印刷します。しかし、ネット接続が遅い場合、それは動作しませんし、ネット速度がそれよりも良い場合は時間の無駄です。私はwindow.close()印刷前にJavaScriptファイルが読み込まれ、印刷が完了したらタブを閉じるまでの方法

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がすべてのツイッターの埋め込みを読み込むのを待つ必要がありますし、印刷後にタブを閉じる必要があるダイアログボックスが表示されます。しかし、タブは閉じていません。

+0

'/ js/lazy-s.js'が読み込まれてからsthするのを待っていますか? – PolishDeveloper

+0

'lazy-s.js'の読み込み後にタブを閉じると –

答えて

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()") 
以内にそれを行うことも可能です

もう1つ、window.focusでウィンドウを閉じるには、p JSの仕上げ/停止。 window.focusの代わりにwindow.onafterprintまたはwindow.onbeforeprintのイベントを確認してください。

+0

' window.onafterprint'がクロムでサポートされていません –

+0

この質問は関連しています:http://stackoverflow.com/questions/7652981/chrome -window-print-window-close-results-in-print-preview-failed-solution – PolishDeveloper

関連する問題