【问题标题】:Printing custom url with javascript not working使用javascript打印自定义网址不起作用
【发布时间】:2012-05-15 15:50:30
【问题描述】:

我正在尝试通过传递 window.open url 并使用 window.focus、window.print 来打印我的域上的另一个页面。但是,打印预览只显示一个空白页面。我猜我必须等到页面加载完毕,但我不确定该怎么做。代码如下:

var newWin=window.open('http://mydomain.com');
newWin.focus(); 
newWin.print(); 
newWin.close();

我尝试过类似的东西

newWin.onload() {
    newWin.print();
});

无济于事。

编辑 1:

var newWin=window.open('http://localhost:76');
newWin.focus(); 
newWin.onload = newWin.print();
newWin.close();

同样的问题仍然存在

编辑 2:

var newWin=window.open('http://localhost:76');
newWin.focus(); 
newWin.body.onload = newWin.print();

在此处添加 newWin.close() 会导致打印函数 排除错误,只打印
页面的标题。否则,使用此页面可以正常打印

编辑 3:

function printWin(newWin) {
    newWin.print();
    newWin.close();
}

var newWin = window.open('http://localhost:76');
newWin.focus();
newWin.body.onload = printWin(newWin);

这会导致打印像以前一样过早发生,预览一个空白页面。 wtf :(

【问题讨论】:

  • 能否通过在其中放置警报来检查 onload 事件是否运行?
  • 在 OP 中检查和编辑代码。警报被调用
  • var newWin=window.open('localhost:76'); newWin.printme = function() { this.print(); } newWin.printme(); newWin.close();
  • hmm 这很奇怪,你能不能在你自己的窗口中尝试 window.print() 方法,首先看看这是否有效?
  • 检查 OP,它正在打印弹出窗口,但不能使用 newWin.close();

标签: javascript printing window


【解决方案1】:

打开弹出窗口。然后检查弹出窗口是否准备好。准备好后,注入一个 javascript。

<script type="text/javascript">

    var popup = window.open("b.htm");
    var body;
    function check() {
        body = popup.document.getElementsByTagName("body");
        if (body[0] == null) {
            setTimeout(check, 50);
        } else {
            var n = popup.document.createElement("script");
            n.src = "printandclose.js";
            body.appendChild(n);
        }
    }
    check();

</script>

printandclose.js

window.print();
window.open("", "_self");
window.close();

让我知道它是否有效。如果您不添加window.open("", "_self");,则会弹出一个警报,告诉用户该窗口即将关闭。

【讨论】:

  • 我只需要访问我域中的页面。谷歌只是一个占位符......但我域内的页面仍然存在问题。我将编辑 OP,谢谢 :)
  • 理想情况下,在打开的子页面中不需要放置任何内容。可能会打开数百个子页面,因此不必在每个页面中都放置代码会很好:)。有什么方法可以从父页面调用子页面的正文 onload 吗?
  • 实际上,解决方案比我们想象的要简单。检查编辑 2。现在唯一的问题是打印后关闭窗口。
  • 我尝试了您的解决方案,并尝试进行了一些修改(编辑 3)...两者都不起作用:(。在您的编辑 2 中,函数中的代码没有被执行。在我的编辑 3,打印像以前一样过早发生。Grr..
  • 谢谢 user1330271,我会试试这个并回复你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多