前的包含文档处理功能的Web办公系统,在打开文档的时候,一部分系统是采用Office文档嵌入到主窗口页面中右侧工作区域的方式,另一部分系统采用的是弹出新的浏览器窗口,里面完整的嵌入Office文件的打开方式,这两种方式都有各自的优点和缺点。

主窗口页面中嵌入方式:主窗口中包含了丰富的菜单、按钮和输入框等元素,那么通过JS调用,可以很方便的实现文档控件与HTML元素的交互,但是屏幕的尺寸是有限的,浏览器本身的标题栏要占据整个屏幕至少十分之一的区域,Web项目页面的上方一般是整行的单位标识区,左侧是系统的导航区,右侧的工作去只能占据整个浏览器窗口大约三分之二到四分之三的大小,把office文档嵌入到工作区域之后,office的工具栏自身又要占用一大块区域,留给用户编辑Office文档的区域就显的非常小,用户编辑文档时连半页内容也看不全,操作极为不便。

采用弹出新浏览器窗口的方式:与主窗口页面中嵌入方式刚刚相反,使用js的window.open方法或window.showModelessDialog方法在弹出的新浏览器窗口满屏的嵌入文档控件,而且还可以设置浏览器自己的工具栏隐藏,这样就与本地全屏启动Office文档编辑的体验一样舒适。相对主窗口页面中嵌入方式来说,用户更容易接受弹出新浏览器窗口方式,但是对于系统的开发人员来说代价就很大了。在弹出新窗口的时候可以用js传递部分参数,可新窗口中的文件打开之后,如果需要与主窗口做数据的交互或数据的同步,就完全无法实现,并且在文件关闭的时候也无法通知主窗口做一些更新数据的操作。

鉴于以上情况, PageOffice 开发团队结合两种方式的优点创造性的研发出了POBrowser方式在线打开文档。不管主窗口是什么浏览器,在在线打开文档的时候都会弹出PageOffice产品提供的新浏览器窗口:POBrowser,POBrowser是基于IE内核的所以可以支持插件,POBrowser不但保持了主窗口中的Session,还可以通过名称为POBrowser的JavaScript对象提供的一组方法与父窗口传递参数和交互调用,彻底解决主窗口与子窗口的割裂问题。同时PageOffice V4.0还解决了以下四个问题。

  1. Chrome浏览器从42版本开始默认不启动插件,从45版本开始彻底关闭插件调用接口,网页中的任何插件(包括网银插件)都无法在Chrome浏览器中运行。FireFox浏览器在2016年年初发布消息,到2016年年底Firefox浏览器将关闭插件调用接口,所以从Firefox的52版本开始所有网页中的插件也都不能运行了。Chrome和Firefox停止对插件支持的原因主要有两点,第一是因为这两个浏览器中的插件技术都是基于NPAPI技术接口标准的,这种技术接口的缺陷是开发的插件很不稳定,所以大家在使用Chrome和Firefox的时候如果网页中使用了插件(包括Flash)就会经常出现浏览器崩溃的现象;第二点是现在HTML5技术的日益完善和推广,已经可以解决网页中播放视频的需求(网页中使用频率最高的插件就是Flash ,目的就是为了播放视频),所以从苹果公司率先放弃Flash改用HTML5开始,Chrome和Firefox也放弃了对插件的支持。PageOfficeV4.0则采用POBrowser技术完美解决了这个问题,Chrome和Firefox都可以继续运行PageOffice进行在线Office文档操作。

  2. Web项目的推行问题。目前市场上Chrome和FireFox浏览器占有很大的份额,用户的电脑上同时安装了多个浏览器的情况是极为普遍的现象,并且很多用户喜欢和习惯使用Chrome浏览器,大部分的网站也以Chrome和Firefox浏览器为标准布局自己的网站页面,所以用户使用Chrome或Firefox看到的网页是最漂亮的,如果让用户在使用包含有在线文档处理功能的Web项目时必须用IE浏览器,那么Web项目的推行阻力是很大的。如果使用新版PageOffice,那么用户可以保持使用Chrome和FireFox的习惯,Web项目的推行完全不受浏览器的制约和影响。

  3. 以弹出窗的方式在线同时打开多个文件时,多个子窗口文档的混乱问题。多个文件同时打开,区分开哪个子窗口中的文件分别对应文档列表中的哪个文件就变成了一个头疼的问题,如果此问题不能有效解决,那么还会出现同一份文件重复打开的问题。POBrowser方式弹出子窗口打开文件时,会在主窗口上自动生成激活子窗口的按钮,只需要点击此按钮就可以把当前主窗口上对应打开文件的子窗口切换出来,彻底解决此混乱问题。

  4. 不同的浏览器针对JavaScript的onunload,onbeforeunload事件互不兼容的问题。POBrowser提供了浏览器关闭的事件,可以保证在浏览器关闭的时候一定会触发开发人员希望执行的js代码,比如调用PageOffice提供的判断文件是否修改的属性,或提示用户保存等等需求。综上所述,我们推荐开发者优先采用POBrowser方式集成新版PageOffice,这不仅能够彻底完美解决浏览器问题,而且还能为用户带来良好的操作体验。

综上所述,我们推荐开发者优先采用POBrowser方式集成新版PageOffice,这不仅能够彻底完美解决浏览器问题,而且还能为用户带来良好的操作体验。

