使用样式表打印div的内容

亨利5400

我想div通过javascript生成a的可打印innerHTML元素,因此我根据这些答案编写了一些代码但是我想添加另一个功能:我希望打印的元素不仅包括的innerHTML,还包括div其CSS <stylesheet>所以我修改了下面的代码,但是似乎运行不正常。

<style>
#divID {
    some css...
}
<style>

function printdiv() {
    var headstr = "<html><head><title>file_name</title></head><body>";
    var footstr = "</body></html>";
    var newstrstyle = document.getElementsByTagName("style")[0].innerHTML; // is this right?
    var newstr = document.getElementById('divID').innerHTML;
    var oldstr = document.body.innerHTML;
    document.body.innerHTML = headstr + '<style>' + newstrstyle + '</style>' + newstr + footstr;
    window.print();
    document.body.innerHTML = oldstr;
    return false;
}

我想从样式表中提取CSS,而不是将样式值添加到字符串中,因为我正在处理的东西具有可编辑的CSS。我应该如何改进代码?

米兰腾克

问题在于,newstr其中包含的内容div,但div包含id "divID"本身的内容因此,#divIDcss选择器将不与任何div-s匹配,因此将不应用样式。

要解决此问题,"<div id='divID'>"需要添加自身,因此fixed函数如下所示:

function printdiv() {
  var headstr = "<html><head><title>file_name</title></head><body>";
  var footstr = "</body></html>";
  var newstrstyle = document.getElementsByTagName("style")[0].innerHTML; // is this right? -> yes it is
  var newstr = document.getElementById("divID").innerHTML;
  var oldstr = document.body.innerHTML;
  document.body.innerHTML =
    headstr +
    "<style>" +
    newstrstyle +
    "</style>" +
    "<div id='divID'>" + // this div was missing
    newstr +
    "</div>" + // closing the added div
    footstr;
  window.print();
  document.body.innerHTML = oldstr;
  return false;
}

如果您想查看一个实时示例,这是我发现的stackblitz代码:https ://stackblitz.com/edit/js-madufb?file=index.js

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

CSS打印样式表生成的内容未显示

来自分类Dev

打印样式表-R

来自分类Dev

如何使用屏幕样式表进行打印?

来自分类Dev

在Heroku上仅打印样式表

来自分类Dev

使用属性样式表

来自分类Dev

无法使用样式表

来自分类Dev

重新加载样式表,而不会使用javascript / jQuery刷新未样式化的内容

来自分类Dev

不同div的不同样式表

来自分类Dev

使用print.css样式表删除打印时出现的元素

来自分类Dev

如何使用不同于print.css的样式表打印网页

来自分类Dev

使用JS生成CSS样式表

来自分类Dev

使用的样式表不正确

来自分类Dev

在XSL样式表中使用SVG

来自分类Dev

使用jQuery编辑外部样式表

来自分类Dev

使用JS生成CSS样式表

来自分类Dev

使用外部样式表的困难

来自分类Dev

隐藏打印样式表(chrome)中的输入边框

来自分类Dev

将样式表用于从内容加载的SVG

来自分类Dev

外部样式表

来自分类Dev

GraphML 样式表

来自分类Dev

使用React Native从样式表覆盖单个样式属性

来自分类Dev

仅在一个Div中应用样式表

来自分类Dev

检查哪个样式表处于活动状态并隐藏div

来自分类Dev

仅在一个Div中应用样式表

来自分类Dev

样式表未显示在div ID标签中?

来自分类Dev

禁用样式表以提高显示/隐藏div的速度

来自分类Dev

如何使用webpack提取多个主题样式表?

来自分类Dev

Sass:如何使用变量更改导入样式表的路径?

来自分类Dev

在QMenu中使用样式表设置图标?