Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用css样式打印div的步骤_Javascript - Fatal编程技术网

Javascript 使用css样式打印div的步骤

Javascript 使用css样式打印div的步骤,javascript,Javascript,我制作了一个只打印一个div的脚本,但是当我看到预览时,它不会使用添加的CSS“格式化”页面 HTML部分: <center>Do not print this</center> <div>Hi mom!</div> <center>Print this</center> <div id="content" class="print">Hi da

我制作了一个只打印一个div的脚本,但是当我看到预览时,它不会使用添加的CSS“格式化”页面

HTML部分:

<center>Do not print this</center>              
<div>Hi mom!</div>
<center>Print this</center>
<div id="content" class="print">Hi dad!</div>
            <input type='button' value='Print' onClick='Print()' />
不要打印此文件
嗨,妈妈!
打印这个
嗨,爸爸!
JS部分

function Print(){
     var corpo = document.getElementById('content').innerHTML;

     var a = window.open('','','width=640,height=480');
     a.document.open("text/html");
     a.document.write("<html><head><link rel=\"stylesheet\" href=\"./style.css\"></head><body><div class=\"print\">");
     a.document.write(corpo);
     a.document.write("</div></body></html>");
     a.document.close();
     a.print(); 
}
函数打印(){
var corpo=document.getElementById('content').innerHTML;
变量a=窗口打开('','',宽度=640,高度=480');
a、 文件。打开(“文本/html”);
a、 文件。填写(“”);
a、 文件编写(corpo);
a、 文件。填写(“”);
a、 document.close();
a、 打印();
}
现场版本:

它看起来像是在加载css之后才加载的


有什么提示吗?

您的新文档未保存,因此没有预期的路径,因此CSS文件的相对引用找不到CSS

要使其按预期工作,您需要将CSS引用更改为绝对引用,或者首先添加代码以保存新的HTML文件

这就是您测试它的方式,还是您的产品版本也会像这样工作?(新文件,未保存,然后打印)


您总是可以在样式标记之间将实际的CSS本身注入到新文档的头部,而不仅仅是对CSS文件的引用。试试看。

您的代码将创建无效的HTML

试一试

函数打印(){
var corpo=document.getElementById('content').innerHTML;
常量html=[];
html.push(“”);
//假设父页面上的第一个样式表-如果不是,请使用不同的选择器
//或者使用+location.protocol+'/'+location.host+'/style.css“>”
html.push(“”);
html.push(“”);
html.push(corpo);
html.push(“”);
console.log(html)
/*这在服务器上的代码段-取消注释中不起作用
变量a=窗口打开('',''宽度=640,高度=480');
a、 文件。打开(“文本/html”);
a、 document.write(html.join(“”);
a、 document.close();
*/
}

不要打印这个
嗨,妈妈!
打印这个
嗨,爸爸!

在codepen中,样式是内联使用的。检查DevTools中的页面。它是一样的。它不起作用。在头部,我现在看到它与我的第一个版本完全相同。它不会使用第一刻添加的CSS“格式化”页面。我必须关闭打印窗口,再次打开它,然后它才能工作。在本地尝试删除
A.Print()
并使用
html.push(“”);
但这样它不会打开打印窗口。。。