C# 关闭打印窗口后站点将冻结

C# 关闭打印窗口后站点将冻结,c#,javascript,jquery,C#,Javascript,Jquery,我正在使用jquery.printElement.js来print。当我点击print按钮时,一个print窗口将打开print和cancel按钮。如果我打印文档或取消打印窗口,一切正常,但如果我使用标题栏中的关闭按钮关闭窗口,则在chrome版本35上处理打印窗口后,一切都会停止工作 /// <reference path="http://code.jquery.com/jquery-1.4.1-vsdoc.js" /> /* * Print Element Plugin 1.2

我正在使用
jquery.printElement.js
print
。当我点击
print
按钮时,一个
print窗口将打开
print
cancel
按钮。如果我打印文档或取消打印窗口,一切正常,但如果我使用
标题栏中的
关闭
按钮关闭窗口,则在
chrome
版本
35
上处理打印窗口后,一切都会停止工作

/// <reference path="http://code.jquery.com/jquery-1.4.1-vsdoc.js" />
/*
* Print Element Plugin 1.2
*
* Copyright (c) 2010 Erik Zaadi
*
* Inspired by PrintArea (http://plugins.jquery.com/project/PrintArea) and
* http://stackoverflow.com/questions/472951/how-do-i-print-an-iframe-from-javascript-in-safari-chrome
*
*  Home Page : http://projects.erikzaadi/jQueryPlugins/jQuery.printElement 
*  Issues (bug reporting) : http://github.com/erikzaadi/jQueryPlugins/issues/labels/printElement
*  jQuery plugin page : http://plugins.jquery.com/project/printElement 
*  
*  Thanks to David B (http://github.com/ungenio) and icgJohn (http://www.blogger.com/profile/11881116857076484100)
*  For their great contributions!
* 
* Dual licensed under the MIT and GPL licenses:
*   http://www.opensource.org/licenses/mit-license.php
*   http://www.gnu.org/licenses/gpl.html
*   
*   Note, Iframe Printing is not supported in Opera and Chrome 3.0, a popup window will be shown instead
*/
; (function (window, undefined) {
    var document = window["document"];
    var $ = window["jQuery"];
    $.fn["printElement"] = function (options) {
        var mainOptions = $.extend({}, $.fn["printElement"]["defaults"], options);
        //iframe mode is not supported for opera and chrome 3.0 (it prints the entire page).
        //http://www.google.com/support/forum/p/Webmasters/thread?tid=2cb0f08dce8821c3&hl=en
        if (mainOptions["printMode"] == 'iframe') {
            if ($.browser.opera || (/chrome/.test(navigator.userAgent.toLowerCase())))
                mainOptions["printMode"] = 'popup';
        }
        //Remove previously printed iframe if exists
        $("[id^='printElement_']").remove();

        return this.each(function () {
            //Support Metadata Plug-in if available
            var opts = $.meta ? $.extend({}, mainOptions, $(this).data()) : mainOptions;
            _printElement($(this), opts);
        });
    };
    $.fn["printElement"]["defaults"] = {
        "printMode": 'iframe', //Usage : iframe / popup
        "pageTitle": '', //Print Page Title
        "overrideElementCSS": null,
        /* Can be one of the following 3 options:
        * 1 : boolean (pass true for stripping all css linked)
        * 2 : array of $.fn.printElement.cssElement (s)
        * 3 : array of strings with paths to alternate css files (optimized for print)
        */
        "printBodyOptions": {
            "styleToAdd": 'padding:10px;margin:10px;', //style attributes to add to the body of print document
            "classNameToAdd": '' //css class to add to the body of print document
        },
        "leaveOpen": false, // in case of popup, leave the print page open or not
        "iframeElementOptions": {
            "styleToAdd": 'border:none;position:absolute;width:0px;height:0px;bottom:0px;left:0px;', //style attributes to add to the iframe element
            "classNameToAdd": '' //css class to add to the iframe element
        }
    };
    $.fn["printElement"]["cssElement"] = {
        "href": '',
        "media": ''
    };
    function _printElement(element, opts) {
        //Create markup to be printed
        var html = _getMarkup(element, opts);

        var popupOrIframe = null;
        var documentToWriteTo = null;
        if (opts["printMode"].toLowerCase() == 'popup') {
            popupOrIframe = window.open('about:blank', 'printElementWindow', 'width=650,height=440,scrollbars=yes');
            documentToWriteTo = popupOrIframe.document;
        }
        else {
            //The random ID is to overcome a safari bug http://www.cjboco.com.sharedcopy.com/post.cfm/442dc92cd1c0ca10a5c35210b8166882.html
            var printElementID = "printElement_" + (Math.round(Math.random() * 99999)).toString();
            //Native creation of the element is faster..
            var iframe = document.createElement('IFRAME');
            $(iframe).attr({
                style: opts["iframeElementOptions"]["styleToAdd"],
                id: printElementID,
                className: opts["iframeElementOptions"]["classNameToAdd"],
                frameBorder: 0,
                scrolling: 'no',
                src: 'about:blank'
            });
            document.body.appendChild(iframe);
            documentToWriteTo = (iframe.contentWindow || iframe.contentDocument);
            if (documentToWriteTo.document)
                documentToWriteTo = documentToWriteTo.document;
            iframe = document.frames ? document.frames[printElementID] : document.getElementById(printElementID);
            popupOrIframe = iframe.contentWindow || iframe;
        }
        focus();
        documentToWriteTo.open();
        documentToWriteTo.write(html);
        documentToWriteTo.close();
        _callPrint(popupOrIframe);
    };

    function _callPrint(element) {
        if (element && element["printPage"])
            element["printPage"]();
        else
            setTimeout(function () {
                _callPrint(element);
            }, 50);
    }

    function _getElementHTMLIncludingFormElements(element) {
        var $element = $(element);
        //Radiobuttons and checkboxes
        $(":checked", $element).each(function () {
            this.setAttribute('checked', 'checked');
        });
        //simple text inputs
        $("input[type='text']", $element).each(function () {
            this.setAttribute('value', $(this).val());
        });
        $("select", $element).each(function () {
            var $select = $(this);
            $("option", $select).each(function () {
                if ($select.val() == $(this).val())
                    this.setAttribute('selected', 'selected');
            });
        });
        $("textarea", $element).each(function () {
            //Thanks http://blog.ekini.net/2009/02/24/jquery-getting-the-latest-textvalue-inside-a-textarea/
            var value = $(this).attr('value');
            //fix for issue 7 (http://plugins.jquery.com/node/13503 and http://github.com/erikzaadi/jQueryPlugins/issues#issue/7)
            if ($.browser.mozilla && this.firstChild)
                this.firstChild.textContent = value;
            else
                this.innerHTML = value;
        });
        //http://dbj.org/dbj/?p=91
        var elementHtml = $('<div></div>').append($element.clone()).html();
        return elementHtml;
    }

    function _getBaseHref() {
        var port = (window.location.port) ? ':' + window.location.port : '';
        return window.location.protocol + '//' + window.location.hostname + port + window.location.pathname;
    }

    function _getMarkup(element, opts) {
        var $element = $(element);
        var elementHtml = _getElementHTMLIncludingFormElements(element);

        var html = new Array();
        html.push('<html><head><title>' + opts["pageTitle"] + '</title>');
        if (opts["overrideElementCSS"]) {
            if (opts["overrideElementCSS"].length > 0) {
                for (var x = 0; x < opts["overrideElementCSS"].length; x++) {
                    var current = opts["overrideElementCSS"][x];
                    if (typeof (current) == 'string')
                        html.push('<link type="text/css" rel="stylesheet" href="' + current + '" >');
                    else
                        html.push('<link type="text/css" rel="stylesheet" href="' + current["href"] + '" media="' + current["media"] + '" >');
                }
            }
        }
        else {
            $("link", document).filter(function () {
                return $(this).attr("rel").toLowerCase() == "stylesheet";
            }).each(function () {
                html.push('<link type="text/css" rel="stylesheet" href="' + $(this).attr("href") + '" media="' + $(this).attr('media') + '" >');
            });
        }
        //Ensure that relative links work
        html.push('<base href="' + _getBaseHref() + '" />');
        html.push('</head><body style="' + opts["printBodyOptions"]["styleToAdd"] + '" class="' + opts["printBodyOptions"]["classNameToAdd"] + '">');
        html.push('<div class="' + $element.attr('class') + '">' + elementHtml + '</div>');
        html.push('<script type="text/javascript">function printPage(){focus();print();' + ((!$.browser.opera && !opts["leaveOpen"] && opts["printMode"].toLowerCase() == 'popup') ? 'close();' : '') + '}</script>');
        html.push('</body></html>');

        return html.join('');
    };
})(window);
//
/*
*打印元素插件1.2
*
*版权所有(c)2010 Erik Zaadi
*
*灵感来自PrintArea(http://plugins.jquery.com/project/PrintArea)及
* http://stackoverflow.com/questions/472951/how-do-i-print-an-iframe-from-javascript-in-safari-chrome
*
*主页:http://projects.erikzaadi/jQueryPlugins/jQuery.printElement 
*问题(错误报告):http://github.com/erikzaadi/jQueryPlugins/issues/labels/printElement
*jQuery插件页面:http://plugins.jquery.com/project/printElement 
*  
*感谢大卫B(http://github.com/ungenio)和icgJohn(http://www.blogger.com/profile/11881116857076484100)
*感谢他们的伟大贡献!
* 
*MIT和GPL许可下的双重许可:
*   http://www.opensource.org/licenses/mit-license.php
*   http://www.gnu.org/licenses/gpl.html
*   
*注意,如果Opera和Chrome 3.0不支持框架打印,则会显示一个弹出窗口
*/
; (函数(窗口,未定义){
var文件=窗口[“文件”];
var$=窗口[“jQuery”];
$.fn[“printElement”]=函数(选项){
var mainpoptions=$.extend({},$.fn[“printElement”][“defaults”],options);
//opera和chrome 3.0不支持iframe模式(它打印整个页面)。
//http://www.google.com/support/forum/p/Webmasters/thread?tid=2cb0f08dce8821c3&hl=en
如果(主选项[“打印模式”]=“iframe”){
if($.browser.opera | |(/chrome/.test(navigator.userAgent.toLowerCase()))
mainOptions[“打印模式”]=“弹出窗口”;
}
//删除以前打印的iframe(如果存在)
$(“[id^='printElement_']”).remove();
返回此。每个(函数(){
//支持元数据插件(如果可用)
var opts=$.meta?$.extend({},mainpoptions,$(this.data()):mainpoptions;
_printElement($(this),opts);
});
};
$.fn[“打印元素”][“默认值”]={
“打印模式”:“iframe”,//用法:iframe/popup
“页面标题”:“”,//打印页面标题
“overrideElementCSS”:null,
/*可以是以下3个选项之一:
*1:布尔值(对剥离所有链接的css传递true)
*2:$.fn.printElement.cssElement的数组
*3:带备用css文件路径的字符串数组(针对打印进行了优化)
*/
“打印体选项”:{
“styleToAdd”:“padding:10px;margin:10px;”,//要添加到打印文档正文中的样式属性
“classNameToAdd”:“”//要添加到打印文档正文的css类
},
“leaveOpen”:false,//如果弹出,请保持打印页打开或不打开
“iframeElementOptions”:{
“styleToAdd”:“边框:无;位置:绝对;宽度:0px;高度:0px;底部:0px;左侧:0px;”,//要添加到iframe元素的样式属性
“classNameToAdd”:“”//要添加到iframe元素的css类
}
};
$.fn[“printElement”][“cssElement”]={
“href”:”,
“媒体”:“
};
函数_printElement(元素,选项){
//创建要打印的标记
var html=_getMarkup(元素,选项);
var popupOrIframe=null;
var documentToWriteTo=null;
如果(选择[“打印模式”].toLowerCase()=='popup'){
popupOrIframe=window.open('about:blank','printElementWindow','width=650,height=440,scrollbars=yes');
documentToWriteTo=popupOrIframe.document;
}
否则{
//随机ID用于克服safari错误http://www.cjboco.com.sharedcopy.com/post.cfm/442dc92cd1c0ca10a5c35210b8166882.html
var printElementID=“printElement_389;”+(Math.round(Math.random()*99999)).toString();
//元素的本机创建速度更快。。
var iframe=document.createElement('iframe');
$(iframe).attr({
样式:选择[“iframeElementOptions”][“styleToAdd”],
id:printElementID,
className:opts[“iframeElementOptions”][“classNameToAdd”],
帧边框:0,
滚动:“否”,
src:“关于:空白”
});
document.body.appendChild(iframe);
documentToWriteTo=(iframe.contentWindow | | iframe.contentDocument);
如果(documentToWriteTo.document)
documentToWriteTo=documentToWriteTo.document;
iframe=document.frames?document.frames[printElementID]:document.getElementById(printElementID);
popupOrIframe=iframe.contentWindow | | iframe;
}
焦点();
documentToWriteTo.open();
documentToWriteTo.write(html);
documentToWriteTo.close();
_callPrint(popupOrIframe);
};
函数调用打印(元素){
if(元素&&element[“printPage”])
元素[“打印页]();
其他的
setTimeout(函数(){
_调用打印(元素);
}, 50);
}
函数_getElementHTMLIncludingFormElements(元素){
变量$element=$(element);
//单选按钮和复选框
$(“:选中,$元素)。每个(函数(){
this.setAttribute('checked','checked');
});
//简单文本输入
$(“输入[type='text'],$element)。每个(函数(){
this.setAttribute('value',$(this.val());
});
$(“select”,$元素)。每个(函数(){
变量$select=$(此变量);
$(
if (mainOptions["printMode"] == 'iframe') {
  if ($.browser.opera || (/chrome/.test(navigator.userAgent.toLowerCase())))
    mainOptions["printMode"] = 'popup';
}