为什么window.print()然后使用寄存器Page.ClientScript.RegisterStartupScript()方法调用window.close()不起作用

时间:2011-09-19 15:47:52

标签: javascript asp.net javascript-events

我试图在asp.net页面的Page_Load中调用以下方法:

Page.ClientScript.RegisterStartupScript(this.GetType(), "print", "<script language=\"javascript\" type=\"text/javascript\">window.print();window.close();</script>");

(或RegisterClientScriptBlock方法)。

这会给出一个消息来关闭IE中的页面(甚至在被称为弹出窗口时没有任何消息时关闭)但是与FF一起使用效果很好。 令人惊讶的是,函数内部的相同事件,当被称为onload of body时,效果会很好。

我可以使用变通办法来完成这项工作,但我想知道为什么这里有不同的行为?有人知道吗?

感谢您的帮助!

[编辑] 这是生成的HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>

</title></head>
<body>
    <form method="post" action="Default2.aspx" id="form1">
    <div>
        This is a test page!
    </div>

<script language="javascript" type="text/javascript">window.print();window.close();</script></form>

</body>
</html>

[/编辑]

1 个答案:

答案 0 :(得分:1)

试试这个:

<script language="javascript" type="text/javascript">
  window.print();
  window.onfocus = function () {
     window.close();
  }
</script>

来自:Close window automatically after printing dialog closes