printarea功能不起作用

时间:2012-06-30 07:55:37

标签: jquery

我正在尝试使用jQuery printarea()功能在我的网页上打印特定区域。它不起作用并返回错误。 它显示错误,如tolowerCase未定义 错误

  

return(media.toLowerCase()==“”|| media.toLowerCase()==“print”)

的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();" />​

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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,则返回media该属性未设置。

From the attr documentation:

  

从jQuery 1.6开始,.attr()方法为属性返回undefined   没有设定。

因此,如果您的link元素的rel元素未设置为stylesheet属性设置为toLowerCase(),则会在媒体上调用undefined这是{{1}}。