`
JerryWang_SAP
  • 浏览: 266599 次
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论
阅读更多
WebClient UI上自带了一个打印按钮,按Ctrl + P后可以生成一个新的页面供打印。
 
  如下图所示。可以看到这个页面里所有的超链接都已经被移除了。
 
这个页面的生成逻辑如下。 1. 按住ctrl + p之后,会触发WebClient UI框架的按键响应函数thtmlbKeyDown。浏览器传入的事件处理对象里ctrl属性为true,keycode为80(按键p对应的code),意思就是ctrl和p同时按下。
 
这个响应函数thtmlbKeyDown被注册到整个document对象上,因此您在页面任何位置点击ctrl+p都能得到响应。
 
从右上角的调用栈能发现crmFrwPrint被调用。crmFrwPrint会打开print.do这个控制器,位于BSP应用bspwd_basics里。
 
2. 打开print.do控制器的实现类CL_BSPWD_BASICS_PRINT
 
这个控制器会打开print.html页面
 
3. 我们按了ctrl+p后生成的页面的内容就是在print.html里生成的。核心代码在函数ppStartScripts里,被thtmlbRegisterOnLoad注册到页面的load事件里,意思是print.html加载时就执行。
 
 
  thtmlUtil.addEventHandler就是SAP自己封装的事件注册函数,用于多浏览器的兼容支持。 最核心的两个函数:

CreateShield

生成一个height和width为100%的div,背景图片设置成SAP预定义好的1x1.gif。
 
运行时显示如下:
 

loadPage

通过window.opener拿到发生了ctrl+p按键的原始页面,然后把其th-l-wcsubheadercontainer下面的所有元素的html直接复制到打印输出页面的header元素下面。 这样就实现了把原始页面的内容搬到了打印输出页面。  
 
然后得到打印页面所有超链接标签,然后把这些标签的href和onclick都置为一个函数体为return false的函数,这样超链接就不再能点击。  
 
var nirvana = new Function ( "return false;" ); 要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:
 
 
0
0
分享到:
评论
2 楼 JerryWang_SAP 2018-04-30  
masuweng 写道
这是java代码吗?


您好,都是JavaScript哈。
1 楼 masuweng 2018-04-19  
这是java代码吗?
相关资源推荐
  • CRM WebClient UI浏览器打印实现 WebClient UI上自带了一个打印按钮,按Ctrl + P后可以生成一个新的页面供打印。 如下图所示。可以看到这个页面里所有的超链接都已经被移除了。 这个页面的生成逻辑如下。 1. 按住ctrl + p之后,会触发WebClient UI框架的按键响应函数thtmlbKeyDown。浏览器传入的事件处理对象里ctrl属性为true,keycode为80(按键p对应的code),...
  • 绝对ABAP干货,SAP Press CRM Web Client WEBUI是SAP WEB开发技术的桥头堡, ABAP程序员转型WEB开发也是必然趋势。 书很专业,介绍得比较全面,读起来需要耐心。 ARTISAP 专业SAP CRM ABAP CRM WEBUI培训 (www.artisap.com)
  • UI Guidelines for CRM WebClient User Interface UI Guidelines for CRM WebClient User Interface
  • CRM】02- WEB UI 界面布局简介 在SAP CRM产品线中,从SAP CRM 2006S 开始,SAP 为用户提供了相对统一的UI。SAP  CRM提供了一套基于web 页面的操作界面,面向给end-user操作。传统的SAP GUI在SAP CRM系统中仅仅用来进行系统配置和程序开发。 大体就是下图这个样子,虽然SAP CRM里面有很多业务角色和业务场景,但是所有的页面基本上都是遵循下面这个样式。这个看起来
  • 推荐几个精致的前端web UI框架 1.Aliceui Aliceui是支付宝的样式解决方案,是一套精选的基于 spm 生态圈的样式模块集合,是 Arale 的子集,也是一套模块化的样式命名和组织规范,是写 CSS 的更好方式。 gitHub地址:https://github.com/aliceui/aliceui.github.io 2.Amazeui Amaze UI 是一个轻量级、 Mobile fir
  • 调用web前端打印功能,对页面进行打印 web页面调用的打印,包含可实现整页打印,区域打印,选择打印三种方法,直接复制可用(缺点:格式不好控制,建议使用插件打印或PDF打印,详见本人其他分享)
  • CRM】01- WEB UI 下拉列表 应用场景:自定义WEB UI 程序下拉列表       实现其对应视图,上下文节点里面的get v方法。 具体代码如下图:
  • Jerry的WebClient UI 42篇原创文章合集 我要感谢CRM On Premise, 因为在这个产品上做开发让我得以使用WebClient UI框架。有些朋友觉得这个SAP自己发明的基于HTML+ABAP的MVC框架,和现在流行的三驾马车(Angular, React, Vue)相比显得很笨重,也缺少一些他们认为现代UI框架必不可少的一些功能。 这个看法我个人不是完全认同,除了诸如React的Virtual DOM rendering和三驾
  • CRM7.0 WebClient UI config CRM7.0 WebClient UI config
  • WebClient 基本使用,模仿网页请求【L】 package com.lxl.htmlutil.test; import java.io.IOException; import org.junit.Test; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.DomElement; import com.ga
  • Htmlunit 创建webclient 模拟浏览器进行解析页面 1.该方法支持HTTP代理访问 2.集体的代码如下,改方法用的是模拟Firefox页面 public static final String userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0"; //创建Webclient成功 public void WebclientCre
  • web打印实现几种方法 在工作中出现web打印的情况是非常多的,其实这也是一个比较烦人的问题,这篇博客整理一下关于Web打印的一些方法或者方式。 1. window.print()这个方法是用来打印网页的,页面上的其他的元素也会被打印处理,在打印的时候页眉页脚是不太好控制的。所以如果使用这种方法的话最好将结果放到两个注释中间,之后通过JS来实现打印区域的功能。具体做法:
  • 漂亮的UI界面,ERP,CRM
  • 如何通过Dynamics CRM 2015修改用户密码 在Dynamics CRM平台是没有提供账户密码修改功能的,一般我们要实现这个功能或者让域管理员协助修改,或者将本机加入到域后,通过任务管理器自行修改。 但第一点会让自己的密码暴露,第二点则不太可能实现,毕竟很多机器被网络隔离或者被限制加入域。那么要实现在Dynamics CRM中修改用户密码,该如何实现呢?经过几个项目的累积和研究,主要有两种方式可以实现: 1、部署IISPWD站点,利用WI
  • 用友U8CRM后台维护以及打印模板设置操作手册
  • webclient请求返回乱码 官网正常 头信息 使用链接直接访问 webclient返回页面p.getWebResponse().getContentAsString()  打印出来乱码 解决办法: p.getWebResponse().getContentAsString("utf-8") 设置编码
  • CRM系统操作权限的实现 CRM系统操作权限的实现 操作权限功能:      (一)粗粒度权限控制:(即防止用户没有登录手动输入地址)      (二)细粒度权限控制:(即防止没有权限的操作)                1.菜单的操作的权限                2.功能的操作权限 PO实体的设计:        实现: (一)粗粒度权限控制:(即防止用户没有登录手动输
  • 浏览器渲染原理及web前端分析 浏览器渲染原理及web前端分析浏览器的主要功能 用户界面:包括地址栏、后退/前进按钮、书签目录等,也就是除了用来显示你所请求页面的主窗口之外的其他部分。 浏览器引擎:用来查询及操作渲染引擎的接口。另外还用来操作浏览器的数据存储。 渲染引擎:用来显示请求的内容,例如,如果请求内容为html,它负责解析html及css,并将解析后的结果显示出来。 网络:用来完成网络调用,例如http请求,它具有平台无关
  • (原创)easyui基于web的打印实现
  • 用python写了一个简单的模拟浏览器抓取网页的库webclient 对http协议过程中发送的http header和服务器返回的 http response info, 均可以print 调试(实际上我改为了 logging记录) 主要的特点: print http request headers # 打印 http 请求头信息 print http request cookies # 打印 http 请求的时候发送的cookie信息 print htt
Global site tag (gtag.js) - Google Analytics