js WebBrowser 控件设置页面打印系列2010年01月11日 星期一 11:06WebBrowser 控件概述(msdn介绍)
WebBrowser 控件为 WebBrowser ActiveX 控件提供了托管包装。托管包装使您可以在 Windows 窗体客户端应用程序中显示网页。使用 WebBrowser 控件,可以复制应用程序中的 Internet Explorer Web 浏览功能,还可以禁用默认的 Internet Explorer 功能,并将该控件用作简单的 HTML 文档查看器。此外,可以使用该控件将基于 DHTML 的用户界面元素添加到窗体中,还可以隐瞒这些元素在 WebBrowser 控件中承载的事实。通过这种方法,可以将 Web 控件和 Windows 窗体控件无缝地整合到一个应用程序中。
WebBrowser 控件包含多种可以用来实现 Internet Explorer 中的控件的属性、方法和事件。例如,可以使用 Navigate 方法实现地址栏,使用 GoBack、GoForward、Stop 和 Refresh 方法实现工具栏中的导航按钮。可以处理 Navigated 事件,以便使用 Url 属性的值更新地址栏,使用 DocumentTitle 属性的值更新标题栏。
如果想要在应用程序中生成自己的页面内容,可以设置 DocumentText 属性。如果熟悉 HTML 文档对象模型 (DOM),还可以通过 Document 属性操作当前网页的内容。通过此属性,您可以将文档存储在内存中来修改文档,而不用在文件间进行导航。
此外,使用 Document 属性,可以从客户端应用程序代码调用网页脚本代码中实现的方法。若要从脚本代码访问客户端应用程序代码,请设置 ObjectForScripting 属性。脚本代码可以将指定的对象作为 window.external 对象访问。
API详细见
http://msdn.microsoft.com/zh-cn/library/w290k23d(VS.80).aspx
主要使用了IE内置的WebBrowser控件,无需用户下载和安装。WebBrowser有很多功能,这里主要讲如何实现在线打印
1.首先引入一个WebBrowser在需要打印的页面,可以直接添加:
<object id="WebBrowser" classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height="0" width="0">
</object>
2 .页面设置和打印预览
如下所示,直接调用即可
document.all.WebBrowser.ExecWB(6,6) 直接打印
document.all.WebBrowser.ExecWB(8,1) 页面设置
document.all.WebBrowser.ExecWB(7,1) 打印预览
常用的:
WebBrowser.ExecWB(1,1) 打开
WebBrowser.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口
WebBrowser.ExecWB(4,1) 保存网页
WebBrowser.ExecWB(6,1) 打印
WebBrowser.ExecWB(7,1) 打印预览
WebBrowser.ExecWB(8,1) 打印页面设置
WebBrowser.ExecWB(10,1) 查看页面属性
WebBrowser.ExecWB(15,1) 撤销
WebBrowser.ExecWB(17,1) 全选
WebBrowser.ExecWB(22,1) 刷新
WebBrowser.ExecWB(45,1) 关闭窗体无提示
或者:
execScript("document.all.WebBrowser.ExecWB 7, 1","VBScript");
3 隐藏不打印的页面元素和分页
CSS 有个Media 属性,可以分开设置打印和显示的格式。
如 <style media="print" type="text/css"> …</style> 中间的格式将只在打印时起作用,不会影响显示界面。
所以可以设定
<style media="print" type="text/css">
.Noprint{display:none;}
.PageNext{page-break-after: always;}
</style>
然后给不想打印的页面元素添加: class="Noprint" ,那就不会出现在打印和打印预览中了。
想分页的地方添加: <div class="PageNext"></div> 就可以了。
WebBrowser组件的execWB方法(转载)
1. 调用方法:
WebBrowser.ExecWB nCmdID, nCmdExecOpt, [pvaIn], [pvaOut]
2. 参数说明:
(a).nCmdID
OLECMDID_OPEN = 1,
OLECMDID_NEW = 2,
OLECMDID_SAVE = 3,
OLECMDID_SAVEAS = 4,
OLECMDID_SAVECOPYAS = 5,
OLECMDID_PRINT = 6,
OLECMDID_PRINTPREVIEW = 7,
OLECMDID_PAGESETUP = 8,
OLECMDID_SPELL = 9,
OLECMDID_PROPERTIES = 10,
OLECMDID_CUT = 11,
OLECMDID_COPY = 12,
OLECMDID_PASTE = 13,
OLECMDID_PASTESPECIAL = 14,
OLECMDID_UNDO = 15,
OLECMDID_REDO = 16,
OLECMDID_selectALL = 17,
OLECMDID_CLEARselectION = 18,
OLECMDID_ZOOM = 19,
OLECMDID_GETZOOMRANGE = 20
OLECMDID_updateCOMMANDS = 21
OLECMDID_REFRESH = 22
OLECMDID_STOP = 23
OLECMDID_HIDETOOLBARS = 24
OLECMDID_SETPROGRESSMAX = 25
OLECMDID_SETPROGRESSPOS = 26
OLECMDID_SETPROGRESSTEXT = 27
OLECMDID_SETTITLE = 28
OLECMDID_SETDOWNLOADSTATE = 29
OLECMDID_STOPDOWNLOAD = 30
上面的关键词都可以在浏览器的菜单里面找到对应的选项﹐大家一看就明白的﹗
(b).nCmdExecOpt
OLECMDEXECOPT_DODEFAULT = 0,
OLECMDEXECOPT_PROMPTUSER = 1,
LECMDEXECOPT_DONTPROMPTUSER = 2,
OLECMDEXECOPT_SHOWHELP = 3
对于这个参数﹐一般来说﹐选1就可以了。
4.常用:
WebBrowser.ExecWB(1,1) 打开
WebBrowser.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口
WebBrowser.ExecWB(4,1) 保存网页
WebBrowser.ExecWB(6,1) 打印
WebBrowser.ExecWB(7,1) 打印预览
WebBrowser.ExecWB(8,1) 打印页面设置
WebBrowser.ExecWB(10,1) 查看页面属性
WebBrowser.ExecWB(15,1) 好像是撤销,有待确认
WebBrowser.ExecWB(17,1) 全选
WebBrowser.ExecWB(22,1) 刷新
WebBrowser.ExecWB(45,1) 关闭窗体无提示
5.示例﹕
(a)调用IE的”另存为”功能的示例﹕
<object id="WebBrowser" width=0 height=0 classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></object>
<A href="javascript:WebBrowser.ExecWB(4,1);">Save-存储</A>
(b)经过改写的登陆模式
<object id="WebBrowser" width=0 height=0 classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></object>
<body onload="showModalDialog('login_access.asp',0,'Status:NO;dialogWidth:418px;dialogHeight:288px');document.all.WebBrowser.ExecWB(45,1);">
<OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WebBrowser width=0></OBJECT>
<input name=Button onClick=document.all.WebBrowser.ExecWB(1,1) type=button value=打开>
<input name=Button onClick=document.all.WebBrowser.ExecWB(2,1) type=button value=关闭所有>
<input name=Button onClick=document.all.WebBrowser.ExecWB(4,1) type=button value=另存为>
<input name=Button onClick=document.all.WebBrowser.ExecWB(6,1) type=button value=打印>
<input name=Button onClick=document.all.WebBrowser.ExecWB(6,6) type=button value=直接打印>
<input name=Button onClick=document.all.WebBrowser.ExecWB(7,1) type=button value=打印预览>
<input name=Button onClick=document.all.WebBrowser.ExecWB(8,1) type=button value=页面设置>
<input name=Button onClick=document.all.WebBrowser.ExecWB(10,1) type=button value=属性>
<input name=Button onClick=document.all.WebBrowser.ExecWB(17,1) type=button value=全选>
<input name=Button onClick=document.all.WebBrowser.ExecWB(22,1) type=button value=刷新>
<input name=Button onClick=document.all.WebBrowser.ExecWB(45,1) type=button value=关闭>
分享到:
相关推荐
涵盖了几种常用的 webBrowser执行javascript的方法, execScript方式: NavigateScript方式: 其中需要作如下设置 由于visual studio2005 中WebBrowser控件已经实现了IDocHostUIHandler,所以 只要把应用程序属性类的...
MFC的WebBrowser控件 C++与JavaScript之间数据交互传递
源码是个MFC程序,加载了一个WebBrowser控件,并实现了C++与JavaScript之间数据交互传递。分成两个模块,分别展示数据传递的两个方向。
博客配套文件,详细演示了JS和C++代码互相调用的方法,JS调用C++的类独立封装可直接修改使用。
测试
c# 桌面应用 WebBrowser 是IE浏览器内核,目前很多网站不支持了,从国外网站找到一个 谷歌内核的WebBrowser 名字叫 EO.WebBrowser ,比较好用,本文档是他的帮助文档。
webbrowser获取js执行后的源代码
Silverlight调用WebBrowser中HTML的JavaScript方法.
当我们使用WebBrowser控件时有错误信息框弹出,这样程序显的很不友好,而且会让一些自动执行的程序暂停。我看到有人采取的解决方案是做一个窗体杀手程序来关闭弹出的窗体。本文探讨的方法是从控件解决问题。
去除烦人提示框的清洁版本,你懂得。 基于Chromium的.net浏览器引擎 EO.WebBrowser最新版本(v23.4.26)免安装dll.C# 直接引用版本。...广泛的自定义选项的UI,资源加载器和JavaScript界面; 完全独立,零外部依赖;
C#判断webbrowser页面最终加载完成
客户端程序中通过WebBrowser实现javascript与托管代码的互操作
找了好久才找到的,不容易啊。呵呵 找了好久才找到的,不容易啊。呵呵 找了好久才找到的,不容易啊。呵呵 找了好久才找到的,不容易啊。呵呵 找了好久才找到的,不容易啊。呵呵
MFCApplicationWeb_WebBrowser的应用_加了与JavaScript交互 MFCApplicationWeb_WebBrowser的应用_加了与JavaScript交互 MFCApplicationWeb_WebBrowser的应用_加了与JavaScript交互
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { this.webBrowser1.Navigate(Application.StartupPath + "/default.htm"); } Winform全屏: this....
在winform嵌入网页项目中,如何在网页中通过js脚本调用winform中类的方法?此demo可以帮到你
博客配套文件,演示如何禁用WebBrowser右键菜单,如何禁用3D边缘和滚动条,以及如何处理js错误通知,js错误通知封装成类,可以满足实际生产使用需求。
Demo中描述了如何让 WPF 窗体中的 WebBrowser 打开指定页面,并且页面中通过脚本调用托管的代码,也就是调用C#的方法。
WPF WebBrowser嵌入html,并与js实现互操作
WebBrowser控件之所有强大,一方面是由于控件本身提从了一系列的方法,包括打开网页,...1:让HTML页面的js调用我们在WebBrowser控件外面编写的函数。 2:让我们可以调用网页中的Javascript代码 本例即是这一功能的DEMO