依赖资源

OneTalk:默认路径  js/onetalk.js  下载

动态加载:

OneTalk发布库:window._ot_release,默认路径  js/onetalk.rel.js  下载

jQuery:window._ot_jquery,默认路径  js/jquery.min.js  下载

jQuery.json:window._ot_jquery_json,默认路径  js/jquery.json.min.js  下载

UI容器:window._ot_container,默认路径  js/container.js  下载

OneTalk开发库:window._ot_develop,默认路径  js/onetalk.dev.js  下载

DingTalk适配库:window._ot_dingtalk,默认路径  js/onetalk.dt.js  下载

DingTalk桥接库:window._ot_dingtalk_wv,默认路径  js/web-view.js  下载

WeiXin适配库:window._ot_weixin,默认路径  js/onetalk.wx.js  下载

iPhone适配库:window._ot_iphone,默认路径  js/onetalk.ip.js  下载

鸿蒙适配库:window._ot_hms,默认路径  js/onetalk.hms.js  下载

专有钉钉适配库:window._ot_dg,*默认路径  js/onetalk.dg.js  下载

企业微信适配库:window._ot_qy,*默认路径  js/onetalk.qy.js  下载

京办适配库:window._ot_jzb,*默认路径  js/onetalk.jzb.js  下载

协作白板适配库(废弃):window._ot_wb,*默认路径  js/onetalk.wb.js  下载

政务微信适配库(废弃):window._ot_mp,*默认路径  js/onetalk.mp.js  下载

桌面版适配库:window._ot_pc,*默认路径  js/onetalk.pc.js  下载

融合指挥终端适配库:window._ot_rz,*默认路径  js/onetalk.rz.js  下载

水印工具:window._ot_watermark,*默认路径  js/watermark.js  下载

兼容主库:window._ot_suite_compat,*默认路径  js/suite.compat.js  下载

身份和访问管理:window._ot_suite_iam,*默认路径  js/suite.iam.js  下载

鸿蒙身份和访问管理:window._ot_suite_iam_hms,*默认路径  js/suite.iam.hms.js  下载

业务接口插件:window._ot_biz,*默认路径  js/onetalk.biz.js  下载

注意事项:
1、您只需要在页面引入OneTalk的脚本(onetalk.js),其它依赖会根据所在环境动态加载。
2、您可以查看OneTalk发布库的脚本(onetalk.rel.js),里面包含全部接口的调用说明。

演示代码(下载脚本,已废弃):

<script type="text/javascript" src="js/onetalk.js"></script>

以上脚本需要全部放到目标服务器,且不能压缩在一起。每个脚本都能通过链接独立下载。若脚本不在默认路径(跟引入脚本同级目录),则需要配置对应路径的全局变量。这个功能从2022.05.24号版本开始废弃。

演示代码(在线脚本,推荐):

<script type="text/javascript" src="https://cdn.zaiyaa.com/cdn/apps/onetalk/third/js/onetalk.js"></script>

若需要改变在线脚本基础路径,可以在引入脚本前,配置“window._ot_modules_base”全局变量或者使用其它路径下的脚本。例如:

<script type="text/javascript" src="https://www.iot2ai.top/onetalk/third/onetalk.js"></script>

以上改变在线脚本基础路径方式,等价于配置全局变量:

window._ot_modules_base="https://www.iot2ai.top/onetalk/third/";

引用说明:

您可以点击上面链接,打开代码编辑器,查看源码内容。在编辑器里面,同时按下“Alt-H”可以查看更多帮助信息。该编辑器提供简单的代码编辑和查看功能。目前支持的文件类型:HTML  Javascript  CSS  JSON  Shell
您可以点击“下载”按钮,打开源文件。该地址也是可以直接在线引用的地址。若您不想下载全部脚本到您的服务器,可以使用“下载”的链接地址作为引用地址。
以上“默认路径”前面携带*号的脚本,默认引用在线地址。您不用下载这些脚本到本地并配置新路径。为了统一脚本资源和减少配置选项,后续也将以在线地址为主。在线依赖配置方式可参考这个页面(查看源码)开发。

