diff --git a/Net/AIPSignApplet.txt b/Net/AIPSignApplet.txt new file mode 100644 index 0000000000000000000000000000000000000000..ca61da55bca29bcfc233042f6e6f8aa39eb05f93 --- /dev/null +++ b/Net/AIPSignApplet.txt @@ -0,0 +1,1313 @@ +点聚AIP电子签章网页内嵌小程序:基于跨浏览器的小程序系统-PluginOK(牛插)中间件网络版( https://github.com/wangzuohuai/WebRunLocal )网络版开发,底层调用北京点聚信息技术有限公司的ActiveX控件(3.1版)HWPostil.ocx(此控件版权归北京点聚信息技术有限公司所有)实现。最低可用在Chrome 41、Firefox 52、Edge 80(Chromium内核)、360极速/安全、IE 8、Oprea 36、QQ等浏览器,也兼容运行于这些浏览器的最新版本。 + +1、PluginOK(牛插)中间件的安装: +1)、如果是exe的安装程序,请直接运行安装; +2)、如果是绿色版的程序包,请解压到磁盘某个目录后,双击“InstallWrl.bat”进行安装。 +3)、安装完成时会启动PluginOK中间件服务,在安装目录下的Data子目录有ZbaService.txt日志文件输出运行情况。 + +2、AIP电子签章网页内嵌小程序控制相关接口: +说明:以下功能请通过Web Socket连接PluginOK主服务(ws://localhost?sid=12345&flag=1)后可执行,如默认侦听端口不是80(关于如何配置侦听端口,请参考SDK包中的文档“PluginOK开发者手册.doc”),请在连接地址中指定端口号进行连接。 +HTTP在线测试网页:http://local.zorrosoft.com HTTPS在线测试网页:https://local.zorrosoft.com +前端集成可参考以上测试网页进行,HTML网页中需要嵌入以下类似代码; +A、标记小程序的显示位置和大小 +.AIPSignApplet { + margin: 20px 0 0 20px; + width: 480px; + height: 320px; + border: 1px solid blue; + } +或者 +.AIPSignApplet { + width: 480px; + height: 320px; + top: 20px; + left: 20px; + border: 1px solid blue; + } +B、嵌入 +支持IFrame的: + +或者直接用 +
+ +另外需要嵌入用到的JS脚本,脚本程序是完全开源的。 + +1)、请求启动Autodesk内嵌网页小程序实现网页中局部加载dwg/dxf等文档进行操作: +Type为浏览器类型,传0自动判断(前提是当前浏览器已启动并显示在最前端,Flag指定当前页加载时必须是0) 可强制指定浏览器类型Type(2代表Chrome 4代表Firefox 8代表Opera 16代表Edge(Chromium内核) 32代表360极速浏览器 33代表360安全浏览器 34代表360企业安全浏览器 50代表QQ浏览器 60代表搜狗浏览器) +Title:网页标题中的关键词 +Flag掩码标记:1指定新标签加载(1和16都不指定时为当前页加载) 2小程序显示窗口边框 4不自动裁剪越界窗口 8自动适配网页高度和宽度显示 64根据标题避免重复加载相同的小程序 +IframeX和IframeY分别为iframe嵌套的横竖偏移修正坐标 +BarW和BarH分别是网页右侧和底部预留区域 +小程序实际显示首先会基于网页中指定的坐标和大小,再根据IframeX、IframeY、BarW、BarH设定的值做修正 +App:0启动AutoCAD实现在线编辑(推荐用2015及以上版本,可根据具体版本定制) 1启动DWG True View在线查看和转换 2启动Design Review在线审阅 +Url:加载小程序所在的网页实际地址 +Open:为需要打开的文档路径,磁盘目录斜杠用/ +注意:Open和Url如果有特殊字符或中文等,需要用URL编码处理后传递 +举例: +自动识别当前浏览器并启动AutoCAD程序在线编辑dwg、dxf等文档 +{"req":"Wrl_ACADApplet","rid":5,"para":{"Type":"0","Title":"Autodesk Applet","Flag":1,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/acadframe.html","App":"0","Open":"D:/Zorro/test.dwg"}} + +自动识别当前浏览器并启动DWG True View程序在线查看或转换dwg文档 +{"req":"Wrl_ACADApplet","rid":6,"para":{"Type":"0","Title":"Autodesk Applet","Flag":1,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/acadframe.html","App":"1","Open":"D:/Zorro/test.dwg"}} + +自动识别当前浏览器并启动Design Review程序在线审阅dwg、dxf文档 +{"req":"Wrl_ACADApplet","rid":7,"para":{"Type":"0","Title":"Autodesk Applet","Flag":1,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/acadframe.html","App":"2","Open":"D:/Zorro/test.dwg"}} + + +自动识别当前浏览器指定位置自动适配网页大小启动: +{"req":"Wrl_ACADApplet","rid":8,"para":{"Type":"0","Title":"Autodesk Applet","Flag":9,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/acadfull.html","App":"0","Open":"D:/Zorro/test.dwg"}} + +当前页指定位置自动适配网页加载测试 +http://zorrosoft.com/acadframe.html + +启动后会前后收到两个JSON数据包 +A、{"ret":0,"rid":1,"data":{"ID":3}} +返回ID为当前小程序运行ID,通过此ID,可执行Wrl_AppletControl、Wrl_AppletScroll、Wrl_AppletResize等命令。 +B、{"event":"Wrl_Listen","aid":3,"data":{"SID":"123","PID":"997599C3-3C4D-445E-B741-0AD934B45459","Port":990}} +返回的侦听端口,可再建立一个Web Socket连接后,调用小程序中的相关功能,比如新打开一个网页。 + +2)、请求控制Autodesk内嵌网页小程序: +当前端不再需要小程序时可指定关闭,或者显示/隐藏及全屏显示等 +ID为启动小程序时返回JSON中的ID值,Code代表控制类型掩码:1关闭 2全屏显示 4自动隐藏 8还原显示 16自动适配网页高度和宽度显示模式切换 32强制隐藏。其中全屏显示2,可直接通过热键ESC或取消,4和32隐藏后可通过8恢复显示 +{"req":"Wrl_AppletControl","rid":2,"para":{"ID":"1","Code":4}} + +3)、请求滚动Autodesk内嵌网页小程序: +当前端截取到网页滚动通知时,需要调用此接口实现小程序和网页的滚动联动 +ID为启动小程序时返回JSON中的ID值 +Code为滚动方向1是水平直,2是垂直,3是同时 +Left为横向滚动条位置,Top为纵向滚动条位置 +{"req":"Wrl_AppletScroll","rid":3,"para":{"ID":"1","Code":2,"Left":0,"Top":100}} + +4)、请求改变Autodesk内嵌网页小程序显示位置或大小: +当前端网页显示区域缩放时,可动态修改小程序的显示位置或大小 +ID为启动小程序时返回JSON中的ID值,Width和Height分别为新的宽度和高度,X和Y分别为新的显示位置,不指定时保持不变,指定时原设置的IframeX和IframeY失效 +{"req":"Wrl_AppletResize","rid":4,"para":{"ID":1,"Width":500,"Height":600}} +或同时设置小程序显示起始坐标 +{"req":"Wrl_AppletResize","rid":5,"para":{"ID":1,"Width":500,"Height":600,"X":20,"Y":20}} + +5)、请求设置网页预留右侧宽度和底部高度,滚动条信息、垂直滚动及水平滚动位置: +当小程序显示区域超过当前网页时,需去除滚动条的显示影响 +ID为启动小程序时返回JSON中的ID值,BarW为预留右侧宽度 BarH为预留底部高度 +Code 1代表有水平滚动条,2代表有垂直滚动条,3代表都有 +ScrollTop垂直滚动条位置 ScrollTop水平滚动条位置 +{"req":"Wrl_ScrollBar","rid":6,"para":{"ID":"1","Code":2,"BarW":0,"BarH":0,"ScrollTop":0,"ScrollLeft":0}} + +6)、请求缩放Autodesk内嵌网页小程序,用于浏览器网页按比例缩放,一般不需要处理: +ID为启动小程序时返回JSON中的ID值,Scall为缩放百分比 +{"req":"Wrl_AppletScale","rid":7,"para":{"ID":1,"Scale":120}} + +3、小程序安装、升级、卸载 +1)、请求安装Autodesk内嵌网页小程序 +请在输入框中,输入如下请求,然后点击发送,完成安装: + +{"req":"Plugin_Install","rid":1,"para":{"Name":"Autodesk内嵌网页小程序","PID":"997599C3-3C4D-445E-B741-0AD934B45459","Date":"2020-12-12","Desc":"PluginOK之上跨浏览器的Autodesk内嵌网页小程序,支持在Chrome、Firefox、Edge、IE、Oprea、360、QQ等最新版本浏览器网页中内嵌AutoCAD等程序进行在线编辑、查看或审阅工程图","DownAddr":"http://local.zorrosoft.com/Files/Net/ACadApplet.pid","MD5":"F5165E67E373A51177C7ED5934977EDD","Version":"2.0.3.11","Size":688128,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"002EF9422D4905EC27D5428250DC150F1A12D91A98CAF80917E44DD7434AFC3FA9215B28CF5DBBD2B70938E9C4B315FD065F9C9A12A0FE667AC4D4F687717A3C371CE8FDD7DDA352D51B4FE06CE1C9D2CFCC9F49D620282E2415474A1A5FCB701219E787C4ED95A91B7A99C64D453476DC7D60A10F588B63277ECC1D682CDEB8028B3F59DF057C05ED9ABFE630CD3C2543870315D8CAC036D41A3E6FC49CABE49F121ABB1B7FEC2BC0B03A2CF9C39E84B18B6C7B073AE09226A861EF85E7E99AFC2F9DC846467AEE0D7ECC5C8E2704FA88E5EE9FDC109BB979500CB4BD7694D1089ADA8479000C5D07E036C704B73A474A084C9B3F12446CC17A0B121D96892D"}} + +启动安装后,会不断收到安装进度直到安装结束。 +在发布时,也可以把此小程序目录文件和中间件一起打包后发布,不用单独分发。 + +2)、请求升级Autodesk内嵌网页小程序: + +{"req":"Plugin_Update","rid":1,"para":{"Name":"Autodesk内嵌网页小程序","PID":"997599C3-3C4D-445E-B741-0AD934B45459","Date":"2020-12-12","Desc":"PluginOK之上跨浏览器的Autodesk内嵌网页小程序,支持在Chrome、Firefox、Edge、IE、Oprea、360、QQ等最新版本浏览器网页中内嵌AutoCAD等程序进行在线编辑、查看或审阅工程图","DownAddr":"http://local.zorrosoft.com/Files/Net/ACadApplet_Update.pid","MD5":"B6E649D55AF90BA91F3C7B79992BC368","Version":"2.0.3.11","Size":688128,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"1FAA59795A6F5CECFAE3C4BAD237678DED9BFE664F17C22FD8EB07729719061CD6FC503F38C67678D9C20B0E8E93035C004E6A4169F0DEEDF955B99D6D3FB5F6E51A6DA473CC02AD93DDE4FF7AE1F4E1FD5DAC57EB7ACDE87E01EC10FCA2C8AA983DE6DF9254DF1A70A19AE38F3007D189E02A9BEAB7A4CBE8EF6BF11A0A121B2022F00236270E5A6855EFEE940C385E05CFD587BD42374D25B891207A9C3A4043A176D38DA52F84E159F976050C47AE13466F75628F0EA2771A914CFAB017FAFB5CF67BED36C4C0F13F10C24F42C8135BBEC077D20D20742AF5C76968C503451F4C2CFF0356F2BE501C095C472D11156E38DF13F7A79AA8947C8594A93F0EDD"}} + +以上安装和升级的JSON请求包,可能因版本升级导致内容不同,如遇安装或升级时报错,请联系客服获取最新的请求包。 + +3)、请求卸载Autodesk内嵌网页小程序: + +{"req":"Plugin_Remove","rid":3,"para":{"PID":"997599C3-3C4D-445E-B741-0AD934B45459","Type":8}} + +4、Autodesk内嵌网页小程序转调用Autodesk的AutoCAD软件VBA接口及DWG True View或Design Review的OCX控件接口,先根据Wrl_ACADApplet请求启动后返回的端口号,新建立一个WebSocket连接后可执行如下指令: +A、常用功能请求: + +请求退出小程序 +{"req":"ACAD_Exit","rid":1,"para":{}} +请求关闭文档 +{"req":"ACAD_Close","rid":2,"para":{}} +请求打开文档 +{"req":"ACAD_Open","rid":3,"para":{"Open":"D:/Zorro/test.dwg"}} + +5、事件通知: +A、 + +B、PluginOK支持的事件通知: + +1) 小程序是否响应了热键全屏 +{"event":"ACAD_FullScreen","data":{"FullScreen":0}} FullScreen为当前是否全屏标记 + +2) Wrl_AppletExit 小程序退出通知 +{"event":"Wrl_AppletExit","data":{"ID":1}} + +6、其它 +请求参数的JSON数据包,请确保是UTF-8无签名的编码。 +更多接口请求说明,请参考安装目录中的文档TestWrl.txt、SDK包中的“PluginOK开发者手册.doc”及“PluginOK中间件安全解决方案”。 +如还有疑问请直接联系客服 加微信:ZorroSoft,或加QQ群:23126938 \ No newline at end of file diff --git a/Net/ChangeLog.txt b/Net/ChangeLog.txt new file mode 100644 index 0000000000000000000000000000000000000000..50a3f394bc490378d5329a248c14e36d87964c2d --- /dev/null +++ b/Net/ChangeLog.txt @@ -0,0 +1,164 @@ +2020-12-12 PluginOK升级网络版2.0.7.6(单机版1.2.18.6) + 1、发布Autodesk公司内嵌网页小程序体验版,支持内嵌AutoCAD软件、DWG True View及Design Review的OCX控件实现可程序化驱动的dwg等工程图在线编辑、查看、审阅等,搭配文件操作小程序可实现工程图文件的下载后自动打开编辑、保存后自动上传服务器管理; + 2、网络版支持前端请求自动移除指定终端电脑授权并卸载,回收可用授权数量; + 3、小程序侦听IP可设置为实际IP,而非127.0.0.1并输出日志; + 4、解决内嵌小程序首次启动运行可能失败问题; + 5、解决本地路径的小程序安装可能失败问题; + 6、解决数据文件目录初始化设置可能错误问题; + 7、更新范例小程序及中间件开发版授权截止日期。 + +2020-11-11 PluginOK升级网络版2.0.7.5(单机版1.2.18.5) + 1、改进前端请求内嵌小程序的全屏显示及退出全屏实现; + 2、延迟高级版服务运行启动到桌面时的提示运行问题; + 4、安装时增加自动注册C#无窗小程序及小程序的COM组件; + 5、解决内嵌小程序加载多个操作时可能浏览器卡死问题; + 6、解决前端WS可能无法成功连接中间件或小程序问题; + 7、改进解析网页中内嵌小程序的大小和位置参数算法; + 8、解决服务运行时调用Wrl_OpenFile和Wrl_OpenUrl不显示问题; + 9、解决自绘内嵌小程序在滚动时的刷新显示问题; + 10、解决内嵌小程序启动时可能不显示和释放时可能崩溃问题; + 11、各内嵌小程序添加在自连接中请求退出功能; + 12、解决VLC网页小程序可能无法选中和选中后全屏显示问题; + 13、VLC网页小程序增加设置TCP方式播放RTSP,初始化播放多个源; + 14、VLC网页小程序支持使用绿色版VLC播放控件; + 15、IE控件及标签页小程序支持更多请求协议。 + +2020-10-26 PluginOK升级网络版2.0.7.2(单机版1.2.18.2) + 1、所有执行程序和动态库等支持本公司的中文描述及双证书代码签名; + 2、完善VLC网页内嵌的多媒体播放小程序功能,支持动态切换分屏数; + 3、增加协议Wrl_UpdateSslCert支持在前端导入更新有效期后的SSL证书; + 4、Wrl_RegCom用于非小程序重新注册时需增加TK校验; + 5、解决WS连接释放时可能导致CPU占用可能高或服务重启问题; + 6、优化IE中所用的WS连接组件性能,增加连接超时设置; + 7、解决不同网页中启动同一个小程序时越来越慢的问题; + 8、解决加载多个小程序后浏览器放大缩小等操作后界面响应迟缓问题。 + +2020-10-09 PluginOK升级网络版2.0.6.5(单机版1.2.17.5) + 1、正式发布文件操作小程序; + 2、正式发布VLC内嵌网页的多媒体播放小程序; + 3、正式发布点聚电子签章内嵌网页小程序; + 4、修改标准版启动监控程序方式,避免弹窗提示; + 5、解决Chrome 84版开始WSS连接失败问题; + 6、解决前端请求Wrl_RegCom可能失败问题; + 7、解决内嵌网页小程序启动时可能失败问题。 + +2020-09-29 PluginOK升级网络版2.0.6.3(单机版1.2.17.3) + 1、正式版中支持调试内嵌小程序; + 2、中间件支持获取当前网络路由器MAC地址; + 3、支持前端请求切换中间件程序是否服务模式运行; + 4、配置文件中增加服务监控有效时间判断参数; + 5、优化非系统服务运行模式小程序适配性能和效果; + 6、解决无窗口小程序请求超时导致服务重启问题; + 7、解决非系统服务运行模式下热插拔U盘监控问题; + 8、解决Windows7下IE小程序指定内核版本无效问题; + 9、解决网络版可能无法从服务端获取授权信息问题; + 10、解决本机无HOSTS文件时配置SSL证书代理问题。 + +2020-09-15 PluginOK升级网络版2.0.6.1(单机版1.2.17.1) + 1、中间件主程序支持非系统服务的方式运行; + 2、前端支持URL Protocol启动中间件主程序; + 3、改进Windows 10下启动内嵌小程序时使用体验; + 4、优化Windows 7及XP系统内嵌小程序的显示效果; + 5、优化加载多个内嵌小程序时的运行性能; + 6、优化开启U盘使用监控和前端的交互信息; + 7、解决重启系统时服务运行可能不正常问题; + 8、解决重新安装中间件时服务可能不正常问题; + 9、解决加载本地安装包或升级包时不能继续问题; + 10、优化小程序底部和网页的滚动条重叠时的显示; + 11、解决浏览器最小化后再恢复时内嵌小程序状态修复; + 12、修复加载IE内嵌小程序指定内核版本不生效问题; + 13、优化屏蔽日志输出,加快系统运行速度; + 14、优化网络请求及解决反馈的其它问题。 + +2020-08-24 PluginOK升级网络版2.0.3.2(单机版1.2.15.2) + 1、IE小程序支持64位版; + 2、优化前端判断滚动条算法; + 3、升级内嵌小程序接口支持更多功能; + 4、优化内嵌小程序运行过程; + 5、优化弹窗小程序启动效果; + 6、升级VLC内嵌网页播放小程序,支持多窗口播放; + 7、优化Windows 7下内嵌小程序适配。 + +2020-08-13 2.0.2.1 PluginOK网络正式版(单机正式版1.2.12.2) + 1、切换软件授权模式,支持可独立部署的网络版,原单机版客户可继续使用并获得升级服务,网络版文件名前缀由Wrl改为Zba,和原单机版可同时运行; + 2、增加获取本地指定文件信息的协议Wrl_GetFileInfo,支持获取文件大小、文件属性、文件MD5、文件版本、文件创建及修改时间、图像宽度及高度等; + 3、网络版配置文件名ZbaConfig.json,增加语言配置Language及服务端ServerAddr地址及ServerPort端口,配置生效目录改为Data目录(原单机版升级后WrlConfig.json生效目录也改为Data目录); + 4、去掉系统重启过程中可能尝试重新注册服务的操作; + 5、IE小程序支持注入脚本、执行脚本、调用脚本函数等; + 6、提供微软Office及金山WPS内嵌网页小程序体验版; + 7、提供VLC内嵌网页播放小程序体验版; + 8、解决反馈的其它问题。 + +2020-07-13 1.2.11.1 发布PluginOK高级版(支持内嵌网页窗口小程序) + 1、实现在浏览器网页中内嵌窗口小程序运行,支持同时加载多个运行,支持上下左右滚动小程序; + 2、实现在Chrome、Firefox、Edge、Opera、IE、360、QQ等浏览器网页可加载IE指定版本内核的控件小程序或标签小程序运行; + 3、发布在Chrome、Firefox、Edge、Opera、IE、360、QQ等浏览器中运行的Flash Player内嵌窗口小程序; + 4、内嵌网页窗口小程序支持Windows XP及以上桌面及服务操作系统,兼容低版本的IE8及Chrome 41等; + 5、升级安装程序,安装或升级包的JSON请求数据包中支持用本地路径,不用单独部署HTTP服务器来测试; + 6、基础版功能增加单选或多选文件、选择文件保存路径、选择目录的功能; + 7、修改PluginOK之上运行的插件名称,统一改为小程序; + 8、解决IE中使用的Web Socket连接组件不稳定等问题; + 9、基础版功能实现对Edge新内核版兼容支持; + 10、解决历史版本中反馈的问题。 + +2019-11-07 1.1.1.5 + 1、实现关联打开本地文件协议Wrl_OpenFile,不支持exe、bat、msi、jar等可执行程序; + 2、解决启动exe插件时不返回侦听端口问题; + 3、解决协议Wrl_OpenUrl对XP兼容性问题; + 4、解决XP下获取电脑信息及当前登录用户错误问题; + 5、解决正式版授权误弹未授权提示; + 6、解决Wrl_Version协议指定More时获取当前登录用户错误问题; + 7、优化Wrl_OpenUrl协议请求返回进程ID及窗口句柄; + 8、优化Wrl_RegCom协议不指定插件ID时实现为重新注册中间件,连接会断开; + 9、Wrl_Version协议请求指定More可获取当前登录用户、当前电脑制造商及型号等信息; + 10、添加重新注册框架组件或指定插件协议Wrl_RegCom,用于恢复可能被破坏的注册项目; + 11、解决安装无界面DLL插件后需要重启服务才能正常请求插件功能问题; + 12、实现用指定浏览器指定URL; + 13、插件升级安装或框架升级时,支持无界面的静默安装模式; + 14、实现刷新插件加载协议,方便插件开发调试,无需手工重启服务; + 15、查询插件或插件列表时可指定返回插件程序全路径; + 16、解决多个网卡情况指定返回本机MAC地址信息错误问题; + 17、WrlConfig.json可配置卸载或重启框架请求中的有效期。 + +2019-10-10 1.0.9.15 + 1、单独提供一个升级框架授权文件的功能; + 2、解决EXE类型插件可能无法创建通信组件实例问题; + 3、修改一些提示语; + 4、支持C#插件自注册; + 5、优化EXE插件启动兼容性; + 6、增强插件DLL加载路径依赖; + 7、版本获取时支持本地Mac信息; + 8、解决打包工具文件大小0时执行无法结束问题; + 9、解决授权过期时服务不断重启问题; + 10、解决前端发送过长JSON数据包的兼容问题; + 11、优化性能及稳定性。 + +2019-06-29 1.0.9.9 + 1、完善平台与插件之间授权机制及优化内存操作; + 2、正式版请求插件服务提供不校验TK选择; + 3、解决C#插件卸载错误问题; + 4、解决打包工具可能报错问题; + 5、解决插件打包时RSA秘钥不设置密码引发的问题; + 6、解决EXE插件运行初始化数据错误问题; + 7、安装程序添加静默安装支持; + 8、修复安装程序启动后没自动显示到前端问题; + 9、插件包中启动的一次性安装附加程序改为校验DM5是否启动; + 10、解决个别目录安装后写数据权限不够导致无法正常加载EXE插件问题; + 11、优化程序临时文件处理; + 12、执行程序加入360安全卫士的白名单。 + +2019-05-05 1.0.8.12 + 1、改进IE中使用的WEB SOCKET连接组件; + 2、完善安装卸载命令行,不用每次填写实际的路径; + 3、修复启动EXE插件不推送端口问题; + 4、改进插件卸载和启动插件流程; + 5、启用新的产品LOGO; + 6、 升级框架支持C#无界面插件开发及调用; + 7、打包工具增加输出JAVA所需的公钥证书类型; + 8、增加IE浏览器中所用的WEB SOCKET连接网页测试页面; + 9、 框架升级、插件下载请求添加Cookie和Auth参数以支持有权限的下载,涉及底层网络操作组件接口变更; + 10、解决远程云端连接时可能启动EXE插件失败问题; + 11、解决插件更新安装时覆盖失败加载错误问题,安装结束时强制重启主服务。 + +2019-04-11 1.0.6.2 + 第一个正式发布版本。PluginOK(牛插)中间件是一个实现网页浏览器(Web Browser)与本地程序(Local App)之间进行双向调用的低成本、强兼容、安全可控、轻量级、易集成、可扩展、跨浏览器的小程序系统。通过此中间件可实现网页前端JS脚本无障碍操作本地电脑各种硬件、调用本地系统API及相关组件功能,可彻底解决DLL模块、ActiveX控件及自动化程序(如微软Office、金山WPS、AutoCAD等)在Chrome、Edge、360、FireFox、IE、Opera、QQ、搜狗等浏览器各版本中的嵌入使用问题,媲美原Java Applet的效果。 diff --git a/Net/FileApplet.txt b/Net/FileApplet.txt new file mode 100644 index 0000000000000000000000000000000000000000..b18879ee373e4d84c67bbdeb8d8803c37b8e2f75 --- /dev/null +++ b/Net/FileApplet.txt @@ -0,0 +1,100 @@ +ļС򣬻ڿСϵͳ-PluginOK(ţ)м(https://github.com/wangzuohuai/WebRunLocal)濪ṩļHTTPЭϴءͼļתšļʡسеȷͿChrome 41Firefox 52Edge 80(Chromiumں)360/ȫIE 8Oprea 36QQѹҲЩ°汾 + +1PluginOK(ţ)мİװ +1)exeİװֱаװ +2)ɫijѹijĿ¼˫InstallWrl.batаװ +3)װʱPluginOKмڰװĿ¼µDataĿ¼ZbaService.txt־ļ + +2װļС + +{"req":"Plugin_Install","rid":1,"para":{"Name":"ļС","PID":"199BB8A7-9DD5-41F5-AE9D-2AA94300B0B3","Date":"2020-12-12","Desc":"PluginOKм֮ϿļСṩļHTTPЭϴءͼļתļʡسеȷ񣬿ChromeEdgeFirefoxIEOpera360QQȵ°е","DownAddr":"http://local.zorrosoft.com/Files/Net/WrlFileApplet.pid","MD5":"EB344AB2571F530E5DB0332052CC0C29","Version":"2.0.3.11","Size":491520,"HideIns":0,"Type":1,"Cookie":"","Auth":"","TK":"4506EE4343F1901DF9563270A6051DD2A0136FA0E962E340E66ECB5245E8288F9C21AAA36EC03B125D23DF1219C3D26525F06BD1B1DD2D4310169790E29CA5318CB64136EBA7D1A7E2BB507A22F1F8F79B0B78961F003D8EDDAD3ECA5D47AD749264A7B23875B6129A95C46E2D61CF684CBE7291A624EAC6E90F712C34C92F37D7A6E95715E1B90B79F8221797FFECEEC8339607B1FD1B560AD562A405D32C4473DA667B1C694E966BC5E9212F715491E456D9933B70AF141A7F2509D6B77C3F7B18EB2B701E979CE0309A4992AE3448C106FC138CB0B9814E6155F3DCF67289F7C75DA81DA4A1C4593F7B35CA04A349AA6E7C350F59CCE895097BC44E04B205"}} + +3ļС + +{"req":"Plugin_Update","rid":1,"para":{"Name":"ļС","PID":"199BB8A7-9DD5-41F5-AE9D-2AA94300B0B3","Date":"2020-12-12","Desc":"PluginOKм֮ϿļСṩļHTTPЭϴءͼļתļʡسеȷ񣬿ChromeEdgeFirefoxIEOpera360QQȵ°е","DownAddr":"http://local.zorrosoft.com/Files/Net/WrlFileApplet_Update.pid","MD5":"8A752457E2CBE7024067F9B83392DD9A","Version":"2.0.3.11","Size":491520,"HideIns":0,"Type":1,"Cookie":"","Auth":"","TK":"367F66557211206A2B6F776316BD3B0437A205FCB2723AE42AD31187DB6239F005C921783A2B095B81DF8507C5C1FF7AF40320371B3D59B4EB1353145656F0D44478ECB955E311A2850735A0C3733018DB9C2BEED40E0E42F532706DCB820C0DFE2A2AD69B3E44308DCD2A932A6E9BD1F9F03AF5C1626DD2A954E1E9617573D1A622914E4E0A3D4870F3B2D9C16A3850EB0A973368B1C3DF6FA310605BA7F941AEBA23A51B59BEDD3CDD119519DCE6CAC6725B57B475ED345CC163E58105F53D6A111FF52EBD18CE0FABED32DCD6DE481ED0D98955A1A0206E2A4BE2057BF010ECF4EF81635F86888848F59D0E7703EBE5D8E28DB0B733A8678E01D55105B069"}} + +ϰװJSON汾ݲͬװʱϵͷȡµ + +4ļС +1)ͼļļ +˵¹ͨWeb SocketӺִУĬ˿ڲ80(˿ڣοSDKеĵPluginOKֲ.doc)ӵַָ˿ںŽӡ +򿪲ҳַws://localhost:83?sid=667&pid=D325C871-AB46-479B-B20E-1D861D26CA89&flag=1 ӣ + +ֵ֧Э鹦£ +Aתͼļ +SrcFileDestFileǰUrlEncode +{"req":"File_RotateImg","rid":1,"para":{"Angle":90,"Items":[{"ID":"11","SrcFile":"C:/Users/trade/Pictures/test/test.png","DestFile":"C:/Users/trade/Pictures/test/testnew.png"}]}} +תָļSrcFileָǶAngleDestFileΪָʱͼļָʱֱӸǵԭͼ + {"ret":0,"rid":1,"data":{"Ret":[{"ID":"","Ret":1},{"ID":"","Ret":1}]}} RetǷɹ + +BָͼļBASE64 +FileǰUrlEncode +{"req":"File_GetImg","rid":2,"para":{"File":"C:/test.jpg","Original":1,"Thumb":{"Width":200,"Height":300,"File":"C:/Newtest.jpg"}}} +ָOriginalΪ1ʱͬʱȡԭͼThumbڵʱȡָСͼThumbڵָFileļ浽أָʱȡԭͼ {"ret":0,"rid":2,"data":{"Thumb":"","Original":"","ThumbFile":"","Ret":1}} + +Cָļִָг +FileǰUrlEncode +{"req":"File_Open","rid":3,"para":{"File":"D:/Zorro/WRL/Data/WrlService.txt"}} FileΪ· +ִָгָļ +{"req":"File_Open","rid":4,"para":{"File":"C:/Windows/System32/notepad.exe D:/Zorro/WRL/Data/WrlService.txt"}} + +Dɾļ +ItemsĿǰUrlEncode +{"req":"File_Delete","rid":5,"para":{"Day":7,"Items":["c:/Newtest.jpg","c:/test.jpg"]}} ɾItemsָıļֶ֧ + +EָĿ¼ +DirǰUrlEncode +{"req":"File_CreateDir","rid":6,"para":{"Dir":"D:/Zorro/WRL/Data/Temp"}} DirΪ· +Ϣ +{"ret":0,"rid":6,"data":{"Ret":"1","ErrCode":0}} + +FɾָĿ¼Ŀ¼ļ +DirǰUrlEncode룬ɾ̸Ŀ¼ϵͳĿ¼ļ +{"req":"File_DelDir","rid":7,"para":{"Dir":"D:/Zorro/WRL/Data/Temp"}} DirΪ· +Ϣ +{"ret":0,"rid":7,"data":{"Ret":"1"}} + +Gȡָļ +DirǰUrlEncode룬ɾ̸Ŀ¼ϵͳĿ¼ļ +{"req":"File_Info","rid":8,"para":{"File":"C:/Users/trade/Pictures/test/test.png"}} FileΪ· +Ϣ +{"ret":0,"rid":8,"data":{"Ret":"1","Size":92095,"MD5":"B28B987EC70E1E7853F89A52CEDE68F0","Attribute":32,"CreateTime":"2020-10-07 13:07:20","LastWriteTime":"2020-07-14 10:09:43","Ver":"","CorpName":"","Desc":"","Width":1280,"Height":720}} + +HȡָĿ¼ļĿ¼б +DirǰUrlEncode룬ɾ̸Ŀ¼ϵͳĿ¼ļ +{"req":"File_List","rid":8,"para":{"Dir":"D:/Zorro/WRL","Find":"*.*"}} DirΪ· +Ϣ +{"ret":0,"rid":8,"data":[{"Name":"WrlSetup.exe","Size":157184,"Attr":2080,"Write":"2020-10-07 15:00:15"},{"Name":"X64"}]} +AttrСSizeļ޸ʱWriteĿ¼ļ + +2)ļHTTPϴط +򿪲ҳַws://localhost?sid=678&pid=762C3400-B3E5-4F00-8AA7-18E00F13E414&flag=1 ӣ +ֵ֧Э鹦£ + +Aļ +UrlFileǰUrlEncode +{"req":"File_Download","rid":1,"para":{"Cookie":"","Auth":"","Items":[{"ID":"","Url":"","File":"","MD5":"","Size":300}]}} ָURLļFileȲļ,IDǰָΨһIDӳɹظIJ㣬Ȩ޲CookieAuth + +Bϴļ +UrlItemsĿǰUrlEncode +{"req":"File_Upload","rid":2,"para":{"ID":"","Url":"","Cookie":"","Auth":"","Para":{},"Items":["c:/Newtest.jpg","c:/test.jpg"]}} ϴָURLıļӳɹظIJ + +Cֹͣϴ/ һҳ˳ +{"req":"File_Stop","rid":3,"para":{""Type":1}} ָֹͣУָTypeʱ1 2ϴ + +Dɾݼ¼ +{"req":"File_Delete","rid":4,"para":{"Day":7}} ɾָDayǰݿеϴ¼ + +/// ֪ͨ +{"event":"File_Status","data":{"ID":"","Url":"","File":"","Type":1,"Status":0,"Percent":0,"Error":""}} StatusΪ״̬(1ȴ 2 ڽ 4ɹ 8ȡ 16) PercentΪٷֱ Error +/// ϴ֪ͨ +{"event":"File_Status","data":{"ID":"","Ret":"","Type":2,"Status":0,"Percent":0,"Error":""}} StatusΪ״̬(1ȴ 2 ڽ 4ɹ 8ȡ 16) PercentΪٷֱ Error RetΪϴɹصݰ + +/// ϴȫ֪ͨ +{"event":"File_OK","data":{"Type":1"}} ֪ͨϴؽType 1ȫ 2ϴȫ + + +5 +JSONݰȷUTF-8ǩı롣 +ӿ˵οװĿ¼еĵTestWrl.txtSDKеġPluginOKֲ.docPluginOKмȫ +绹ֱϵͷ ΢ţZorroSoftQQȺ23126938 \ No newline at end of file diff --git a/Net/FlashPlayerApplet.txt b/Net/FlashPlayerApplet.txt new file mode 100644 index 0000000000000000000000000000000000000000..0387e066e4415c524670d4811d3c4ba010f96568 --- /dev/null +++ b/Net/FlashPlayerApplet.txt @@ -0,0 +1,254 @@ +Flash Player小程序(内嵌网页):基于跨浏览器的小程序系统-PluginOK(牛插)中间件( https://github.com/wangzuohuai/WebRunLocal )网络版开发,底层调用Adobe公司的ActiveX控件Flash.ocx(Windows 7及以下版本下载URL: http://get.adobe.com/flashplayer )实现播放。最低可用在Chrome 41、Firefox 52、Edge 80(Chromium内核)、360极速/安全、IE 8、Oprea 36、QQ、搜狗等浏览器,也兼容运行于这些浏览器的最新版本。 + +1、牛插(PluginOK)中间件的安装: +1)、如果是exe的安装程序,请直接运行安装; +2)、如果是绿色版的程序包,请解压到磁盘某个目录后,双击“InstallWrl.bat”进行安装; +3)、安装完成时会启动PluginOK中间件服务,在安装目录下的Data子目录有ZbaService.txt日志文件输出运行情况。 + +2、Flash Player内嵌网页小程序控制相关接口: +说明:以下功能请通过Web Socket连接PluginOK主服务(ws://localhost?sid=12345&flag=1)后可执行,如默认侦听端口不是80(关于如何配置侦听端口,请参考SDK包中的文档“PluginOK开发者手册.doc”),请在连接地址中指定端口号进行连接。 +HTTP网页在线测试:http://zorrosoft.com/flashfull.html HTTPS网页在线测试:https://zorrosoft.com/flashframe.html +前端集成可参考以上测试网页进行,HTML网页中需要嵌入以下类似代码; +A、标记小程序的显示位置和大小 +.FlashApplet { + margin: 20px 0 0 20px; + width: 480px; + height: 320px; + border: 1px solid blue; + } +或者 +.FlashApplet { + width: 480px; + height: 320px; + top: 20px; + left: 20px; + border: 1px solid blue; + } +B、嵌入 +支持IFrame的: + +或者直接用 +
+ +另外需要嵌入用到的JS脚本,脚本程序是完全开源的。 + +播放窗口选中状态时单击即可全屏显示,全屏显示状态通过ESC按键取消,全屏切换会发送JSON包的VLC_FullScreen通知。 + +1)、请求启动VLC多媒体播放网页小程序: +Type为浏览器类型,传0自动判断(前提是当前浏览器已启动并显示在最前端,Flag指定当前页加载时必须是0) 可强制指定浏览器类型Type(1代表IE 2代表Chrome 4代表Firefox 8代表Opera 16代表Edge(Chromium内核) 32代表360极速浏览器 33代表360安全浏览器 34代表360企业安全浏览器 50代表QQ浏览器 60代表搜狗浏览器) +Title:网页标题中的关键词 +Flag掩码标记:1指定新标签加载(1和16都不指定时为当前页加载) 2小程序显示窗口边框 4不自动裁剪越界窗口 8自动适配网页高度和宽度显示 64根据标题避免重复加载相同的小程序 +IframeX和IframeY分别为iframe嵌套的横竖偏移修正坐标 +BarW和BarH分别是网页右侧和底部预留区域 +小程序实际显示首先会基于网页中指定的坐标和大小,再根据IframeX、IframeY、BarW、BarH设定的值做修正 +ShowType 播放窗口分屏类型,默认1只显示一个播放窗口,支持1-21 24 25等多达20种多窗口播放。 +Url:加载小程序所在的网页实际地址 +Open :启动后自动播放的流地址或本地多媒体文件路径,斜杠\替换成/再传 +注意:Open和Url如果有特殊字符或中文等,需要用URL编码处理后传递 +举例: +自动识别当前浏览器指定位置和大小启动: +{"req":"Wrl_VLCApplet","rid":4,"para":{"Type":"0","Title":"VLC Applet","Flag":3,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/VLCApplet.html","ShowType":1,"Open":"https://vjs.zencdn.net/v/oceans.mp4"}} + +自动识别当前浏览器自动适配网页大小启动: +{"req":"Wrl_VLCApplet","rid":4,"para":{"Type":"0","Title":"VLC Applet","Flag":11,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/VLCApplet.html","ShowType":1,"Open":"http://www.zorrosoft.com/Files/PluginOKBrowserApplet.mp4"}} + +当前页指定位置自动适配网页加载测试 +http://zorrosoft.com/vlcframe.html + +启动后会前后收到两个JSON数据包 +A、{"ret":0,"rid":1,"data":{"ID":2}} +返回ID为当前小程序运行ID,通过此ID,可执行Wrl_AppletControl、Wrl_AppletScroll、Wrl_AppletResize等命令。 +B、{"event":"Wrl_Listen","aid":2,"data":{"SID":"123","PID":"90FC7E0E-0D2F-4C38-9875-B06407CE4556","Port":935}} +返回的侦听端口,可再建立一个Web Socket连接后,调用小程序中的相关功能,比如重新指定播放一个视频。 + +2)、请求控制VLC多媒体播放网页小程序: +当前端不再需要小程序时可指定关闭,或者显示/隐藏及全屏显示等 +ID为Wrl_VLCApplet启动小程序时返回的ID值,Code代表控制类型掩码:1关闭 2全屏显示 4自动隐藏 8还原显示 16自动适配网页高度和宽度显示模式切换 32强制隐藏。其中全屏显示2,可直接通过热键ESC或取消,设置4和32隐藏后可通过8恢复显示 +{"req":"Wrl_AppletControl","rid":2,"para":{"ID":"1","Code":4}} + +3)、请求滚动VLC多媒体播放网页小程序: +当前端截取到网页滚动通知时,需要调用此接口实现小程序和网页的滚动联动 +ID为启动小程序时返回JSON中的ID值 +Code为滚动方向1是水平直,2是垂直,3是同时 +Left为横向滚动条位置,Top为纵向滚动条位置 +{"req":"Wrl_AppletScroll","rid":3,"para":{"ID":"1","Code":2,"Left":0,"Top":100}} + +4)、请求改变VLC多媒体播放网页小程序显示位置或大小: +当前端网页显示区域缩放时,可动态修改小程序的显示位置或大小 +ID为Wrl_VLCApplet启动小程序时返回的ID值,Width和Height分别为新的宽度和高度 +X和Y分别为新的显示位置,不指定时保持不变,指定时原设置的IframeX和IframeY失效 +{"req":"Wrl_AppletResize","rid":4,"para":{"ID":1,"Width":500,"Height":600}} +或,同时修改小程序显示起始坐标 +{"req":"Wrl_AppletResize","rid":5,"para":{"ID":1,"Width":500,"Height":600,"X":20,"Y":20}} + +5)、请求设置网页预留右侧宽度和底部高度,滚动条信息、垂直滚动及水平滚动位置: +当小程序显示区域超过当前网页时,需去除滚动条的显示影响 +ID为启动小程序时返回的ID值,BarW为预留右侧宽度 BarH为预留底部高度 +Code 1代表有水平滚动条,2代表有垂直滚动条,3代表都有 +ScrollTop垂直滚动条位置 ScrollTop水平滚动条位置 +{"req":"Wrl_ScrollBar","rid":6,"para":{"ID":"1","Code":2,"BarW":0,"BarH":0,"ScrollTop":0,"ScrollLeft":0}} + +6)、请求缩放VLC多媒体播放网页小程序,用于浏览器网页按比例缩放时响应,一般不需要处理: +ID为Wrl_VLCApplet启动小程序时返回的ID值,Scall为缩放百分比 +{"req":"Wrl_AppletScale","rid":7,"para":{"ID":1,"Scale":120}} + +3、小程序安装、升级、卸载 +1)、请求安装VLC多媒体播放网页小程序 +请在输入框中,输入如下请求,然后点击发送,完成安装: + +{"req":"Plugin_Install","rid":1,"para":{"Name":"VLC内嵌网页多媒体播放小程序","PID":"90FC7E0E-0D2F-4C38-9875-B06407CE4556","Date":"2020-12-12","Desc":"PluginOK之上跨浏览器的VLC内嵌网页多媒体播放小程序,支持在Chrome、Firefox、Edge、IE、Oprea、360等最新版本浏览器网页中直接内嵌使用,可播放多路海康及大华等设备的实时视频","DownAddr":"http://local.zorrosoft.com/Files/Net/VlcWebPlayer.pid","MD5":"67F5BDD92780881E8DFD253C13B8A5B2","Version":"2.0.3.11","Size":786432,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"2B2A4FC971BBDBD1D93216B955BC37C8182D5149FCDBE25851F48AA10ABCCB301193C5AA1C7728F7BDEC86172AEDFC7414AE91FB8323280C873E0181ED5902AFEC29C2534EA65B21433EF6C5DEAE76DF8C763F7C3D37DB10A31F65159507AB858705940DE4617719CC9E1F06540B6FD5C66F98A35A570A694D83697E473DB63B81176C6696AE5C492F33D4A38FBB01E35D48E4082A365C741A4FF9C89D50B4EC595432EB6068D9A559CB95D61A7712B9042D6D23040984AB0322BAA36595D7D6FFB90B0FEDE9C4DB68A4B60110FACE0171A233927D268906BC094C9F6ADD4CA820F96CD8E61482125811AC0DE4E2E39B18128499516570E346E18860C70C98CB"}} + +启动安装后,会不断收到安装进度直到安装结束。 + +2)、请求升级VLC多媒体播放网页小程序: + +{"req":"Plugin_Update","rid":1,"para":{"Name":"VLC内嵌网页多媒体播放小程序","PID":"90FC7E0E-0D2F-4C38-9875-B06407CE4556","Date":"2020-12-12","Desc":"PluginOK之上跨浏览器的VLC内嵌网页多媒体播放小程序,支持在Chrome、Firefox、Edge、IE、Oprea、360等最新版本浏览器网页中直接内嵌使用,可播放多路海康及大华等设备的实时视频","DownAddr":"http://local.zorrosoft.com/Files/Net/VlcWebPlayer_Update.pid","MD5":"DDF3B90DE464486FA96655F0BD945473","Version":"2.0.3.11","Size":786432,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"3199136AA228AAF44CC6045DFF2061278AE8038550ABB2BF21A5416BFB89846D8FB70056872C8EDCD6F2FEB8CE2B57534F965B08BE95CDB28638E8B719C8D338E706B859F28ECE0816438504306B850192FB23CDEBAEF96D068A5B64A58E45ADC0AC40D168798C90762246239A35FBB82D4423FBD40865B52E13767F37740434246CEA476C3F75FF4656FBD51F222FA3B04FE088E36EAA499054341D986C3A8D172123E3703267CF65BCB51C7B73F42FDC3319E9A0A30EB16FF65985DC0EDFE91E2B870C4CC8FCD5485A9A86E9A560DF33E3463FD20DE8DE9B74074C1B1C9CBCC7E3A05CD32005E685FB9B659461E4A5F465DD672FCC8AE1796CDE92F022E52B"}} + +以上安装和升级的JSON请求包,可能因版本升级导致内容不同,如遇安装或升级时报错,请联系客服获取最新的请求包。 + +3)、请求卸载VLC多媒体播放网页小程序: + +{"req":"Plugin_Remove","rid":3,"para":{"PID":"90FC7E0E-0D2F-4C38-9875-B06407CE4556","Type":8}} + +4、VLC多媒体播放网页小程序转调用ActiveX接口(接口说明:https://wiki.videolan.org/Documentation:WebPlugin ),先根据Wrl_VLCApplet请求启动后返回的端口号,针对此端口新建一个WebSocket连接后可执行如下指令: + +A、ActiveX接口功能请求: +支持创建多个VLC的ActiveX控件窗口同时播放多路实时视频,所以请求参数里需要指定窗口序号ID,从1开始,序号原则是从左向右开始编号,然后从上到下开始顺序编号,如遇右侧多层排列窗口时,直到右侧窗口序号排序完成 + +1) 取指定ID播放窗口属性AutoLoop(自动循环)值,举例: +请求:{"req":"VLC_GetAutoLoop","rid":41,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":41,"ID":1,"data":{"Ret":0,"AutoLoop":0}} 和 {"ret":0,"rid":41,"ID":2,"data":{"Ret":0,"AutoLoop":0}} +ret为请求返回值,0正常,非零不正常,不正常时请取和ret同级的错误描述err,下同 +Ret为调用ActiveX对应函数返回值,0代表正常 + +2) 设置指定ID控件窗口AutoLoop(自动循环)值,举例: +请求:{"req":"VLC_PutAutoLoop","rid":42,"para":[{"ID":1,"AutoLoop":1},{"ID":2,"AutoLoop":0}]} +分别返回:{"ret":0,"rid":42,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":42,"ID":2,"data":{"Ret":0}} + +3) 取指定ID控件窗口AutoPlay(自动播放)值,举例: +请求:{"req":"VLC_GetAutoPlay","rid":43,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":43,"ID":1,"data":{"Ret":0,"AutoPlay":0}} 和 {"ret":0,"rid":43,"ID":2,"data":{"Ret":0,"AutoPlay":0}} + +4) 设置指定ID窗口AutoPlay(自动播放)值,举例: +请求:{"req":"VLC_PutAutoPlay","rid":44,"para":[{"ID":1,"AutoPlay":1},{"ID":2,"AutoPlay":0}]} +分别返回:{"ret":0,"rid":44,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":44,"ID":2,"data":{"Ret":0}} + +5) 取指定ID窗口StartTime(开始时间)值,举例: +请求:{"req":"VLC_GetStartTime","rid":45,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":45,"ID":1,"data":{"Ret":0,"StartTime":0}} 和 {"ret":0,"rid":45,"ID":2,"data":{"Ret":0,"StartTime":0}} + +6) 设置指定ID窗口StartTime(开始时间)值,举例: +请求:{"req":"VLC_PutStartTime","rid":46,"para":[{"ID":1,"StartTime":0},{"ID":2,"StartTime":0}]} +分别返回:{"ret":0,"rid":46,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":46,"ID":2,"data":{"Ret":0}} + +7) 取指定ID窗口MRL(播放源)值,举例: +请求:{"req":"VLC_GetMRL","rid":47,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":47,"ID":1,"data":{"Ret":0,"MRL":""}} 和 {"ret":0,"rid":47,"ID":2,"data":{"Ret":0,"MRL":""}} + +8) 设置指定ID窗口MRL(播放源)值,举例: +请求:{"req":"VLC_PutMRL","rid":48,"para":[{"ID":1,"MRL":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream"},{"ID":2,"MRL":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream"}]} +分别返回:{"ret":0,"rid":48,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":48,"ID":2,"data":{"Ret":0}} +9) 取指定ID窗口Visible(可见性),举例: +请求:{"req":"VLC_GetVisible","rid":49,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":49,"ID":1,"data":{"Ret":0,"Visible":1}} 和 {"ret":0,"rid":49,"ID":2,"data":{"Ret":0,"Visible":0}} + +10) 设置指定ID窗口Visible(可见性),举例: +请求:{"req":"VLC_PutVisible","rid":48,"para":[{"ID":1,"Visible":1},{"ID":2,"Visible":0}]} +分别返回:{"ret":0,"rid":50,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":50,"ID":2,"data":{"Ret":0}} + +11) 取指定ID窗口Volume(音量),举例: +请求:{"req":"VLC_GetVolume","rid":51,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":51,"ID":1,"data":{"Ret":0,"Volume":0}} 和 {"ret":0,"rid":51,"ID":2,"data":{"Ret":0,"Volume":0}} + +12) 设置指定ID窗口Volume(音量),举例: +请求:{"req":"VLC_PutVolume","rid":52,"para":[{"ID":1,"Volume":0},{"ID":2,"Volume":0}]} +分别返回:{"ret":0,"rid":52,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":52,"ID":2,"data":{"Ret":0}} + +13) 取指定ID窗口BackColor(背景色),举例: +请求:{"req":"VLC_GetBackColor","rid":53,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":53,"ID":1,"data":{"Ret":0,"BackColor":0}} 和 {"ret":0,"rid":53,"ID":2,"data":{"Ret":0,"BackColor":0}} + +14) 设置指定ID窗口BackColor(背景色),举例: +请求:{"req":"VLC_PutBackColor","rid":54,"para":[{"ID":1,"BackColor":0},{"ID":2,"BackColor":0}]} +分别返回:{"ret":0,"rid":54,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":54,"ID":2,"data":{"Ret":0}} + +15) 取指定ID窗口Toolbar(工具栏)显示与否,举例: +请求:{"req":"VLC_GetToolbar","rid":55,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":55,"ID":1,"data":{"Ret":0,"Toolbar":0}} 和 {"ret":0,"rid":55,"ID":2,"data":{"Ret":0,"Toolbar":0}} + +16) 设置指定ID窗口Toolbar(工具栏)显示与否,举例: +请求:{"req":"VLC_PutToolbar","rid":56,"para":[{"ID":1,"Toolbar":0},{"ID":2,"Toolbar":0}]} +分别返回:{"ret":0,"rid":56,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":56,"ID":2,"data":{"Ret":0}} + +17) 取指定ID窗口FullScreenEnabled(全屏启用),举例: +请求:{"req":"VLC_GetFullScreenEnabled","rid":57,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":57,"ID":1,"data":{"Ret":0,"FullScreenEnabled":0}} 和 {"ret":0,"rid":57,"ID":2,"data":{"Ret":0,"FullScreenEnabled":0}} + +18) 设置指定ID窗口FullScreenEnabled(全屏启用),举例: +请求:{"req":"VLC_PutFullScreenEnabled","rid":58,"para":[{"ID":1,"FullScreenEnabled":0},{"ID":2,"FullScreenEnabled":0}]} +分别返回:{"ret":0,"rid":58,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":58,"ID":2,"data":{"Ret":0}} + +19) 取指定ID窗口版本信息,举例: +请求:{"req":"VLC_GetVersionInfo","rid":59,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":59,"ID":1,"data":{"Ret":0,"VersionInfo":""}} 和 {"ret":0,"rid":59,"ID":2,"data":{"Ret":0,"VersionInfo":""}} + +20) 取指定ID窗口多媒体描述信息,举例: +请求:{"req":"VLC_MediaDescGet","rid":60,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":60,"ID":1,"data":{"Ret":0,"Title":"","Artist":"","Genre":"","Copyright":"","Album":"","TrackNumber":"","Desc":"","Rating":"","Date":"","Setting":"","Url":"","Language":"","NowPlaying":"","Publisher":"","EncodedBy":"","ArtworkURL":"","TrackID":""}} 和 {"ret":0,"rid":60,"ID":2,"data":{"Ret":0,"Title":"","Artist":"","Genre":"","Copyright":"","Album":"","TrackNumber":"","Desc":"","Rating":"","Date":"","Setting":"","Url":"","Language":"","NowPlaying":"","Publisher":"","EncodedBy":"","ArtworkURL":"","TrackID":""}} + +21) 取指定ID窗口音频信息,举例: +取时自动获得全部属性 +请求:{"req":"VLC_AudioGet","rid":61,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":61,"ID":1,"data":{"Ret":0,"Mute":0,"Volume":100,"Track":"","TrackNumber":"","Channel":"","Desc":""}} 和 {"ret":0,"rid":61,"ID":2,"data":{"Ret":0,"Mute":"","Volume":"","Track":"","TrackNumber":"","Channel":"","Desc":""}} + +22) 设置指定ID窗口音频信息,举例: +设置时不要求全部属性,只设置需要设置的 +请求:{"req":"VLC_AudioPut","rid":62,"para":[{"ID":1,"Mute":0,"Volume":100,"Track":"","TrackNumber":"","Channel":"","Desc":""},{"ID":2,"Mute":"","Volume":""}]} +分别返回:{"ret":0,"rid":62,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":62,"ID":2,"data":{"Ret":0}} + +23) 取指定ID窗口播放信息,举例: +取时自动获得全部属性 +请求:{"req":"VLC_GetPlay","rid":63,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":63,"ID":1,"data":{"Ret":0,"IsPlay":1,"ItemCount":3,"CurrentItem":1}} 和 {"ret":0,"rid":63,"ID":2,"data":{"Ret":0,"IsPlay":1,"ItemCount":5,"CurrentItem":2}} + +24) 指定ID窗口添加播放内容,举例: +Uri需要进行UrlEncode编码,Option可不设置用缺省值 +请求:{"req":"VLC_AddPlay","rid":64,"para":[{"ID":1,"Uri":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream","Name":"test","Option":":network-caching=300"},{"ID":2,"Uri":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream","Name":"test","Option":":rtsp-tcp"}]} +分别返回:{"ret":0,"rid":64,"ID":1,"data":{"Ret":0,"Item":1}} 和 {"ret":0,"rid":64,"ID":2,"data":{"Ret":0,"Item":2}} + +25) 指定ID窗口播放(指定多媒体),举例: +ItemId是序号,可缺省 +请求:{"req":"VLC_Play","rid":65,"para":[{"ID":1,"ItemId":1},{"ID":2}]} +分别返回:{"ret":0,"rid":65,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":65,"ID":2,"data":{"Ret":0}} + +26) 控制指定ID窗口播放器,举例: +Type可以是这些值:Pause,Play,Stop,StopAsync,Next,Prev,Clear,TogglePause +请求:{"req":"VLC_Control","rid":66,"para":[{"ID":1,"Type":"Pause"},{"ID":2,"Type":"Play"}]} +分别返回:{"ret":0,"rid":66,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":66,"ID":2,"data":{"Ret":0}} + +27) 指定ID窗口移除多媒体内容,举例: +ItemId是当前已存在的序号 +请求:{"req":"VLC_RemoveItem","rid":67,"para":[{"ID":1,"ItemId":1},{"ID":2,"ItemId":2}]} +分别返回:{"ret":0,"rid":67,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":67,"ID":2,"data":{"Ret":0}} + +28) 指定ID窗口解析选项,举例: +请求:{"req":"VLC_Parse","rid":68,"para":[{"ID":1,"Option":"","Timeout":0},{"ID":2,,"Option":"","Timeout":0}]} +分别返回:{"ret":0,"rid":68,"ID":1,"data":{"Ret":0,"Status":0}} 和 {"ret":0,"rid":68,"ID":2,"data":{"Ret":0,"Status":0}} + +29) 取指定ID窗口SubTitle信息,举例: +NameID指定时获取描述信息 +请求:{"req":"VLC_GetSubTitle","rid":69,"para":[{"ID":1,"NameID":0},{"ID":2}]} +分别返回:{"ret":0,"rid":69,"ID":1,"data":{"Ret":0,"Spu":1,"SpuNumber":0,"Desc":""}} 和 {"ret":0,"rid":69,"ID":2,"data":{"Ret":0,"Spu":1,"SpuNumber":0}} + +30) 设置指定ID窗口SubTitleSpu,举例: +请求:{"req":"VLC_PutSubTitle","rid":70,"para":[{"ID":1,"Spu":0},{"ID":2,"Spu":0}]} +分别返回:{"ret":0,"rid":70,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":70,"ID":2,"data":{"Ret":0}} + +31) 取指定ID窗口视频信息,举例: +TrackID指定时获取描述信息 +请求:{"req":"VLC_VideoGet","rid":71,"para":[{"ID":1,"TrackID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":71,"ID":1,"data":{"Ret":0,"FullScreent":0,"Width":0,"Height":0,"SubTitle":0,"Track":0,"TrackCount":0,"TeleText":0,"Scale":100,"AspectRatio":"","Crop":"","Desc":""}} 和 {"ret":0,"rid":71,"ID":2,"data":{"Ret":0,"Width":0,"Height":0,"SubTitle":0,"Track":0,"TrackCount":0,"TeleText":0,"Scale":100,"AspectRatio":"","Crop":""}} + +32) 设置指定ID窗口视频信息,举例: +需要的才设置 +请求:{"req":"VLC_VideoPut","rid":72,"para":[{"ID":1,"FullScreen":1,"Scale":100,"AspectRatio":0,"SubTitle":0,"TeleText":0,"Track":0},{"ID":2,"FullScreen":0}]} +分别返回:{"ret":0,"rid":72,"data":{"Ret":0}} 和 {"ret":0,"rid":72,"ID":2,"data":{"Ret":0}} + +33) 切换指定ID窗口视频全屏,举例: +请求:{"req":"VLC_VideoToggleFullscreen","rid":73,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":73,"data":{"Ret":0}} 和 {"ret":0,"rid":73,"ID":2,"data":{"Ret":0}} + +34) 切换指定ID窗口视频图文,举例: +请求:{"req":"VLC_VideoToggleTeletext","rid":74,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":74,"data":{"Ret":0}} 和 {"ret":0,"rid":74,"ID":2,"data":{"Ret":0}} + +35) 取指定ID窗口字幕信息,举例: +Text指定时获取文字信息 Position指定时获取位置信息 +请求:{"req":"VLC_MarqueeGet","rid":75,"para":[{"ID":1,"Text":1,"Position":1},{"ID":2}]} +分别返回:{"ret":0,"rid":75,"ID":1,"data":{"Ret":0,"Color":0,"Opacity":0,"Refresh":0,"Size":0,"Timeout":0,"X":0,"Y":"","Text":"","Position":""}} 和 {"ret":0,"rid":75,"ID":2,"data":{"Ret":0,"Color":0,"Opacity":0,"Refresh":0,"Size":0,"Timeout":0,"X":0,"Y":""}} + +36) 设置指定ID窗口字幕信息,举例: +需要的才设置 +请求:{"req":"VLC_MarqueePut","rid":76,"para":[{"ID":1,"Text":"Hello","Position":"","Color":0,"Opacity":0,"Refresh":0,"Size":0,"X":0,"Y":0},{"ID":2,"Opacity":50}]} +分别返回:{"ret":0,"rid":76,"data":{"Ret":0}} 和 {"ret":0,"rid":76,"ID":2,"data":{"Ret":0}} + +37) 控制指定ID窗口字幕,举例: +请求:{"req":"VLC_MarqueeControl","rid":77,"para":[{"ID":1,"Enable":1},{"ID":2,"Enable":0}]} +分别返回:{"ret":0,"rid":77,"data":{"Ret":0}} 和 {"ret":0,"rid":77,"ID":2,"data":{"Ret":0}} + +38) 指定ID窗口帧速控制工具,举例: +Mode为空时禁用 +请求:{"req":"VLC_DeinterlaceControl","rid":78,"para":[{"ID":1,"Mode":"my_mode"},{"ID":2,"Mode":""}]} +分别返回:{"ret":0,"rid":78,"data":{"Ret":0}} 和 {"ret":0,"rid":78,"ID":2,"data":{"Ret":0}} + +39) 动态改变分屏数量或播放内容 +ShowType指定分屏数量,如果不变就不设置 +Play重新指定播放内容 +请求范例1:{"req":"VLC_ChangePlay","rid":79,"para":{"ShowType":2}} +请求范例2:{"req":"VLC_ChangePlay","rid":79,"para":{"Play":[{"ID":1,"Uri":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream","Name":"BrowserApplet1","Option":":rtsp-tcp"},{"ID":2,"Uri":"http://www.zorrosoft.com/Files/PluginOKBrowserApplet.mp4","Name":"BrowserApplet2","Option":":file-caching=300"}]}} +请求范例3:{"req":"VLC_ChangePlay","rid":79,"para":{"ShowType":3,"Play":[{"ID":1,"Uri":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream","Name":"BrowserApplet1","Option":":network-caching=300"},{"ID":2,"Uri":"http://www.zorrosoft.com/Files/PluginOKBrowserApplet.mp4","Name":"BrowserApplet2","Option":":file-caching=400"},{"ID":3,"Uri":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream","Name":"BrowserApplet3","Option":":rtsp-tcp"}]}} +分别返回:{"ret":0,"rid":80,"data":{"Ret":0,"Play":[]}} + +40) 设置当前焦点播放窗口 +ID是当前播放窗口序号,ID是从1开始,需要确保不越界 +{"req":"VLC_SetSelect","rid":80,"para":{"ID":2}} +返回:{"ret":0,"rid":80,"ID":2,"data":{"Ret":1}} + +41) 获取当前焦点播放窗口序号 +{"req":"VLC_GetSelect","rid":81,"para":{}} +返回:{"ret":0,"rid":81,"ID":2,"data":{"Ret":1}} +ID为当前播放焦点窗口 + +42) 指定ID窗口截图 +Type 指定图像类型,默认4(PNG) 可指定1(BMP)、3(JPG) +Count截取图数量,默认截取一张,Delay指定延迟毫秒数开始,Interval多张时间隔毫秒数 +多窗口播放情况下,只能指定某个窗口截图,不能同时指定多个窗口 +请求:{"req":"VLC_VideoSnapshot","rid":82,"para":[{"ID":1,"Type":4,"Count":3,"Delay":1000,"Interval":200}]} +分别返回:{"ret":0,"rid":82,"data":{"Ret":0,"Img":[{"Size":0,"Width":0,"Height":0,"File":""}]}} 和 {"ret":0,"rid":80,"ID":2,"data":{"Ret":0,,"Img":[{"Size":0,"Width":0,"Height":0,"File":""}]}} + +43) 设置RTSP流网络方式,HTTP还是TCP +{"req":"VLC_SetRtspTcp","rid":83,"para":{"Tcp":1}} +返回:{"ret":0,"rid":83,"data":{"Ret":1}} + +44) 获取RTSP流网络方式,HTTP还是TCP +{"req":"VLC_GetRtspTcp","rid":84,"para":{}} +返回:{"ret":0,"rid":84,"data":{"Tcp":1}} + +45) 请求退出当前连接的小程序 +{"req":"VLC_Exit","rid":85,"para":{}} + +5、VLC多媒体播放网页小程序接收的通知: +这些通知必须使用Web Socket连接到此小程序实际侦听的端口才能接收到。 +A、ActiveX事件: + +1) Idle state +{"event":"VLC_MediaPlayerNothingSpeciale","ID":1,"data":{}} + +2) Opening media +{"event":"VLC_MediaPlayerOpening","ID":1,"data":{}} + +3) Buffering media +{"event":"VLC_MediaPlayerBuffering","ID":1,"data":{"cache":0}} + +4) Media is playing +{"event":"VLC_MediaPlayerPlaying","ID":1,"data":{}} + +5) Media is paused +{"event":"VLC_MediaPlayerPaused","ID":1,"data":{}} + +6) Forward playback +{"event":"VLC_MediaPlayerForward","ID":1,"data":{}} + +7) Backward playback +{"event":"VLC_MediaPlayerBackward","ID":1,"data":{}} + +8) An error has been encountered +{"event":"VLC_MediaPlayerEncounteredError","ID":1,"data":{}} + +9) End of playback reached +{"event":"VLC_MediaPlayerEndReached","ID":1,"data":{}} + +10) Playback stopped +{"event":"VLC_MediaPlayerStopped","ID":1,"data":{}} + +11) Playback stop async done +{"event":"VLC_MediaPlayerStopAsyncDone","ID":1,"data":{}} + +12) Seek changed +{"event":"VLC_MediaPlayerSeekableChanged","ID":1,"data":{"seekable":0}} + +13) Pause setting changed +{"event":"VLC_MediaPlayerPausableChanged","ID":1,"data":{"pausable":0}} + +14) Media changed +{"event":"VLC_MediaPlayerMediaChanged","ID":1,"data":{}} + +15) Title changed +{"event":"VLC_MediaPlayerTitleChanged","ID":1,"data":{"title":0}} + +16) Length changed +{"event":"VLC_MediaPlayerLengthChanged","ID":1,"data":{"length":0}} + +17) Chapter changed +{"event":"VLC_MediaPlayerChapterChanged","ID":1,"data":{"chapter":0}} + +18) Number of vout changed +{"event":"VLC_MediaPlayerVout","ID":1,"data":{"count":0}} + +19) Audio muted +{"event":"VLC_MediaPlayerMuted","ID":1,"data":{}} + +20) Audio unmuted +{"event":"VLC_MediaPlayerUnmuted","ID":1,"data":{}} + +21) Audio volume changed +{"event":"VLC_MediaPlayerAudioVolume","ID":1,"data":{"volume":0}} + +22) Selected 选中分屏窗口序号通知 +{"event":"VLC_Selected","ID":1,"data":{}} + +23) ToggleFullScreen 选中的分屏窗口切换全屏通知 +{"event":"VLC_ToggleFullScreen","ID":1,"data":{}} + +23) KeyDown +{"event":"VLC_KeyDown","ID":1,"data":{"KeyCode":0,"Shift":0}} + +24) KeyPress +{"event":"VLC_KeyPress","ID":1,"data":{"KeyCode":0}} + +25) KeyUp +{"event":"VLC_KeyUp","ID":1,"data":{"KeyCode":0,"Shift":0}} + +B、PluginOK支持的事件通知: + +1) VLC_FullScreen 小程序是否响应了热键全屏 +{"event":"VLC_FullScreen","data":{"FullScreen":0}} FullScreen为当前是否全屏标记 + +2) Wrl_AppletExit 小程序退出通知 +{"event":"Wrl_AppletExit","data":{"ID":1}} + +6、其它 +请求参数的JSON数据包,请确保是UTF-8无签名的编码。 +更多接口请求说明,请参考安装目录中的文档TestWrl.txt、SDK包中的“PluginOK开发者手册.doc”及“PluginOK中间件安全解决方案”。 +如还有疑问请直接联系客服 加微信:ZorroSoft,或加QQ群:23126938 \ No newline at end of file diff --git a/Net/WPSOfficeApplet.txt b/Net/WPSOfficeApplet.txt new file mode 100644 index 0000000000000000000000000000000000000000..bd83c6010c917a4e8e53d3683476f5b29711a5c4 --- /dev/null +++ b/Net/WPSOfficeApplet.txt @@ -0,0 +1,144 @@ +金山WPS内嵌网页小程序:基于跨浏览器的小程序系统-PluginOK(牛插)中间件( https://github.com/wangzuohuai/WebRunLocal )网络版开发,底层调用金山WPS的VBA接口实现可程序化驱动的网页在线编辑办公控件,可分别将WPS文字、WPS表格、WPS演示软件窗口内嵌到网页指定区域运行并操控。最低可用在Chrome 41、Firefox 52、Edge 80(Chromium内核)、360极速/安全、IE 8、Oprea 36、QQ、搜狗等浏览器,也兼容运行于这些浏览器的最新版本。 + +1、PluginOK(牛插)中间件的安装: +1)、如果是exe的安装程序,请直接运行安装; +2)、如果是绿色版的程序包,请解压到磁盘某个目录后,双击“InstallWrl.bat”进行安装; +3)、安装完成时会启动PluginOK中间件服务,在安装目录下的Data子目录有ZbaService.txt日志文件输出运行情况。 + +2、金山WPS内嵌网页小程序控制相关接口: +说明:以下功能请通过Web Socket连接PluginOK主服务(ws://localhost?sid=12345&flag=1)后可执行,如默认侦听端口不是80(关于如何配置侦听端口,请参考SDK包中的文档“PluginOK开发者手册.doc”),请在连接地址中指定端口号进行连接。 +HTTP在线测试网页:http://local.zorrosoft.com HTTPS在线测试网页:https://local.zorrosoft.com +前端集成可参考以上测试网页进行,HTML网页中需要嵌入以下类似代码; +A、标记小程序的显示位置和大小 +.OfficeApplet { + margin: 20px 0 0 20px; + width: 480px; + height: 320px; + border: 1px solid blue; + } +或者 +.OfficeApplet { + width: 480px; + height: 320px; + top: 20px; + left: 20px; + border: 1px solid blue; + } +B、嵌入 +支持IFrame的: +