Javascript 打印CSS:如何打开当前页面的新选项卡并附加CSS?

Javascript 打印CSS:如何打开当前页面的新选项卡并附加CSS?,javascript,jquery,css,Javascript,Jquery,Css,我想写一个脚本,打开当前页面的一个新选项卡,同时将特定于打印的CSS附加到页眉。迄今为止我的JS/jQuery: /*jslint browser: true, devel: true */ /*global jQuery */ /*global $ */ $(document).ready(function () { 'use strict'; jQuery('#print').click(function (event) { event.preventDefault();

我想写一个脚本,打开当前页面的一个新选项卡,同时将特定于打印的CSS附加到页眉。迄今为止我的JS/jQuery:

/*jslint browser: true, devel: true */
/*global jQuery */
/*global $ */
$(document).ready(function () {
  'use strict';
  jQuery('#print').click(function (event) {
    event.preventDefault();
    $('head').append('<link rel="stylesheet" type="text/css" href="print.css">');
    return false;
  });
});
/*jslint浏览器:true,devel:true*/
/*全局jQuery*/
/*全球美元*/
$(文档).ready(函数(){
"严格使用",;
jQuery(“#打印”)。单击(函数(事件){
event.preventDefault();
$('head')。追加('');
返回false;
});
});
这将在当前选项卡中生成具有正确打印样式的页面。但是,当我使用
window.open(“,”\u blank')
$('head')之前。附加(''),打印CSS不会附加到新选项卡


我正在寻找比or更紧凑的解决方案。如何将此信息传递到新选项卡?

您可以通过更改策略来获得结果

  • 打开窗口时,传递另一个属性

  • 在您的文档中,ready-检查该属性,如果需要,还额外检查url,并在html中附加css

  • 请注意-由于我们一直坚持这一策略,因此,我们回答了同样的理论策略。如果需要,还可以添加代码

    /*jslint浏览器:true,devel:true*/
    
    /*jslint browser: true, devel: true */
    /*global jQuery */
    /*global $ */
    $(document).ready(function () {
      'use strict';
      jQuery('#print').click(function (event) {
        event.preventDefault();
        var childWindow = window.open("<myCurrentURL>", '_blank');
        $(childWindow.document).find("head").append('<link rel="stylesheet" type="text/css" href="print.css">');
        return false;
      });
    });
    
    /*全局jQuery*/ /*全球美元*/ $(文档).ready(函数(){ "严格使用",; jQuery(“#打印”)。单击(函数(事件){ event.preventDefault(); var childWindow=window.open(“,”_blank”); $(childWindow.document).find(“head”).append(“”); 返回false; }); });

    您要知道,除非它遵守CORS,否则这将不适用于跨域调用。

    您不这样做。您可以在所有其他样式所在的同一文件中使用媒体查询。或者只是
    …您是否需要支持旧浏览器,例如IE8?否则使用相关CSS媒体查询