在html中设置object元素的数据属性

时间:2012-05-18 20:46:28

标签: javascript html activereports

我的html主体中有一个对象元素,用于显示导出到.pdf文件的Active报表。我需要使用javascript自动将pdf输出到客户端的默认打印机,然后将pdf保存到服务器:

<script language="javascript" type="text/javascript">
        // <!CDATA[
        function PrintPDF() {
            pdf.click();
            pdf.setActive();
            pdf.focus();
            pdf.PrintAll();
         }
        // ]]>

....

<body onload="return PrintPDF();">
 <form id="form1" runat="server">
     <object  id="pdfDoc" type="application/pdf" width="100%" height="100%"  data="test.aspx?PrintReport=yes&SavePDF=yes"/>
    </form>
</body>

使用对象标记中的数据硬编码,一切运行都没有问题。

现在的问题是我需要动态地将查询字符串传递给此页面。我试图在javsacript中设置属性数据以传递查询字符串。查询字符串值成功传递,但似乎未设置数据属性。我得到一个空白页面。

pdf.setAttribute( “数据”, “Test.aspx文件PrintReport = YES&安培; SavePDF = YES&安培; AccNum =” + AccNum);

有没有人知道如何动态设置数据属性以传递querystring?

谢谢,

3 个答案:

答案 0 :(得分:0)

 var pdfObj = document.getElementById('pdfDoc');
 pdfObj.data="test.aspx?PrintReport=yes&SavePDF=yes&AccNum="+AccNum;

答案 1 :(得分:0)

就数据属性而言,你做的一切都很好。这里有些例子: http://jsfiddle.net/3SxRu/

我认为您的问题可能更多地与执行顺序有关。你的实际代码是什么样的?你是在写onLoad函数还是什么?

另外,我假设使用data属性是必需的。 HTML5定义data-*。此属性不是真正有效。同样,也许你的系统需要它。

答案 2 :(得分:0)

我怀疑事情发生了故障。在添加嵌入之前,请尝试等待窗口的onload事件。

另外,我建议使用像PDFObject这样的脚本来处理嵌入,因为它是一种可靠的方法,可以将PDF嵌入到所有各种浏览器中。例如,您可能会遇到以下内容:

<html>
  <head>
    <title>PDFObject example</title>
    <script type="text/javascript" src="pdfobject.js"></script>
    <script type="text/javascript">
      window.onload = function (){
        // First build the link to the PDF raw data ("bits")
        //   getQueryStrings assumes something like http://stackoverflow.com/questions/2907482/how-to-get-the-query-string-by-javascript
        var queryStrings = getQueryStrings();
        var reportNameParamValue = queryStrings["reportName"];
        var pdfBitsUrl = "getReportPdfBits.aspx?reportName=" + reportNameParamValue;

        // just in case PDF cannot be embedded, we'll fix the fallback link below:
        var pdfFallbackLink = document.getElementById("pdfFallbackAnchor");
        pdfFallbackLink.href = pdfFallbackLink;

        // now perform the actual embed using PDFObject script from http://pdfobject.com
        var success = new PDFObject( { 
          url: pdfBitsUrl;
        }).embed();
      };
    </script>
  </head> 
  <body>
    <p>It appears you don't have Adobe Reader or PDF support in this web
    browser. <a id="pdfFallbackAnchor" href="sample.pdf">Click here to download the PDF</a></p>
  </body>