onload在移动端触发顺序问题

问题

地址选择时提供定位功能,并且可以推荐附近地点,搜索位置等。如下图
onload在移动端触发顺序问题_第1张图片
主要就是使用了百度的地图api,引用api的时候多次实践,发现使用官网上的异步加载方法不会出问题。但是等到真机上测试,还是偶发性的出现了地图未加载的情况。。

调试

import { MP } from "../../../map.js";
...
MP(_this.ak).then(BMap => {
        this.createMap();
        this.getSuggestion();
      });

map.js

export function MP(ak) {
  return new Promise(function (resolve, reject) {
    window.onload = function () {
      resolve(BMap))
    }
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = "http://api.map.baidu.com/api?v=2.0&ak=" + ak + "&s=1&callback=init";
    script.onerror = reject;
    document.head.appendChild(script);
  })
}

关键就是onload后的回调事件。在浏览器窗口上运行正常,但是在ios上对onload的触发过早,在下面的baidu api加载完成前就resolve了。

解决

所以就考虑是不是ios有其他替代onload的方法,遗憾的是Google了很久也没发现,暂时只能使用定时器解决问题。

你可能感兴趣的:(VUE前端)