4

我正在做一个简单的打印选项,单击时我会调用打印功能。该函数复制相关(不是全部)html。

function print() {

var printWindow = window.open("", "Print", "status=no, toolbar=no, scrollbars=yes", "false" );
var toInsert = $("div.book").html();
$(printWindow.document.body).html(toInsert);

}

我遇到的问题是这个新窗口似乎无法引用我的 css 样式表或文件夹中的图片。有任何想法吗?只关注css问题,是否可以<link ... />在新窗口的头部插入a?

谢谢!

4

3 回答 3

3

这是一个全新的窗口。它必须有自己的 CSS 等。

当您将文档写入其中时,您必须写入<link>标签、<script>标签和其他类似的东西。

于 2012-07-26T22:57:02.817 回答
3
function Print() {
    var printWindow = window.open("", "Print", "status=no, toolbar=no, scrollbars=yes", "false" );
    $("link, style, script").each(function() {
       $(printWindow.document.head).append($(this).clone())
    });
    var toInsert = $("div.book").html();
    $(printWindow.document.body).append(toInsert);​
}

演示

于 2012-07-26T23:06:18.740 回答
0

要将指向现有 CSS 样式表的链接动态插入到新窗口的头部,这对我来说效果很好:

var cssNode = document.createElement('link');
cssNode.type = 'text/css';
cssNode.rel = 'stylesheet';
cssNode.href = 'http://www.somedomain.com/styles/FireFox.css';
cssNode.media = 'screen';
cssNode.title = 'dynamicLoadedSheet';
printWindow.document.getElementsByTagName("head")[0].appendChild(cssNode);

来源:Totally Pwn CSS with Javascript - 关于直接操作样式表还有一些其他有趣的技巧

于 2014-08-19T16:06:35.990 回答