接口初始

页面引入OneTalk的脚本(onetalk.js)后,其实不会执行加载和初始逻辑,而是需要您手动启动初始逻辑。框架的初始接口是$c.init。执行初始接口后,其它依赖会按需加载,并在全部依赖准备完毕后,触发成功回调。

演示代码:

$c.init(function () { // 初始成功回调 });
特殊定制

若您在服务器放置的依赖脚本不是在默认路径(跟引入脚本同级目录),则需要您引入脚本前初始相关全局变量。变量名请参考以上说明。这个功能从2022.05.24号版本开始废弃。

若您项目不是静态引入OneTalk的脚本(onetalk.js),则需要动态配置。动态配置后,需要启动自动初始逻辑。这时,初始的成功回调需要配置到全局变量。注意,初始回调在OneTalk的脚本(onetalk.js)加载后就会注册,之后再配置也无法生效!若您无法决定这个回调时机,请再权衡其它适配方案。若是一些手动触发的接口,一般接口已经加载完毕,这时可以忽略检测(虽然小概率存在脚本准备晚于点击)。若是页面加载后立即执行的接口,大部分浏览器内核能够保证全部依赖加载后才触发结束回调,但并不能保证完全正确!所以,这部分代码为了安全,建议增加window.OneTalk存在判断。

框架对返回键的历史记录有特殊控制。在严格模式下(默认),只有页面刷新才会加入历史。若页面只是刷新锚点,则不会记录访问历史。这时点击返回键也无法返回上一个锚点。若您不想对历史记录进行特殊处理,可以关闭严格模式。您可以配置“window._ot_strict_back_count”全局变量,框架初始后会直接关闭严格模式。也可以在框架初始后,调用“OneTalk.lockTitleBack(strict)”关闭严格模式。关闭严格模式的参数,可以选择一个较大数值,例如1000。该数值可以间接让返回计数器无效,从而达到关闭严格模式的作用。这个功能从2022.08.26号版本开始默认关闭严格模式。

默认iPhone支持滑动返回。若页面需要全方位触摸事件,例如地图,则需要调用“window.$w.setSmoothEventFlag(false)”接口关闭滑动返回功能。您也可以配置“window._ot_disable_smooth=true”全局变量,框架初始后会直接关闭滑动返回。注意,该接口只有iPhone支持,若想调用该接口,则需要检查接口是否存在!若是配置全局变量,则框架会自动检测,不会影响其它功能(推荐使用该方式)。这个功能从2019.11.29号版本开始支持。

演示代码:

// 锁定标题栏返回按钮(默认不锁定) //window._ot_lock_title_back = true; // 关闭严格历史检查机制(默认开启) //window._ot_strict_back_count = 1000; // 关闭右滑快捷返回功能(默认开启) //window._ot_disable_quick = true; // 关闭iPhone右滑返回功能(默认开启) //window._ot_disable_smooth = true; // 自动初始 window._ot_auto_init = true; // 自动初始成功回调 //window._ot_auto_success = null; // 自动初始错误回调 //window._ot_auto_error = null; // 自动初始按钮配置 //window._ot_auto_buttons = null; // 脚本路径 var scriptSrc = 'https://cdn.zaiyaa.com/cdn/apps/onetalk/third/js/onetalk.js'; // 动态引入 var script = document.createElement('script'); script.src = scriptSrc; document.body.appendChild(script);

成功回调:

// 若您使用自动初始,则需要配置全局的成功回调来处理成功后的操作 // 注意,不要同时使用自动初始和手动初始! // 为了减少业务代码的暴露,建议使用Promise创建一个全局延迟对象 // 而业务代码使用全局延迟对象来处理成功后的操作 window._ot_auto_promise = new Promise(function (resolve, reject) { window._ot_auto_success = function () { resolve(); }; window._ot_auto_error = function () { reject(); }; }); // 业务代码使用全局延迟对象处理相关业务 window._ot_auto_promise.then(function () { // 成功时的业务逻辑 }).catch(function () { // 失败时的业务逻辑 });
其它说明

若需要对特定适配环境进行处理,可以使用以下变量作为判断依据:
window._ot_fit_develop:开发环境
window._ot_fit_dingtalk:钉钉小程序
window._ot_fit_weixin:微信小程序
window._ot_fit_dg:专有钉钉
window._ot_fit_qy:企业微信
window._ot_fit_jzb:京办
window._ot_fit_mp:政务微信(废弃)
window._ot_fit_wb:协作白板(废弃)
window._ot_fit_pc:桌面版
window._ot_fit_rz:融合指挥终端
window._ot_fit_iphone:苹果环境
window._ot_fit_hms:鸿蒙环境
window.CoreView:安卓环境

默认点击标题栏的返回按钮,会关闭页面。默认点击返回键,会返回上一级历史记录,直到没有更多历史时关闭页面。若您想对这些逻辑进行定制,需要自己维护返回键的处理栈。若您锁定标题栏的返回按钮,则标题栏的点击事件都会转化成返回键事件。通过$c.open接口可以加入返回键拦截,通过$c.close接口可以移除返回键拦截。以上接口的功能遵循标准的入栈和出栈操作。例如,打开一个子页面,执行入栈,关闭一个子页面,执行出栈(可配置事件执行后,自动出栈)。

演示代码:

// 增加返回键拦截且回调结束后自动关闭 // 这段代码可以添加在新增路由的代码前面 $c.open({ func: function () { // 点击返回键的回调 // 一般执行路由返回以显示上一个页面 // 若配置autoClose=true,则执行结束后会自动调用$c.close() // 否则您需要根据情况决定是否关闭当前拦截 }, autoClose: true });
变量冲突

页面在开发过程中,推荐把变量定义在函数内(局部变量),或者使用唯一的全局变量来统一暴露的接口和属性。页面(包括引用的组件)定义的全局变量可能跟框架的全局变量冲突,而这会导致脚本运行异常。例如,uni-h5全局函数getApp()跟框架的一个函数重名。若页面的函数优先添加,则框架会覆盖掉已有的函数,这就导致页面运行错误。若无法改变这些冲突的全局变量,可用使用以下方式来避免覆盖。

演示代码:

// 修复uni-h5全局函数getApp()被覆盖引发的异常!! // 以下修复代码已内置,不需要独立添加 // 重新定义属性并重写设置时的覆盖操作 try { // 备份冲突的变量到新的变量 if (window.getApp) { window._getApp = window.getApp; delete(window.getApp); } // 重新定义属性,返回正确的引用 Object.defineProperty(window, 'getApp', { get: function () { return window._getApp; }, set: function (v) { // 应用内置的代码都包含“CoreView”这个关键字,若源码存在这个,就忽略该引用 // 其它内置代码也可以通过这种方法判断 if (v.toString().indexOf('CoreView') === -1) { window._getApp = v; } }, configurable: true }); } catch(e){ // 覆盖变量失败,可能该变量是不可改的!! console.warn('we cannot rescue getApp(), it will be overridden!!'); }
唤醒事件

页面可以使用标准的“visibilitychange”事件监听窗口可见和不可见的状态。一般,应用退到后台,窗口状态切换为不可见,回到前台,窗口状态切换为可见。对于添加在首页的网页组件,应用还会触发特殊回调“onWidgetActive”。只要包含该组件的首页标签显示,该回调就会触发。页面可以根据实际需求,在相关事件或回调里面控制刷新逻辑。另外,窗口的可见事件在一些框架,例如vue里面也有定义,可以直接使用。

演示代码:

// 窗口的可见事件,即前台和后台切换事件 document.addEventListener("visibilitychange", function () { // document.hidden是boolean类型,表示窗口是否隐藏(退到后台) // document.visibilityState是string类型,表示窗口显示状态。“hidden”表示不可见(退到后台),“visible”表示可见(回到前台) }); // 首页网页组件唤醒时的特殊回调 window.onWidgetActive = function () { // 处理唤醒逻辑 }