iOS平台怎么重新执行index.html里的script脚本?

一个hybird项目;index.html的head标签里包含一个scrip标签如下:

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=密钥"></script>

脚本内容:

(function() {
    window.BMap_loadScriptTime = (new Date).getTime();
    document.write('<script type="text/javascript" src="http://api.map.baidu.com/getscript?v=2.0&ak=密钥&services=&t=20230104104957"></script>');
})();

有网络权限的情况下,它还会自动加载上面的其他脚本。
问题就在于iOS平台首次运行的时候会询问网络权限,用户确认的时间晚于整个App的加载了,index文件下的外部脚本都是获取失败的。我尝试在获取网络权限之后自己创建script标签去加载:

    // 动态导入script
    importScript(src: string) {
        var script: HTMLScriptElement = document.createElement("script");
        script.src = src;
        script.type = 'text/javascript'
        
        var topScript: HTMLScriptElement = document.getElementsByTagName("script")[0];
        topScript.parentNode.insertBefore(script, topScript);
    }

虽然能加载第一个脚本成功,但它不会执行脚本里包含的代码,也就无法加载它关联的其他脚本了。因为那是个动态内容,我也无法写死。

阅读 1.5k
1 个回答

刷新一下页面就好了。

或者写一个钩子,用户确认授权你只通过 JSBridge 调用一下对应的函数去 append 添加这句代码:
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=密钥"></script>

推荐问题