分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

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

发布时间:2023-09-06 01:49责任编辑:白小东关键词: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()。

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

原文地址:https://www.cnblogs.com/aeolian/p/8853882.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved