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,所以 只要把应用程序属性类的...
使用 JavaScript 可以实现打印预览和设置打印纸张大小,但这需要使用 IE 的 WebBrowser 控件。 二、解决方法 1. 使用 JavaScript 实现打印预览 首先,需要使用 JavaScript 获取当前页面的 HTML 代码,并将其截取...
这篇博客的配套文件主要探讨了如何在WebBrowser控件中实现JavaScript(JS)与C++代码的互相调用,从而实现更灵活的交互功能。这种技术通常用于增强网页应用的功能,或者在桌面应用中利用JavaScript的便利性来操控...
对于JavaScript与C#的交互,`WebBrowser`控件提供了`InvokeScript`方法。在JavaScript代码中,可以通过`window.external`对象调用C#方法。例如,在HTML文件中定义一个JavaScript函数`callFromCSharp`,然后在C#中...
WebBrowser控件允许在MFC应用中嵌入网页浏览功能,而C++与JavaScript之间的数据交互则为这种集成提供了更丰富的可能性。本文将深入探讨如何实现C++和JavaScript之间的数据交换,并通过提供的源代码实例进行详细讲解...
本篇将详细讲解如何利用MFC中的WebBrowser控件实现C++与JavaScript之间的数据交互传递。 首先,WebBrowser控件是MFC提供的一个ActiveX控件,它允许应用程序嵌入Internet Explorer引擎,从而在桌面应用中浏览网页、...
这个过程通常涉及到JavaScript(js)调用WinForm类的方法,以实现一些特定功能或者获取数据。本文将深入探讨如何实现这一功能,并基于提供的"jsInWebBrowserCallCSharpMethod"示例进行详细解释。 首先,我们需要...
### C# WebBrowser 控件执行 JS 脚本源码详解 #### 一、概述 在.NET Framework中,`WebBrowser`控件是基于ActiveX技术实现的一个浏览器组件,允许开发者在自己的应用程序中嵌入一个完整的浏览器环境。通过这个控件...
WebBrowser控件支持与网页中的JavaScript交互。通过`InvokeScript()`方法,我们可以执行JavaScript函数,并获取返回值: ```csharp string result = webBrowser1.Document.InvokeScript("myFunction", new object[]...
然而,当浏览的网页存在JavaScript或其他脚本语言的错误时,IE浏览器通常会在左下角显示一个黄色警告图标,用户可以选择查看错误详情。但对于使用WebBrowser控件的程序来说,这些脚本错误可能会导致弹出错误信息框,...
这个主题涉及到JavaScript(JS)的运行机制,Web浏览器的工作原理,以及如何通过编程接口(如C#的`WebBrowser`控件)来与浏览器交互。下面我们将深入探讨这些知识点。 首先,JavaScript是Web前端的主要脚本语言,它...
测试
`WebBrowser`控件还支持执行JavaScript代码,通过`InvokeScript`方法实现: ```csharp object[] scriptArgs = { "参数1", "参数2" }; // 如果有参数 webBrowser1.Document.InvokeScript("javascript函数名", ...
WebBrowser控件提供了丰富的API接口,可以用来控制网页的加载、导航、交互以及执行JavaScript代码。 以下是一些关于WebBrowser控件的关键知识点: 1. **使用和配置**:在Delphi IDE中,可以从组件面板中拖拽...
7. **禁用浏览器特性**:为了控制用户体验或安全,可以禁用某些WebBrowser特性,如禁用JavaScript执行(`ObjectForScripting`属性)或禁用弹出窗口(`NewWindow`事件处理)。 8. **性能优化**:加载大型或复杂的...
c# 桌面应用 WebBrowser 是IE浏览器内核,目前很多网站不支持了,从国外网站找到一个 谷歌内核的WebBrowser 名字叫 EO.WebBrowser ,比较好用,本文档是他的帮助文档。
总之,JS调用C++的Webbrowser涉及到的技术栈广泛,涵盖了ActiveX控件开发、WebBrowser对象的使用、JavaScript与C++的跨语言通信等多个方面。这是一项复杂但实用的技术,尤其适用于需要在桌面应用中集成Web功能并进行...
在.NET框架中,C#提供了一个内置的控件——`WebBrowser`,它允许开发者在Windows应用程序中嵌入一个浏览器引擎,以便展示网页内容。这个控件基于Internet Explorer的渲染引擎,因此它能够处理HTML、CSS和JavaScript...
这种交互被称为“WebBrowser_js与托管代码互操作”,它允许用户在浏览器控件内执行本地应用程序的功能,或者反之,让本地应用对网页进行操作。下面将详细介绍这一主题,包括原理、实现方法以及相关的技术要点。 1. ...