如何在html和JS中包含Javascript JS文件终极解决方案

 我来答
过年了259
推荐于2016-01-12 · 超过75用户采纳过TA的回答
知道答主
回答量:147
采纳率:80%
帮助的人:67.5万
展开全部
现在常用的一种javascript的方法是在当前的html文档中插入一个script标签,在标签中引入script脚本Js代码var__includes__=newArray;Array.prototype.indexOf=function(obj){for(vari=0;i<this .length;i++){if(this[i]==obj)returni;}return-1;}Array.prototype.add=function(obj){this[this .length]=obj;}functioninclude_js(js){if(__includes__.indexOf(js)-1)return;__includes__.add(js);varhead=document.getElementsByTagName('head')[0];script=document.createElement('script');script.src=js; script.type= 'text/javascript';head.appendChild(script);} 当你只是在你的htmlw文档中使用这个方法的时候,一切OK,这其实是script的标签的一种快捷的写法而已。 但是,如果你在一个javascript使用这个方法,问题就来了,比如 我在test.js中使用include_js("test1.js"),在test1.js中有一个变量test1是在test.js中要使用 的,在webkit中尽然出现了test1变量未定义的错误,我不知道ie和firefox是否有这种问题,我想可能是include_js本身不是同步 执行导致的,所以我只好使用以下方法来完善inlcude_jsJs代码var__includes__=newArray;Array.prototype.indexOf=function(obj){for(vari=0;i<this .length;i++){if(this[i]==obj)returni;}return-1;}Array.prototype.add=function(obj){this[this .length]=obj;}functionxhttp(url,callback){varrequest=null;if(typeofXMLHttpRequest!= 'undefined'){request=newXMLHttpRequest();}elseif(typeofActiveXObject!= 'undefined'){request=newActiveXObject( 'Microsoft.XMLHTTP');}request.open('GET' ,url, true);request.onreadystatechange=function(){if(request.readyState==4){ callback(request.responseText);}};request.send(null);}functionadd_scripts(jss,callback){varfunc=function(jss,idx,callback){if(idx==jss.length){callback();return};add_script(jss[idx], function(){func(jss,++idx,callback);});}func(jss,0,callback);}functionadd_script(js,callback){if(__includes__.indexOf(js)-1){callback();return;}__includes__.add(js);xhttp(js, function(js_content){varhead=document.getElementsByTagName('head')[0];script=document.createElement('script');head.appendChild(script); // script.innerHTML=js_content; //原帖是这个...本人测试这行..无效 必须用text属性赋值 script.defer=true; script.type='text/javascript';script.language='javascript';//本人测试修正..添加 script.text=js_content;//本人测试修正..添加//zfrong 09.5.20 callback();});}functioninclude_js(js){if(__includes__.indexOf(js)-1)return;__includes__.add(js);varhead=document.getElementsByTagName('head')[0];script=document.createElement('script');script.src=js; script.type= 'text/javascript';head.appendChild(script);}当我在html文档中引入的时候,我用 include_js,当我在js文件中引入js时候,我使用add_scripts,add_scriptJs代码add_scripts(['test1.js', 'test2.js']), add_scripts方法使用了xmlhttp来读入js内容,并把读入的内容的写到一个新的script标签内,读入是异步执行的,当执行完毕后,会调用callback、
cainiaokan
推荐于2016-05-28 · TA获得超过2917个赞
知道小有建树答主
回答量:651
采纳率:66%
帮助的人:603万
展开全部
对于JS文件的加载控制,传统的方式是将JS直接编写到html文件中,或者通过script标记依次引入。这样的问题是页面难以维护,JS文件依赖关系不明确,需要手动保证依赖关系,而且不能实现灵活动态的加载。

目前业内主流的方法是使用JS加载器的方式实施。

常见的加载器有LABjs、RequireJS,国内的还有SeaJs。当然很多规模较大的公司会编写自己的模块加载框架,实现统一的版本控制、缓存、分发策略等等。

对于js文件的加载管理,不得不提到模块化。模块化的优点是可以在JS中确定文件之间的依赖关系,模块内部聚合度高,模块之间耦合度低。避免全局空间命名污染。

对于开发大型的网站来说,JS往往要实现模块化管理,常见的JS模块化规范有CMD、AMD。略有差异。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式