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

分析: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()。

最新文章

  1. Atitit.研发团队与公司绩效管理的原理概论的attilax总结
  2. 7.6--找过点最多的直线(CC150)
  3. Java多线程-线程的同步与锁
  4. IOS-错误总结
  5. SDUT 3347 数据结构实验之数组三:快速转置
  6. Java封装 properties文件操作
  7. View,viewgroup,viewstub总结
  8. 山东省赛J题:Contest Print Server
  9. No1_8.类和对象2_Java学习笔记_对象
  10. 【翻译】探究Ext JS 5和Sencha Touch的布局系统
  11. Flex报错之二
  12. ES6部分知识点总结
  13. phonegap-plugin-contentsync
  14. python 字符类型
  15. SQL删除指定列的指定长度的字符
  16. C# 将某个方法去异步执行
  17. 实现一个简单的android开关
  18. Swift 开发中,为什么要远离 Heap?
  19. spark 数据倾斜的一些表现
  20. SpringMVC由浅入深day01_9商品修改功能开发

热门文章

  1. Apache配置虚拟主机的三种方法(基于IP、端口、域名)
  2. UVA10026:Shoemaker&#39;s Problem(贪心)
  3. PAT 1151 LCA in a Binary Tree[难][二叉树]
  4. 压力测试工具MySQL mysqlslap
  5. matplotlib中的颜色及线条控制
  6. yii2引入js和css
  7. python3 爬虫神器pyquery的使用实例之爬网站图片
  8. phpMyAdmin的安装配置
  9. BZOJ 5427: 最长上升子序列
  10. typeof instanceof 和 obj.constructor