前的包含文档处理功能的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. 今天学会了如何察看SSDT里面的东西、修改里面的地址

    简简单单,虽然不懂它的道理,就算会用了吧 哎,内核级的东西调着也费事 因为一个 extern 没写,我可怜的虚拟机,连续蓝屏了4次. typedef struct _ServiceDescriptor ...

  2. Activiti学习笔记8 — UserTask私有任务的使用

    每一个UserTask都会在Execution表和Task表中各产生一条记录 一.创建流程引擎对象 /** * 1.创建流程引擎对象 */ private ProcessEngine processE ...

  3. iOS开发系列-HTTPS

    HTTPS 网景在1994年创建了HTTPS,并应用在网景导航者浏览器中. 最初,HTTPS是与SSL一起使用的:在SSL逐渐演变到TLS. HTTPS协议与HTTP协议的一些不同: http是超文本 ...

  4. 2019牛客暑期多校训练营(第八场)D-Distance 定期重构

    题目传送门 题意: 在一个三维空间中,给出q次操作,每次操作可以在空间中加上一个固定点,或者询问一个点,对于一个询问操作,输出距离这个点最近的固定点的曼哈顿距离. 思路: 官方题解:先假设所有询问都在 ...

  5. pdfkit

    官方文档 0.准备 需要引入两个包,首先要npm install pdfkit安装pdfkit包 const PDF = require('pdfkit'); const fs = require(' ...

  6. 微服务配置中心实战:Spring + MyBatis + Druid + Nacos

    在结合场景谈服务发现和配置中我们讲述了 Nacos 配置中心的三个典型的应用场景,包括如何在 Spring Boot 中使用 Nacos 配置中心将数据库连接信息管控起来,而在“原生”的 Spring ...

  7. thinkphp扩展配置

    扩展配置可以支持自动加载额外的自定义配置文件,并且配置格式和项目配置一样. 设置扩展配置的方式如下(多个文件用逗号分隔): // 加载扩展配置文件 'LOAD_EXT_CONFIG' => 'u ...

  8. 多源多汇费用流——poj2516

    网络流的题好难..感觉有点遭不住了 这题用矩阵存图,然后把k个物品,每个物品都求一次费用流 /* 多源多汇的费用流 其实是k个费用流 */ #include<bits/stdc++.h> ...

  9. 最大流任务调度——hdu3572二分图建图

    很简单的任务调度模板题 把一个工作完成一天的量当做是边 /* 任务调度问题最大流 因为两个任务之间是没有关系的,两天之间也是没有关系的 所以抽象成二分图 任务i在天数[si,ei]之间都连一条双向边, ...

  10. 从零学React Native之13 持久化存储

    数据持久化就是指应用程序将某些数据存储在手机存储空间中. 借助native存储 这种方式不言而喻,就是把内容传递给native层,通过原生API存储,详见从零学React Native之05混合开发 ...