2011-04-15 131 views
4

我想打开一个使用JavaScript的文档文档以及打开的文档窗口打开对话框。如何使用JavaScript打印对话框打开文件

这是我的代码。

window.open('http://www.tizaq.com'); 

window.print(); 

它可以工作,但打印对话框会在当前窗口打开,而不是新打开的窗口打开。我该怎么做?

回答

13

呼叫print新窗口,而不是老于:

var wnd = window.open('http://stackoverflow.com'); 
wnd.print(); 

我不喜欢你的胜算,不过,它不触犯下降浏览器的安全性。 :-)“外部”窗口对象可能不支持printwindow)对象有两种类型,其他窗口可以访问的“外部”类型以及引用自身的“内部”类型,它具有更多权限等)至少,你可能不得不等待加载事件,但我最好总体来说这将是棘手的。

seems to work对于具有相同来源的文档,所以Same Origin Policy是一个因素。这个例子在IE6中崩溃(字面意义上使浏览器崩溃),但在Windows上的IE7和Linux上的Chrome和Firefox 3.6(而不是Linux上的Opera 11)中适用于我。大概不会伤害到把延迟/产量在那里,例如:

var wnd = window.open(your_path_here); 
setTimeout(function() { 
    wnd.print(); 
}, 0); 

你说“Word文档”,在你的问题,但你的例子看起来像一个网站。我不知道这是否会工作,如果你打开一个Microsoft Word文档加载到浏览器窗口。

+1

我想同样的事情,但它不是在任何浏览器为我工作。 (更正:它适用于Windows中的FF4;不适用于Chrome 10和IE8) – 2011-04-15 09:00:30

+0

@Pekka:是的,我认为浏览器的安全性很可能会出现在我面前。我用过的每个平台都会打开一个对话框,我可以取消,所以这不是那种罪恶。 :-) – 2011-04-15 09:03:09

+0

我试过了。但不能在Firefox中工作。 – Coder 2011-04-15 09:07:18

-1

好,更好的办法

var my_window = window.open("", "mywindow1", "status=1,width=350,height=150"); 
my_window.document.write("<scr" + "ipt>window.location.href='http://stackoverflow.com';window.print();</scr" + "ipt>"); 

尝试像这样或更好地使使用iframe的另一页打印

+1

虽然'Window.Print();'会失败(它是'window.print()',JavaScript区分大小写),这不是一个坏主意。但你真的做到了吗?当我尝试它时,打印结果是空白的。我想知道它是否适用于Word文档。 – 2011-04-15 10:04:51