Js判断是否联网引入不同js

Js判断是否联网引入不同js

 需求:当百度地图在内网中也能使用。

 分析:js判断是否联网,然后根据联网状态加载不同js。

 失败案例:

1、直接document.write

<script language=”javascript”> 

    document.write(“<script src=’xxx.js’><\/script>”); 

</script>

2、动态改变已有script的src属性

<script src=” id=”s1″></script> 

<script language=”javascript”> 


    s1.src=”xxx.js” 

</script>

3、动态创建script元素

<script> 

    var oHead = document.getElementsByTagName(‘HEAD’).item(0); 
    var oScript= document.createElement(“script”); 
    oScript.type = “text/javascript”; 
    oScript.src=”xxx.js”; 
    oHead.appendChild( oScript); 

</script>

失败原因:这三种方法都是异步执行的,也就是说,在加载这些脚本的同时,主页面的脚本继续运行。导致下面的new BMap.Map()直接报错。正确的思路是用函数回调保证js加载完毕后继续执行后面代码。

正解:

需要js文件:Jquery.js,Ping.js

<script language="javascript">
    $(function(){
       var p = new Ping();
       p.ping("http://api.map.baidu.com", function(err, data) {
             if (err) {  //离线
                $.getScript("http://127.0.0.1:80/bdmap/js/apiv2.0.min.js",function(){  //加载内网js,成功后执行回调函数
                    $("<link>").attr({ rel: "stylesheet",type: "text/css",href: "http://127.0.0.1:80/bdmap/css/bmap.css"}).appendTo("head");   //引入css
                    loadMap();   
                 });  //加载js文件            
             }else{   //在线
                 $.getScript("http://api.map.baidu.com/api?v=2.0&ak=xxxxxxxxx",function(){  //加载在线js,成功后执行回调函数
                     loadMap();
                 });  //加载js文件    
              }
                    
        });
                
     });
</script>

用Ping.js判断是否联网。用Jquery的$.getScript( url [, success(script, textStatus, jqXHR) ] )加载js。如果引入的js和其他js必须按照一定顺序则在$.getScript()回调函数中再执行$.getScript()。

转载于:https://www.cnblogs.com/aeolian/p/8853882.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101718.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 《数字图像处理原理与实践(MATLAB版)》一书之代码Part2[通俗易懂]

    《数字图像处理原理与实践(MATLAB版)》一书之代码Part2

    2022年1月20日
  • Python包管理必备–pip命令&设置镜像源[通俗易懂]

    Python包管理必备–pip命令&设置镜像源[通俗易懂]近期周围很多朋友询问,Python如何管理包和模块,并且很多常用的包使用pip安装的时候,总是因为网络问题中断,在学习新包时造成了很大的挫败感,这些问题也是之前自己在学习过程中,遇到的痛点,所以抽出精力,整理了下之前关于这块的学习笔记,形成文章,希望给其他python道友以帮助,也给自己后续查阅带来方便。Python语言的核心能快速上手并且极具吸引力的是其异常丰富和强大的包,这些包给我们封装好了日常工作中遇到的问题或需求的各种解决方案,所以在python基础知识较为牢固时,遇到具体问题,具体学习对应的包

    2022年5月13日
  • 女神相册密码忘记了,我只用Python写了20行代码

    女神相册密码忘记了,我只用Python写了20行代码​目录一、事情是这样的二、首先回顾一下女神的操作流程三、需要密码打开相册四、python脚本化处理1、基本思路2、解压命令3、解压命令参数分析4、整理7z解压命令5、关门!上python脚本五、找女神去…一、事情是这样的今早上班,公司女神小姐姐说,她去年去三亚旅游的照片打不开了好奇问了一下才知道。原来是,她把照片压缩了,而且还加了密码。但是密码不记得了,只记得是一串6位数字。话说照片压缩率也不高,而且还加密,难道是有什么可爱的小照片.

    2022年5月2日
  • Zotero教程_zotero更改默认浏览器

    Zotero教程_zotero更改默认浏览器论文管理工具Zotero使用教程。

    2022年10月10日
  • Resnet 18网络模型[通俗易懂]

    Resnet 18网络模型[通俗易懂]1.残差网络:(Resnet)残差块:让我们聚焦于神经网络局部:如图左侧所示,假设我们的原始输入为x,而希望学出的理想映射为f(x)(作为上方激活函数的输入)。左图虚线框中的部分需要直接拟合出该映射f(x),而右图虚线框中的部分则需要拟合出残差映射f(x)−x。残差映射在现实中往往更容易优化。以本节开头提到的恒等映射作为我们希望学出的理想映射f(x),我们只需将右图虚线框内上方的加权运算(如仿射)的权重和偏置参数设成0,那么f(x)即为恒等映射。实际中,当理想映射f(x)极接近于恒等映..

    2022年5月25日
  • 迭代器Python_python迭代器使用

    迭代器Python_python迭代器使用迭代器迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。可迭代对象我们已经知道可以对l

    2022年7月31日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号