写点什么

SAP UI5 barcode 控件的 feature 检查探测机制单步调试 - checkCordovaInIframe

作者:Jerry Wang
  • 2022-11-06
    四川
  • 本文字数:910 字

    阅读完需:约 3 分钟

SAP UI5 barcode 控件的 feature 检查探测机制单步调试 - checkCordovaInIframe

第 170 行 checkCordovaInIframe 是检测 Cordova API 在 iframe 里的可用性,这里可以忽略。



oCordovaScannerAPI 默认为 null.


进入 getFeatureAPI 分支:




这里试图从 cordova.plugins.barcodeScanner 获取 oCordovaScannerAPI.因为我没有安装,所以这个 API 不可用:



进入异常处理函数,进行 getZXingAPI 的 fallback 处理:



Kapsel 是一组插件,可通过简化登录到 SMP 3.0 服务器、OData 调用的离线访问、更新已部署应用程序的能力、加密存储和推送通知等功能来增强 Apache Cordova。


SAP Fiori Client 围绕 Apache Cordova 架构设计,其中设备 API 和自定义功能通过插件添加。


下表显示了 SAP Fiori Client 1.8(iOS、Android 和 Windows)中包含的插件。


如果开发人员使用 SAP Mobile Platform SDK(仅限 iOS 和 Android)随附的 create_fiori_client.js 脚本构建自定义 SAP Fiori 客户端,这些插件会自动添加到项目中。




要在适用于 Windows 10 的自定义 SAP Fiori 客户端中使用 Cordova 插件,您必须在插件和适用于 Windows 10 的自定义 Fiori 客户端之间创建一个 API 桥


在 Windows 上,Cordova 应用程序基本上是一个 HTML5 应用程序。 因此,应用程序没有原生端,并且没有任何东西在 index.html 层下运行。 插件中的 Windows 特定代码是用 JavaScript 编写的,并与跨平台 JavaScript API 作为代理 API 一起初始化。


对于 SAP Fiori 客户端,index.html 页面是本机端容器。它包括 cordova.js 并初始化 Cordova 插件。 index.html 中有一个 webview 元素 (x-ms-webview),它打开了远程 Fiori 应用程序。


index.html 页面和远程 Fiori 应用程序(webview 中的网页)是两个完全不同的上下文,具有不同的 DOM 和 窗口”对。一个上下文无法访问另一个上下文的命名空间。因此,无法直接从 webview 访问本地上下文中先前初始化的插件。


这个问题在其他平台上通过将 cordova.js 注入远程网页(在主原生 web 视图中打开)、初始化 JavaScript Cordova API 并获得对已经初始化的原生端的访问来解决。


在 Windows 上将 Cordova 注入远程 Fiori 应用程序是不可能的,因为出于安全原因,不允许远程页面访问某些 Windows API。这意味着 Fiori 应用程序无法访问任何 Cordova 插件。

发布于: 刚刚阅读数: 3
用户头像

Jerry Wang

关注

🏆InfoQ写作平台-签约作者🏆 2017-12-03 加入

SAP成都研究院开发专家,SAP社区导师,SAP中国技术大使。2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今。工作中使用 ABAP, Java, JavaScript 和 TypeScript 进行开发。

评论

发布
暂无评论
SAP UI5 barcode 控件的 feature 检查探测机制单步调试 - checkCordovaInIframe_JavaScript_Jerry Wang_InfoQ写作社区