1,如何动态加载js文件,并且加载完成之后调用其中的函数呢?
- function loadJs(url, callback) {
- var done = false;
- var script = document.createElement('script');
- script.type = 'text/javascript';//do not 'application/javascript',because Low version of the browser is not compatible
- script.language = 'javascript';
- script.charset = "utf-8";
- script.src = url;
- //script.setAttribute('src', url);
- script.onload = script.onreadystatechange = function () {
- if (!done && (!script.readyState || script.readyState == 'loaded' || script.readyState == 'complete')) {
- done = true;
- script.onload = script.onreadystatechange = null;
- if (callback) {
- console.log('load '+url+' success.');
- callback.call(script);
- }
- }
- };
- document.getElementsByTagName("head")[0].appendChild(script);
- };
loadJs 功能:
动态加载js文件,即异步加载js文件,
并且在回调函数中可以调用该js文件中的函数或变量
实例:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title></title>
- <style>
- ul, li {
- /*list-style: outside none none;*/
- list-style-type: none;
- margin-left: 0;
- }
- li label {
- width: 20%;
- float: left; /* It is necessary */
- }
- li.button {
- text-align: center;
- margin-left: -40px;
- }
- input.errorBorder {
- border: solid 1px #ff0000;
- }
- </style>
- <script type="text/javascript" src="page.js" ></script>
- <script type="text/javascript" src="jquery-1.11.1.js" ></script>
- <script type="text/javascript" src="common_util.js" ></script>
- </head>
- <body>
- <form action="">
- <ul style="width: 400px">
- <li>
- <label for="username">用户名</label><input id="username" type="text"/> <span>用户名不能为空</span>
- </li>
- <li>
- <label for="password">密码</label><input id="password" type="text"/>
- </li>
- </ul>
- </form>
- <script type="text/javascript">
- loadJs('jplaceholder.js', function () {
- $('#username').placeholder({
- word: '用户名', color: '#ddd', normalFontColor: '#f00', maxLen: 3, minLen: 2, errorBorderClass: 'errorBorder',
- keyup_callback: function () {
- console.log('keyup_callback');
- },keydown_callback: function () {
- console.log('keydown...');
- }
- });
- $('#password').placeholder({word: '请输入密码', normalFontColor: '#f00', color: '#ddd'}, function () {
- console.log('callback');
- });
- });
- </script>
- </body>
- </html>
相同功能的方法有:
- function loadJS2(url, callback) {
- var script = document.createElement('script');
- script.type = 'text/javascript';
- script.charset = "utf-8";
- if (script.readyState) { // 兼容IE的旧版本
- script.onreadystatechange = function () {
- if (script.readyState == 'loaded' || script.readyState == 'complete') {
- script.onreadystatechange = null;
- callback();
- }
- }
- }
- else {
- script.onload = function () {
- callback();
- }
- }
- script.src = url;
- document.getElementsByTagName('head')[0].appendChild(script);
- }
- function xhrLoadJS(url, callback) {
- var xhr = createXHR();
- xhr.open('get', url, true);
- xhr.onreadystatechange = function () {
- if (xhr.readyState == 4) {
- if (xhr.status >= 200 && xhr.status < 300 || xhr.status == 304/*页面未修改*/) {
- var script = document.createElement('script');
- script.type = 'text/script';
- script.charset = "utf-8";
- script.text = xhr.responseText;
- eval(xhr.responseText); // 执行代码
- document.body.appendChild(script);
- if (callback && typeof callback === 'function') {
- callback();
- }
- }
- }
- };
- xhr.send(null);
- }
- /*获取异步请求的对象*/
- var createXHR = function () {
- try {
- xhr = new XMLHttpRequest();
- return xhr;
- } catch (e) {
- try {
- xhr = new ActiveXObject("Microsoft.XMLHTTP");
- return xhr;
- } catch (ee) {
- xhr = false;
- }
- }
- if (!xhr && typeof XMLHttpRequest != 'undefined') {
- new ActiveXObject("Msxml2.XMLHTTP");
- return xhr;
- }
- };
相关推荐
一个js文件,实现动态加载js文件。在用extjs时,为了避免一次全部加载js文件而写的。
vue动态加载JavaScript:动态的创建Script元素,然后通过更改它的 src 属性来加载脚本,脚本文件加载完成后,在脚本加载完成生效后才能执行回调函数。
动态创建iframe,并动态添加js代码动态创建iframe,并动态添加js代码
本文档把js加载做成vue组件,便于在其他模块引用,符合vue整体思路,供大家参考借鉴
这是动态加载外部JS文件,很不错的例子哦!
Ext4 动态加载js例子 Ext4 动态加载js例子 Ext4 动态加载js例子 Ext4 动态加载js例子
动态加载JS脚本的动态加载JS脚本的动态加载JS动态加载JS脚本的4种方法.doc方法.doc
可以通过extjs3进行动态加载js,也可以直接通过原生js进行调用 拥有extjs4的动态加载功能, 可以同时加载多个js文件, 同时加载过的文件不会重复加载
asp.net动态加载JavaScript树
本例采用ASP.NET MVC3 +EXTJS4 MVC 框架,完美实现了EXTJS4动态加载JS文件,对ASP.NET MVC3及EXTJS4 MVC 各应用要点进行了应用。对于想采用ASP.NET MVC3 +EXTJS4 MVC 框架的学习者有很好的帮助,快速掌握MVC框架,本...
动态加载js文件,让js文件实现用不到绝不加载的功能!
1、动态加载js,css文件(用原生js和jquery) iframe结构: frame0(父) frame2(子) frame3(子) frame2中触发事件,动态的向frame3中 加载js、css文件和 dom元素? *同级之间可以调用,可以 通过 子-父-子 的方式...
【JavaScript】vue动态加载JavaScript 高级JavaScript组件 【实例简介】vue动态加载JavaScript 【JavaScript】vue动态加载JavaScript 高级JavaScript组件
动态加载JS文件和CSS文件,多浏览器支持。多个JS文件同时加载,加载完成后执行回调方法。 使用方法: var loader=new RemoteLoader(); loader.loadFiles(["yy.js","jj.jus"],作用域);
1.如何动态加载js文件。 2.在函数定义无形参名称时,如何向函数传递参数。 add_jsfile.jsh和add_jsfile_1.js的区别: 对js标签的ID名称的命名方法不一样,其他一样。 在函数名中没写参数名, 调用时仍然可以传入...
动态添加js,动态添加表格和删除表格,批量添加记录,批量添加
以下是遇到的几种动态加载JavaScript文件的方式,持续更新中。。。 一、使用[removed]/writeln()方式 该种方式可以实现js文件的动态加载,原理就是在重写文档流,这种方式会导致整个页面重绘。 实现方式: 代码如下...
(1)使用JavaScript动态加载Js文件 /*JavaScript动态加载Js文件*/ var scriptNode = document.createElement('script'); scriptNode.src = 'proxy.js?t='+new Date().getTime();/*附带时间参数,防止缓存*/ ...
javascript、css动态加载工具