使用Javascript打印外部HTML文件

时间:2011-05-29 15:58:06

标签: javascript html printing

我在index.html上有一个“打印”按钮。打印print.html文件需要哪些代码?我的意思是,当我从index.html按下按钮时,打印页面print.html

3 个答案:

答案 0 :(得分:2)

我认为你正在寻找window.print()


<强>更新

注意到您已在其中指定了文件名,并且当您点击print.html上的按钮时,您想要打印index.html。没有内置的方法来执行此操作(在某种意义上,您无法将任何参数传递给window.print()指示要打印的文档)。您可以做的是加载文档以打印到iframe或打开一个新窗口并在加载时调用该容器上的window.print()

以下是一些讨论相同内容的论坛帖子和网页:


更新2

这里有一些快速而肮脏的代码 - 请注意,只有当您的两个页面都在同一个域中时,这才有效。此外,Firefox似乎也会为空{iframe'触发load事件 - 因此即使没有为iframe设置src值,打印对话框也会在加载时立即显示。

<强>的index.html

<html> 
<head> 
  <title>Index</title> 
  <script src="http://code.jquery.com/jquery-1.4.3.min.js"></script>
  <script>
    $(document).ready(function(){
        $('#loaderFrame').load(function(){
            var w = (this.contentWindow || this.contentDocument.defaultView);
            w.print();
        });

        $('#printerButton').click(function(){
            $('#loaderFrame').attr('src', 'print.html');
        });
    });
  </script>
  <style>
     #loaderFrame{
        visibility: hidden;
        height: 1px;
        width: 1px;
     }
  </style>
</head> 
<body> 
    <input type="button" id="printerButton" name="print" value="Print It" />

    <iframe id="loaderFrame" ></iframe>
</body>
</html>

<强> print.html

<html> 
<head> 
    <title>To Print</title> 
</head> 
<body> 
    Lorem Ipsum - this is print.html
</body>
</html>

更新3
您可能还希望看到这一点:How do I print an IFrame from javascript in Safari/Chrome

答案 1 :(得分:1)

您可以使用JQuery printPage插件(https://github.com/posabsolute/jQuery-printPage-plugin)。这个插件工作正常,你可以简单地打印一个外部的HTML页面。

示例:

 <html> 
    <head> 
      <title>Index</title> 
      <script src="http://www.position-absolute.com/creation/print/jquery.min.js" type="text/javascript"></script>
      <script src="http://www.position-absolute.com/creation/print/jquery.printPage.js" type="text/javascript"></script>
      <script>
         $(document).ready(function() {
             $(".btnPrint").printPage();
         });
      </script>
    </head> 
    <body> 
        <input type="button" id="printerButton" name="print" value="Print It" />

        <p><a class="btnPrint" href='iframe.html'>Print!</a></p>
    </body>
 </html>

答案 2 :(得分:1)

onclick="printPage('print_url');"

然后使用

package main

import (
    "encoding/xml"
    "fmt"
    "os"
)

func main() {

    type Person struct {
        Email string `xml:"email"`
        Phone string `xml:"phone"`
    }

    type Host struct {
        Hostname string `xml:"hostname"`
        Address  string `xml:"address"`
    }

    type Asset struct {
        person Person
        host   Host
    }

    p := &Person{Email: "person@a.com", Phone: "1111"}
    h := &Host{Hostname: "boxen", Address: "1 Place St"}
    a := &Asset{person: *p, host: *h}

    enc := xml.NewEncoder(os.Stdout)
    enc.Indent(" ", " ")
    if err := enc.Encode(p); err != nil {
        fmt.Printf("error: %v\n", err)
    }
    if err := enc.Encode(h); err != nil {
        fmt.Printf("error: %v\n", err)
    }
    if err := enc.Encode(a); err != nil {
        fmt.Printf("error: %v\n", err)
    }
}