1

我正在尝试使用 jQueryprintarea()函数在我的网页上打印特定区域。它不起作用并返回错误。并且它显示像 tolowerCase 的错误是未定义的 错误

返回 (media.toLowerCase() == "" || media.toLowerCase() == "打印")

jQuery

function printDiv() {
    $('#dvTokenArea').printArea();
}​

<div id="dvTokenArea" runat="server">
     <asp:Label ID="lblTokenNumber" runat="server" Text="Print ME !!!!!!!!!!!!">    </asp:Label>
</div>
<asp:Button ID="btnPrintToken" runat="server" Text="Print"
     OnClientClick="javascript:printDiv();" />​
4

2 回答 2

2

正如 Pencho Ilchev 所说,这是由 .attr() 的 jQuery 1.6 BC 中断引起的。这是 PrintArea 插件的固定分支:

https://github.com/djozsef/jquery.printarea.js

于 2012-08-28T11:22:38.737 回答
1

这是插件中返回错误的代码:

$(document).find("link")
            .filter(function(){
                    return $(this).attr("rel").toLowerCase() == "stylesheet";
                })
            .filter(function(){ // this filter contributed by "mindinquiring"
                    var media = $(this).attr("media");
                    return (media.toLowerCase() == "" || media.toLowerCase() == "print")
                })
            .each(function(){
                    head += '<link type="text/css" rel="stylesheet" href="' + $(this).attr("href") + '" >';
                });

您没有提供足够的信息来确定,但我相信media您的元素没有属性,link并且您使用的是 JQuery 1.6 或更高版本,undefined如果未设置属性,则会返回。

从 attr 文档:

从 jQuery 1.6 开始,.attr() 方法为尚未设置的属性返回 undefined。

因此,如果您没有media在属性设置为 的link元素rel上设置属性stylesheettoLowerCase()则将在媒体上调用undefined.

于 2012-06-30T09:05:16.923 回答