[原创]新版PageOffice V4.0为什么用弹出窗口的方式打开文件?的更多相关文章

  1. 【CefSharp】 禁用右键菜单 与 控制弹出窗口的方式(限版本39.0.0.1)

    这周没什么时间,一开始就在忙一些CefSharp的事情,Win10的研究就放了下来,CefSharp的资料挺少的,但好在是开源的,可以我们便宜的折腾.因为两个的内容都不多,我就合成一篇文章啦. 这还里 ...

  2. Visual Studio 打开解决方案后 弹出框显示 "正在打开文件..." 迟迟没反应 的解决方法

    Visual Studio 打开解决方案后 弹出框显示 "正在打开文件...",任务管理器的devenv进程又很正常,不会显示"未响应". 而IDE的左下角有个 ...

  3. WPF 选择电脑文件显示路径,弹出资源管理器,打开文件

    选择文件,将路径显示在名为txbx的textbox上 // 在WPF中, OpenFileDialog位于Microsoft.Win32名称空间 Microsoft.Win32.OpenFileDia ...

  4. 【Android】百度地图自定义弹出窗口

    我们使用百度地图的时候,点击地图上的Marker,会弹出一个该地点详细信息的窗口,如下左图所示,有时候,我们希望自己定义这个弹出窗口的内容,或者,干脆用自己的数据来构造这样的弹出窗口,但是,在百度地图 ...

  5. odoo-开发笔记 列表视图 增加记录弹出窗口效果

    editable="bottom" 增加该标签的效果是,添加记录的时候,在原列表视图上一行一行添加; 去掉该标签之后,那么增加新记录的时候,会以弹出窗口的方式实现. 如果弹出的窗口 ...

  6. Microsoft Dynamics CRM4.0 JScript 过滤lookup 出现 Microsoft Dynamics CRM 窗口无法打开,可能已被弹出窗口阻止程序所阻止。

    一.现象:JScript过滤lookup字段,选择lookup字段出现下图的情况: 出现:Microsoft Dynamics CRM 窗口无法打开,可能已被弹出窗口阻止程序所阻止.请将这台Micro ...

  7. JSP弹出窗口和模式对话框

    本文转载于其它blog,在此向本文原创者,致意!    JSP 弹出窗口  一.window.open() 基础知识      1.window.open()支持环境:  JavaScript1.0+ ...

  8. extjs_04_grid(弹出窗口&行编辑器 CRUD数据)

    1.弹出窗口(添加.删除) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWRhbV93enM=/font/5a6L5L2T/fontsize/400/f ...

  9. jQuery弹出窗口浏览图片

    效果预览:http://keleyi.com/keleyi/phtml/jqtexiao/3.htm HTML文件代码: <!DOCTYPE HTML> <html> < ...

随机推荐

  1. Spring核心接口之InitializingBean

    一.InitializingBean接口说明 InitializingBean接口为bean提供了属性初始化后的处理方法,它只包括afterPropertiesSet方法,凡是继承该接口的类,在bea ...

  2. 百度开平台BAE搭建网站

    百度开平台BAE搭建网站 一.注册:在百度云注册账号,并且登陆 然后实名验证 二.开始搭建 三.部署项目:我们来把我们的项目提交上去 填写百度云的账号密码 四.删除:删除部署项目 以上就是百度开平台B ...

  3. swing 托盘

    直接上方法, 不过有些问题要注意,最后会说明! private void systemTray() { if (SystemTray.isSupported()) { // 判断系统是否支持托盘功能. ...

  4. 数据库MySQL--修改数据表

    创建数据库::create database 数据库名: 如果数据不存在则创建,存在不创建:Create database if not exists 数据库名 ; 删除数据库::drop datab ...

  5. Java动态代理与CGLib

    Java帝国之动态代理 CGLib:从兄弟到父子-动态代理在民间是怎么玩的? 以上两篇文章引用自微信公众号: 码农翻身 Java动态代理 深度详解 以上文章引用博客园:陈树义

  6. JAVA算法之高级排序

    本章介绍两种高级排序,希尔排序和快速排序,这两种排序比之前讲到的简单排序都要快很多:希尔排序大约需要O(N*(logN)2)的时间,快速排序的时间复杂度为(N*logN),这两种算法和我们在讲递归的时 ...

  7. merge存储引擎基本介绍和使用规范说明

    [以下两段截自MySql手册]: merge存储引擎,也被认识为mrg_myisam引擎,是一个"相同“的表可以被当作一个表来用的myisam表的集合.“相同”意味着所有表同样的列和索引信息 ...

  8. windows 嵌入控制台

    { 实际非常简单 需要控制台的hwnd 和 hdc 能获取控制台的hwnd 那hdc 就出来了 有了hdc 还有什么不能干的呢?? 如果会win32 窗口编程的就知道hdc,是一个让人流口水的类型 } ...

  9. CSS——精灵技术

    精灵技术产生的背景 图所示为网页的请求原理图,当用户访问一个网站时,需要向服务器发送请求,网页上的每张图像都要经过一次请求才能展现给用户. 然而,一个网页中往往会应用很多小的背景图像作为修饰,当网页中 ...

  10. ForkJoin学习笔记

    1.Fork/Join框架:(分治算法思想) 在必要的情况下,将一个大任务,进行拆分(fork) 成若干个子任务(拆到不能再拆,这里就是指我们制定的拆分的临界值),再将一个个小任务的结果进行join汇 ...