首页前端开发HTMLHtml5同时支持多端sdk的小技巧

Html5同时支持多端sdk的小技巧

时间2024-01-25 09:13:24发布访客分类HTML浏览769
导读:收集整理的这篇文章主要介绍了Html5同时支持多端sdk的小技巧,觉得挺不错的,现在分享给大家,也给大家做个参考。 需求在实际项目中,我们通常会需要做一些跨多平台的页面。比如说一个活动页面,需要在微信小程序里展示,也需要在自家公司...
收集整理的这篇文章主要介绍了Html5同时支持多端sdk的小技巧,觉得挺不错的,现在分享给大家,也给大家做个参考。

需求

在实际项目中,我们通常会需要做一些跨多平台的页面。比如说一个活动页面,需要在微信小程序里展示,也需要在自家公司的app里面展示,还需要在支付宝等平台里面展示。这时候一个h5就是很符合你的需要了。如果这个时候需求再复杂一些,比如说在这个活动页面需要调些扫码功能,或者需要调起支付功能,等原生方法调用的需求,那么这个时候你需要一个中间件,来处理不同端的原生方法。

中间件实现原理

原理很简单,我们在抽象出来一个类,在这类里面,我们将需要用到原生的方法进行实现,其他终端对这个类进行继承并重写所有的方法。

@H_126_8@

偷懒的话,可以不要pc调试类,直接在父类实现pc调试类里的所有方法。
实现完了,接下来就是调用了,如果在每个页面都判断终端是哪端就太麻烦了,并且也没有必要把每端的中间件代码都加载进来(可以使用require进行异步加载)。在页面加载的过程中,根据判断创建对应终端的中间件对象addon,并将这个中间件对象挂载到window上面,在使用时候就可以直接使用window.addon.scan()

注意点

微信、支付宝都有其对应的判断方法,但自家app的判断, 需要原生开发在userAgent里面添加标识(这个不复杂,原生都知道怎么加,不知道的请问度娘)
另外ios webview不再支持同步方法,建议所有的方法采用异步调用方式, 参考示例。

上代码

下面上一段我的判断各端的代码

class Addon {
  constructor () {
    let ua = window.navigator.userAgent.toLowerCase()    if (/MPBank/.test(window.navigator.userAgent)) {
      // 招商行小程序          }
 else if (ua.match(/Micromessenger/i) == 'micromessenger') {
      // 大部分手机可采用此判断,是否是小程序,但有小部分华为等手机因为加载慢,这里会出现误判      if (window.__wxjs_environment === 'miniPRogram' || ua.match(/miniprogram/i) == 'miniprogram') {
              }
 else {
              }
    }
 else if (/AlipayClient/.test(window.navigator.userAgent)) {
      // 此处用ua和miniprogram判断,先查看兼容性,使用My.getEnv为异步,不适合此处      if (ua.match(/miniprogram/i) == 'miniprogram' || ua.match(/webview/i) == 'webview') {
        // 支付宝小程序              }
 else {
        // 支付宝              }
    }
 else if (/xxxx-app/.test(window.navigator.userAgent)) {
      // app          }
 else {
      // 其他处理(web和第三方渠道进入) 兜底          }
}
    export let addon = new Addon()

下面是一个简单的方法示例
ParentAddon.js

export default class ParentAddon {
     scan (data) {
         data.success('xxx')     }
}
    

IosAppAddon.js

export default class IosAppAddon extends ParentAddon {
    scan (data) {
        window.scanCallback = data.success        window.webkit.messageHandlers.scan.postMessage({
          callBack: 'scanCallback'        }
)     }
}
    

到此这篇关于HtML5同时支持多端sdk的小技巧的文章就介绍到这了,更多相关Html5多端sdk内容请搜索以前的文章或继续浏览下面的相关文章,希望大家以后多多支持!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: html5教程-HTML5本地存储 Web St...下一篇:前端监听websocket消息并实时弹出...猜你在找的html5相关文章 关于移动端h5开发相关内容总结2022-05-17html5教程-学表单的第二天2018-12-10html5教程-HTML5浏览器支持2018-12-10html5教程-HTML5智能表单2018-12-10html5教程-微信H5使用resLoader实现加载页效果2018-12-10html5教程-day01-初级-JS0-热身运动JS入门教程2018-12-10html5教程-html5shiv.js和respond.min.js2018-12-10html5教程-不同浏览器对于html5 audio标签和音频格式的兼容性2018-12-10html5教程-使用Html5实现手风琴案例2018-12-10html5教程-html5笔记2018-12-10 其他相关热搜词更多phpjavapython程序员load

若转载请注明出处: Html5同时支持多端sdk的小技巧
本文地址: https://pptw.com/jishu/586357.html
基于HTML十秒做出淘宝页面 HTML5实战与剖析之媒体元素(2、媒体元素的属性)

游客 回复需填写必要信息