我的编程空间,编程开发者的网络收藏夹
学习永远不晚

动态加载JavaScript文件的方法有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

动态加载JavaScript文件的方法有哪些

本篇内容介绍了“动态加载JavaScript文件的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

第一种便是利用ajax方式,把script文件代码从背景加载到前台,而后对加载到的内容经过eval()实施代码。第二种是,动静创建一个script标签,配置其class="lazy" data-src属性,经过把script标签插入到页面head来加载js,相当于正在head中写了一个<script class="lazy" data-src="..."></script>,只可是这个script标签是用js动静创建的
比喻说是我们要动静地加载一个callbakc.js,我们就必要多么一个script标签:
代码如下:

复制代码 代码如下:

<script type="text/javascript" class="lazy" data-src="call.js"></script>

如下代码就是如何通过js来创建这个标签(并且加到head中): 
代码如下:

var head= document.getElementsByTagName('head')[0]; var script= document.createElement('script'); script.type= 'text/javascript'; script.class="lazy" data-src= 'call.js'; head.appendChild(script);

当加载完call.js, 我们就要调用其中的方法。不过在header.appendChild(script)之后我们不能马上调用其中的js。因为浏览器是异步加载这个js的,我们不知道他什么时候加载完。然而我们可以通过监听事件的办法来判断helper.js是否加载完成。(假设call.js中有一个callback方法) 代码如下:

var head= document.getElementsByTagName('head')[0]; var script= document.createElement('script'); script.type= 'text/javascript'; script.onreadystatechange= function () { if (this.readyState == 'complete') callback(); } script.onload= function(){ callback(); } script.class="lazy" data-src= 'helper.js'; head.appendChild(script);

我设了2个事件监听函数, 因为在ie中使用onreadystatechange, 而gecko,webkit 浏览器和opera都支持onload。事实上this.readyState == 'complete'并不能工作的很好,理论上状态的变化是如下步骤:
1.uninitialized
2.loading
3.loaded
4.interactive
5.complete
但是有些状态会被跳过。根据经验在ie7中,只能获得loaded和completed中的一个,不能都出现,原因也许是对判断是不是从cache中读取影响了状态的变化,也可能是其他原因。最好把判断条件改成this.readyState == 'loaded' || this.readyState == 'complete'

参考jQuery的实现我们最后实现为: 代码如下: 

var head= document.getElementsByTagName('head')[0]; var script= document.createElement('script'); script.type= 'text/javascript'; script.onload = script.onreadystatechange = function() { if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete" ) { help(); // Handle memory leak in IE script.onload = script.onreadystatechange = null; } }; script.class="lazy" data-src= 'helper.js'; head.appendChild(script);

还有一种简单的情况就是可以把help()的调用写在helper.js的最后,那么可以保证在helper.js在加载完后能自动调用help(),当然最后还要能这样是不是适合你的应用。

另外需要注意:

因为script标签的class="lazy" data-src可以跨域访问资源,所以这种方法可以模拟ajax,解决ajax跨域访问的问题。
2.如果用ajax返回的html代码中包含script,则直接用innerHTML插入到dom中是不能使html中的script起作用的。粗略的看了下jQuery().html(html)的原代码,jQuery也是先解析传入的参数,剥离其中的script代码,动态创建script标签,所用jQuery的html方法添加进dom的html如果包含script是可以执行的。如:  

jQuery("#content").html("<script>alert('aa');<\/script>");

“动态加载JavaScript文件的方法有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

动态加载JavaScript文件的方法有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

动态加载JavaScript文件的方法有哪些

本篇内容介绍了“动态加载JavaScript文件的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!第一种便是利用ajax方式,把sc
2023-07-04

java动态加载的好处有哪些

Java动态加载的好处有以下几点:1. 节省内存和系统资源:动态加载可以在程序运行过程中根据需要加载类或资源,避免一次性加载所有类和资源,从而节省了内存和系统资源。2. 提高灵活性和可扩展性:动态加载可以根据配置文件、用户输入等动态地加载类
2023-09-09

php实现自动加载的方法有哪些

本篇内容主要讲解“php实现自动加载的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php实现自动加载的方法有哪些”吧!1、__autoload()方法,一个项目只能有一个__auto
2023-06-20

PHP中的类自动加载相关文件有哪些

本文小编为大家详细介绍“PHP中的类自动加载相关文件有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“PHP中的类自动加载相关文件有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。PHP 中类自动加载相关文
2023-07-04

Linux下文件加密的方法有哪些

这篇文章主要介绍“Linux下文件加密的方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Linux下文件加密的方法有哪些”文章能帮助大家解决问题。方法一:gzexe加密这种加密方式不是非常保
2023-06-27

JavaScript实用的图片懒加载优化方法有哪些

这篇文章主要介绍了JavaScript实用的图片懒加载优化方法有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、方法一重点:1.getBoundingClientRec
2023-06-29

c语言加密文件的方法有哪些

在C语言中,可以使用以下几种方法来加密文件:1. 替换字符:将文件中的每个字符替换为另一个字符,可以是按照一定的规则进行替换,也可以是根据一个密钥进行替换。2. 位移加密:将文件中的每个字符向右或向左进行位移,位移的大小可以是固定的,也可以
2023-08-31

Linux系统文件加密的方法有哪些

本篇内容介绍了“Linux系统文件加密的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!方法一:gzexe加密 这种加密方式不是非常
2023-06-28

java实现动态编译并动态加载的方法

小编给大家分享一下java实现动态编译并动态加载的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在D盘test目录下有个java文件:AlTest.javap
2023-06-14

LINQ动态查询的方法有哪些

本篇内容介绍了“LINQ动态查询的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在LINQ动态查询中,Lambda表达式是许多标准
2023-06-17

jdbc加载数据库驱动程序的方法有哪些

加载数据库驱动程序的方法有以下几种:1. 使用Class.forName()方法加载驱动程序: ```java Class.forName("com.mysql.jdbc.Driver"); ```2. 使用DriverMana
2023-08-11

python动态加载包的方法小结

本文实例总结了python动态加载包的方法。分享给大家供大家参考,具体如下: 动态加载模块有三种方法 1. 使用系统函数__import_()stringmodule = __import__('string')2. 使用imp 模块imp
2022-06-04

redis动态分页的方法有哪些

Redis是一个内存数据库,不支持动态分页。它是一个键值存储系统,可以通过键获取对应的值,而不支持直接根据某个值进行分页操作。但是可以通过一些技巧来实现动态分页的效果,下面是一些常见的方法:1. 使用有序集合(Sorted Set):将需要
2023-08-24

Java下载文件的方式有哪些

这篇文章给大家分享的是有关Java下载文件的方式有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.以流的方式下载public HttpServletResponse download(String path
2023-06-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录