[原创]新版PageOffice V4.0为什么用弹出窗口的方式打开文件?
前的包含文档处理功能的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还解决了以下四个问题。
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文档操作。
Web项目的推行问题。目前市场上Chrome和FireFox浏览器占有很大的份额,用户的电脑上同时安装了多个浏览器的情况是极为普遍的现象,并且很多用户喜欢和习惯使用Chrome浏览器,大部分的网站也以Chrome和Firefox浏览器为标准布局自己的网站页面,所以用户使用Chrome或Firefox看到的网页是最漂亮的,如果让用户在使用包含有在线文档处理功能的Web项目时必须用IE浏览器,那么Web项目的推行阻力是很大的。如果使用新版PageOffice,那么用户可以保持使用Chrome和FireFox的习惯,Web项目的推行完全不受浏览器的制约和影响。
以弹出窗的方式在线同时打开多个文件时,多个子窗口文档的混乱问题。多个文件同时打开,区分开哪个子窗口中的文件分别对应文档列表中的哪个文件就变成了一个头疼的问题,如果此问题不能有效解决,那么还会出现同一份文件重复打开的问题。POBrowser方式弹出子窗口打开文件时,会在主窗口上自动生成激活子窗口的按钮,只需要点击此按钮就可以把当前主窗口上对应打开文件的子窗口切换出来,彻底解决此混乱问题。
不同的浏览器针对JavaScript的onunload,onbeforeunload事件互不兼容的问题。POBrowser提供了浏览器关闭的事件,可以保证在浏览器关闭的时候一定会触发开发人员希望执行的js代码,比如调用PageOffice提供的判断文件是否修改的属性,或提示用户保存等等需求。综上所述,我们推荐开发者优先采用POBrowser方式集成新版PageOffice,这不仅能够彻底完美解决浏览器问题,而且还能为用户带来良好的操作体验。
综上所述,我们推荐开发者优先采用POBrowser方式集成新版PageOffice,这不仅能够彻底完美解决浏览器问题,而且还能为用户带来良好的操作体验。
[原创]新版PageOffice V4.0为什么用弹出窗口的方式打开文件?的更多相关文章
- 【CefSharp】 禁用右键菜单 与 控制弹出窗口的方式(限版本39.0.0.1)
这周没什么时间,一开始就在忙一些CefSharp的事情,Win10的研究就放了下来,CefSharp的资料挺少的,但好在是开源的,可以我们便宜的折腾.因为两个的内容都不多,我就合成一篇文章啦. 这还里 ...
- Visual Studio 打开解决方案后 弹出框显示 "正在打开文件..." 迟迟没反应 的解决方法
Visual Studio 打开解决方案后 弹出框显示 "正在打开文件...",任务管理器的devenv进程又很正常,不会显示"未响应". 而IDE的左下角有个 ...
- WPF 选择电脑文件显示路径,弹出资源管理器,打开文件
选择文件,将路径显示在名为txbx的textbox上 // 在WPF中, OpenFileDialog位于Microsoft.Win32名称空间 Microsoft.Win32.OpenFileDia ...
- 【Android】百度地图自定义弹出窗口
我们使用百度地图的时候,点击地图上的Marker,会弹出一个该地点详细信息的窗口,如下左图所示,有时候,我们希望自己定义这个弹出窗口的内容,或者,干脆用自己的数据来构造这样的弹出窗口,但是,在百度地图 ...
- odoo-开发笔记 列表视图 增加记录弹出窗口效果
editable="bottom" 增加该标签的效果是,添加记录的时候,在原列表视图上一行一行添加; 去掉该标签之后,那么增加新记录的时候,会以弹出窗口的方式实现. 如果弹出的窗口 ...
- Microsoft Dynamics CRM4.0 JScript 过滤lookup 出现 Microsoft Dynamics CRM 窗口无法打开,可能已被弹出窗口阻止程序所阻止。
一.现象:JScript过滤lookup字段,选择lookup字段出现下图的情况: 出现:Microsoft Dynamics CRM 窗口无法打开,可能已被弹出窗口阻止程序所阻止.请将这台Micro ...
- JSP弹出窗口和模式对话框
本文转载于其它blog,在此向本文原创者,致意! JSP 弹出窗口 一.window.open() 基础知识 1.window.open()支持环境: JavaScript1.0+ ...
- extjs_04_grid(弹出窗口&行编辑器 CRUD数据)
1.弹出窗口(添加.删除) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWRhbV93enM=/font/5a6L5L2T/fontsize/400/f ...
- jQuery弹出窗口浏览图片
效果预览:http://keleyi.com/keleyi/phtml/jqtexiao/3.htm HTML文件代码: <!DOCTYPE HTML> <html> < ...
随机推荐
- 几个实用的js函数
在阅读JavaScript DOM编程艺术这本书时看到了一些比较实用的代码. //加载多个window.onload事件 function addLoadEvent(func) { var oldon ...
- shell 通配符,管道符,输入/输出重定向,命令置换
1. echo 输出 [echo 输出的内容 ]把内容输出到终端上 如果字符串使用双引号,echo命令原样输出 [ echo "hello world" ] ...
- Java获取文件Content-Type(Mime-Type)
Java获取文件Content-Type(Mime-Type) 刚好工作中要用到,所以总结一下.推荐使用第一种和第三种,实在不行,也可以去把http://tool.oschina.net/common ...
- [CF1244C] The Football Season【数学,思维题,枚举】
Online Judge:Luogu,Codeforces Round #592 (Div. 2) C Label:数学,思维题, 枚举 题目描述 某球队一共打了\(n\)场比赛,总得分为\(p\), ...
- Python学习笔记(一)——输入与输出
输出:——print() Python中的输出使用print()完成 >>> 在屏幕中输出Hello World >>> print('Hello World') ...
- 2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据
redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略.redis 提供 6种数据淘汰策略: voltile-lru:从已设置过期时间的数据集(server.db[i].expires) ...
- BlueHost主机建站方案怎样选择?
BlueHost是知名美国主机商,近年来BlueHost不断加强中国市场客户的用户体验,提供多种主机租用方案,基本能够满足各类网站建设需求.下面就和大家介绍一下建站应该怎样选择主机. 1.中小型网站 ...
- Apocalypse Someday
Apocalypse Someday 定义一个数是合法的,当且仅当中间出现至少一个连续的大于三个的6,求第x个合法的数,\(x\leq 50,000,000\) 解 首先,注意到求第几个,即想到试填法 ...
- 调整VMware中虚拟机中Linux系统屏幕分辨率的问题
即:解决显示底部菜单栏以及安装软件中没有下一步的按钮用Tab键的问题 右击打开终端,输入以下命令: Xrandr Xrandr -s 1280x720 (自己选择一个分辨率即可) 原文:https: ...
- CSS3——动画
动画是CSS3中具有颠覆性的特征之一,可通过设置多个节点来精确控制一个或一组动画,常用来实现复杂的动画效果. 语法格式: animation:动画名称 动画时间 运动曲线 何时开始 播放次数 是否反 ...