js实现页面局部弹窗打印

原文出自:http://www.haorooms.com/post/css3media

在网页中经常看到有打印功能,点击之后,只针对特定区域进行的打印。网上看了一下,大体上有2中实现方法,一种是用css @media控制,另一种是直接用js控制。下面分别来对其进行说明一下!

一、css控制网页局部打印

关于css控制打印,css @media 参考地址:http://www.haorooms.com/post/css3media(主要是介绍Media Query方法)也引进了css2的media

<link href="css/style.css" rel="stylesheet" type="text/css" media="all" />

media可以是all,也可以是print ,加入是print,那么这个css只有在打印的时候才加载。那么这样就好办了,我们可以写针对css打印的样式,有些地方在打印的时候不显示,那么直接用display:none来设置不就可以了嘛!

除了上面的这种写法之外,还可以这么写:

@media print {
.noprint { display: none; }
} 

当你打印的时候noprint 类下面的所有内容不显示,不打印的时候显示。

举例:

<div class="noprint" >
<table style="margin:0 auto;width:500px;">
    <tr align="center" ><td>
      <object id="WebBrowser" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height="0"
                    width="0">
      </object>
  <input type="button" value="打印" onclick="document.all.WebBrowser.ExecWB(6,1)">
  <input type="button" value="页面设置" onclick="document.all.WebBrowser.ExecWB(8,1)">
<input type="button" value="直接打印" onclick="document.all.WebBrowser.ExecWB(6,6)">
  <input type="button" value="打印预览" onclick="document.all.WebBrowser.ExecWB(7,1)">
    </td></tr>
</table>
</div>  

这些内容在打印之前是显示的,当你点击打印的时候,会用上面的样式,不显示。达到了局部打印的效果!

二、js局部打印

直接上案例:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <title>js局部打印案例</title>
 6 <script type="text/javascript">
 7     function doPrint() {
 8         bdhtml=window.document.body.innerHTML;
 9         sprnstr="<!--startprint-->"; // 打印开始标识
10         eprnstr="<!--endprint-->";   //打印结束标识
11         prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17);
12         prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));
13     //新打开窗口打印(需要引用原页面样式文件)
14       var newWin = window.open("",‘newwindow‘,‘height=700,width=750,top=100,left=200,toolbar=no,menubar=no,resizable=no,location=no, status=no‘);
15       newWin.document.write(prnhtml);
16       newWin.print();
17
18       //当前窗口打印
19         window.document.body.innerHTML=prnhtml;
20         window.print();
21 }
22 </script>
23 </head>
24
25 <body>
26 <p>1不需要打印的地方</p>
27 <p>2这里不要打印啊</p>
28 <!--startprint--><!--注意要加上html里star和end的这两个标记~-->
29 <h1>打印标题</h1>
30 <p>打印内容~~</p>
31 <!--endprint-->
32 <button type="button" onclick="doPrint()">打印</button>
33 <p>不打印的地方</p>
34 <p>2</p>
35 </body>
36 </html>

注:

1、JS打开新窗口并填充内容的两种方式:

  i、write内容

var newWin=window.open("childWindow.html");
newWin.document.write("");
newWin.document.write(document.getElementByIdx_x("fatherWindowTable").outerHTML);

  这种方式缺点是新窗口一直处于Loading状态。

  ii、innerHTML内容

var newWin=window.open("childWindow.html");
newWin.onload=function()
{
newWin.document.title=‘childWindowTitle‘;
newWin.document.getElementByIdx_x(‘childWindowId‘).innerHTML=document.getElementByIdx_x("fatherWindowTable").outerHTML;
}

2、Js打开新窗口:Window.open() 方法参数:

  其中yes/no也可使用1/0;pixel value为具体的数值,单位象素。
参数 | 取值范围 | 说明 
alwaysLowered | yes/no | 指定窗口隐藏在所有窗口之后 
alwaysRaised | yes/no | 指定窗口悬浮在所有窗口之上  depended | yes/no | 是否和父窗口同时关闭 
directories | yes/no | Nav2和3的目录栏是否可见  height | pixel value | 窗口高度 
hotkeys | yes/no | 在没菜单栏的窗口中设安全退出热键 
innerHeight | pixel value | 窗口中文档的像素高度 
innerWidth | pixel value | 窗口中文档的像素宽度  location | yes/no | 位置栏是否可见 
menubar | yes/no | 菜单栏是否可见 
outerHeight | pixel value | 设定窗口(包括装饰边框)的像素高度 
outerWidth | pixel value | 设定窗口(包括装饰边框)的像素宽度 
resizable | yes/no | 窗口大小是否可调整  screenX | pixel value | 窗口距屏幕左边界的像素长度 
screenY | pixel value | 窗口距屏幕上边界的像素长度  scrollbars | yes/no | 窗口是否可有滚动栏 
titlebar | yes/no | 窗口题目栏是否可见  toolbar | yes/no | 窗口工具栏是否可见 
Width | pixel value | 窗口的像素宽度  z-look | yes/no | 窗口被激活后是否浮在其它窗口之上

