1

なぜこれが機能しないのですか?ページの読み込みのみ。印刷されません。ここでは、iframe の src を取得し、その URL を新しいウィンドウで開きます。

var myDivObj = document.getElementById('resumedocument').src;
var someXml = '<html><title>Resume</title><body onload="window.print();"><iframe style="height: 1000px; width: 1260px;" src="' + myDivObj + '"/></body></html>';
var printwindow = window.open('', '_blank','fullscreen=yes');
printwindow.document.write(someXml);
printwindow.onload = function() {                               
   printwindow.self.focus();
   printwindow.self.print();
};
4

5 に答える 5

2

独自のdocument.writeを実行しているため、onloadで実行する必要はありません。次のコードは例として機能します。

    var someXml = '<html><body>Stuff</body></html>';
    var printwindow = window.open('', '_blank','fullscreen=yes');
    printwindow.document.write(someXml);
    printwindow.print();

あなたの問題は、ドキュメントがロードされたときにwindow.openメソッドの間にonloadが発生することだと思います。この時点では、ドキュメントは''であるため、ハンドラーはありません。

IFRAMEが読み込まれるのを待つには、onloadハンドラーをそこに移動する必要があります。例えば:

    var someXml = '<html><body><iframe id=Frame width="800" height="800" src="http://jsfiddle.net" /></body></html>';
    var printwindow = window.open('', '_blank','fullscreen=yes');
    printwindow.document.write(someXml);
    printwindow.document.getElementById('Frame').onload = function () {
        printwindow.self.focus();
        printwindow.print();
    };​
于 2012-07-10T04:52:31.380 に答える
2

次の行を置き換えます。

printwindow.onload = function() {                               
    printwindow.self.focus();
    printwindow.self.print();
};

この行で:

printwindow.document.getElementsByTagName('iframe')[0].onload = function () {
    printwindow.self.focus();
    printwindow.print();
};
于 2012-07-10T04:59:53.537 に答える
1

のように、あなたは自己なしで試しましたprintwindow.print()か?

于 2012-07-10T04:42:23.203 に答える
1
var url = document.getElementById('resumedocument').src;
var printwindow = window.open('', '', 'fullscreen=yes');
printwindow.document.write('<iframe width="100%" height="100%" onload="window.print()" src='+url+'></iframe>');
于 2012-07-10T05:53:05.280 に答える