时间: 2024-10-13 00:42:49

js实现页面局部弹窗打印的相关文章

基于Metronic的Bootstrap开发框架经验总结(9)--实现Web页面内容的打印预览和保存操作

在前面介绍了很多篇相关的<Bootstrap开发框架>的系列文章,这些内容基本上覆盖到了我这个Bootstrap框架的各个主要方面的内容,总体来说基本达到了一个稳定的状态,随着时间的推移可以会引入一些更好更新的内容进行完善,本篇继续这个系列,主要介绍如何实现Web页面内容的打印预览和保存操作. 1.Web页面打印的问题 在此之前,我一般使用比较好用的LODOP来执行打印的操作,这个在我之前有很多文章都有涉及,这个控件是一个ActiveX的控件,需要下载安装后就可以在页面是进行打印的排版设计,预

关于页面局部刷新例程

RS技术的一个具体例子 在前面的帖子中,我介绍了RS的基本工作原理,显然如果将RS技术运用在一个 网站的设计中将会有很多非凡的作用(尤其是它的那个最大的优点,可以在不刷新 页面的情况下调用服务端的代码).正是因为这个特点,你就可以象在编写一个 传统的C/S模式的程序一样,对数据库的数据进行处理了(我想大家一定很想知道具体应该如何来实现了,下面将给出一个具体的例子,调试这个破程序几乎快把我给累死,呵呵.) 从前面的描述可以看到,要使用RS技术就需要客户端和服务端满足下面两个条件: 1.客户端只需要

jquery实现页面局部刷新

后台管理中总是使用frameset进行分成部分进行管理,但是感觉很不好用,尤其是页面间调转还要判断window.parent,太令我费神了,于是学习使用XMLHttpRequest进行页面局部刷新.代码如下: Java代码   <html> <head> <script type="text/javascript"> window.onload = function(){ document.getElementById("email&quo

web应用页面关闭子页面局部刷新父页面(layer生成子页面)

主页面:main.html   main.js子页面:page.html   page.js 当子页面关闭时需要局部刷新主页面时,可以现在main.html定义一个隐藏的<input type="hidden" id="refreshBtn" onclick="freshPage()"/><!-- 用于子窗口刷新当前页 -->在main.js中添加:    /**      * 刷新当前页面      */    func

菜鸟解决“子页面关闭刷新父页面局部”问题的历程

引子 昨天晚上做一个项目,遇到的一个问题,这个项目是一个在线考试系统,新建一份试卷的页面,要添加一些试题策略.点击添加试题策略,弹出添加策略的页面,策略编辑好之后提交,添加策略页关闭,当前添加试题页面策略列表刷新.那么就遇到一个问题,在“添加试卷页”中点击“添加策略”按钮弹出添加策略页,添加策略后,父页面只能局部刷新(整体刷新会丢掉页面输入框未保存的数据). 综上总结,浓缩成一句话啊,就是“父页面打开子页面,子页面完成操作后触发父页面的事件.” 过程 我在百度和必应里面搜一下,很多解决方案是用w

HTML页面局部刷新

/.事件响应刷新:有请求才会刷新 1.通过JS HTML DOM或jQuery获取HTML元素,通过DOM方法或jQuery方法监听页面事件,获取用户请求: 2.通过Ajax将用户请求提交至服务器,服务器处理后返回结果,再由Ajax接收数据: 3.通过DOM方法或jQuery方法将数据载入页面,事件响应刷新完成. $('#input_date').keypress(function(e){ if(e.keyCode=='13'){ $.ajax({ type: "POST", url:

Node.js静态页面展示例子2

例程下载:https://files.cnblogs.com/files/xiandedanteng/nodejsStaticHtmlSample.rar 页面效果: Html页面代码(注意用文本编辑器如Editplus3保存文件时要指定编码为UTF-8,否则容易出现乱码): <!DOCTYPE html> <html lang="utf-8"> <meta http-equiv="Content-Type" content="

JS判断页面是否出现滚动条

今天无聊,帮一个网友解决一个很无聊的问题,用JS判断页面是否出现滚动条,在网上看了一些代码,经过验证并不起作用,下面是在网上搜索到的代码: 当可视区域小于页面的实际高度时,判定为出现滚动条,即: if (document.documentElement.clientHeight < document.documentElement.offsetHeight) scroll = true; 要使用 document.documentElement ,必须在页面头部加入声明: <!DOCTYPE

php开发之js修改页面css样式

在我以前的印象里,页面的字体属性,背景,等样式在页面加载后基本上都是固定的了,但是今天看到可以通过js修改页面的样式,觉得有必要和大家分享下. test.html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equi