js jquery载入页面不了

博客访问: 2350549
博文数量: 569
博客积分: 13360
博客等级: 上将
技术积分: 5520
注册时间:
APP发帖 享双倍积分
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: JavaScript
转载:http://blog.csdn.net/aitangyong/article/details/?utm_source=tuicool
requireJS支持JS模块化,也能够实现在同一个HTML/JSP页面加载不同版本的模块。这个特性太棒了,下面我们看下如何加载多个版本的jquery。假设在HTML页面中,data-main属性入口文件是main.js,文件存放的目录结构如下:
require.js
&&& demo1.js
&&&&demo2.js
&&&&&&&& jquery-1.10.2.js
&&&&&&&& jquery-2.1.1.js
我们在main.js编写如下代码:
[javascript]&
通过这种多context的方式,能够实现多版本的模块共存。但是随之而来也导致了2个问题:
1、如果不同context加载的模块相同,版本相同(同一个js文件),会怎么样呢?这个js文件会下载多次吗?
结论:通过httpwatch观察,如果不同的context加载同1个js文件,那么这个js文件会下载多次。显然这很浪费。
2、如果2个context都是需要jquery-1.10.1版本,那么怎么保证只js只下载一次呢?
结论:我们可以定义一个类似父类的context,存放公共的模块,各个context都可以访问该rootContext。
[javascript]&
通过httpwatch观察,可以看到demo1.js只会下载一次,这很好的解决了同个文件多次下载的问题。
阅读(1094) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。使用jQuery加载js脚本
动态加载Javascript是一项非常强大且有用的技术。这方面的主题在本站已经讨论了不少,我也经常会在一些个人项目上使用RequireJS和Dojo加载js。它们很强大,但有时候也会得不偿失。如果你使用的是jQuery,它里面有一个内置的方法可以用来加载单个js文件。当你需要延迟加载一些js插件或其它类型的文件时,可以使用这个方法。下面就介绍一下如何使用它!
jQuery JavaScript
jQuery内置了一个方法可以加载单一的js文件;当加载完成后你可以在回调函数里执行后续操作。最基本的使用jQuery.getScript的方法是这样:
jQuery.getScript("/path/to/myscript.js", function(data, status, jqxhr) {
做一些加载完成后需要执行的事情
这个getScript方法返回一个jqxhr,你可以像下面这样用它:
jQuery.getScript("/path/to/myscript.js")
.done(function() {
/* 耶,没有问题,这里可以干点什么 */
.fail(function() {
/* 靠,马上执行挽救操作 */
最常见的使用jQuery.getScript的地方是延迟加载一个js插件,而且在加载完成时执行它:
jQuery.getScript("jquery.cookie.js")
.done(function() {
jQuery.cookie("cookie_name", "value", { expires: 7 });
如果你需要更高级的功能,比如加载多个脚本,或加载不同类型的文件(文本文件,图片,css等),我建议你使用一个专门的JavaScript加载工具。如果是为了延迟加载一个js插件,避免每个页面都去加载,这个getScript很完美了。
有一个非常重要的问题,使用jQuery.getScript时,你需要用一个时间戳字符串跟在需要加载的js地址后面,防止它被缓存。但是,如果你希望这个脚本被缓存,你需要设置全局缓存变量,像下面这样:
jQuery.ajaxSetup({
cache: true
如果你并不想使用全局缓存变量,你也可以使用jQuery.ajax,并注明dataType是script:
jQuery.ajax({
url: "jquery.cookie.js",
dataType: "script",
cache: true
}).done(function() {
jQuery.cookie("cookie_name", "value", { expires: 7 });
在加载脚本时一定要小心缓存问题!
相关文章:
扫一扫二维码分享:onload js函数不执行的原因分析及解决方法
作者:admin&&&&时间: 23:9:1&&&&浏览:
今天打开网站的时候,发现很多页面的信息都没有显示出来,仔细观察了之后,发现都是onload的js函数没有执行的原因。其实之前曾发现过这个情况,我以为是网站出了问题,然后采用多种方法试图让onload的js能够执行,又是重新生成网页、又是重启站点、重启IIS,甚至重启服务器都干过,我的想法是可能网页速度太慢了而导致没有执行onload的js函数。onload js函数不执行的原因分析及解决方法今天又出现此问题之后,我不再盲目的操作了。我发现最近Google的统计代码加载很慢,经常在浏览器状态栏里看到Google的统计代码链接在运行,而就在这个过程,导致网页被k住了。我细心观察了下,不但是Google的分析程序,还有Google AdSense的链接、百度联盟的链接等第三方js代码都时不时出现这个问题,就是被k住了不能加载联盟广告,继而网页也不能继续加载其他的东西,包括onload的js函数的执行。点击上图放大受这个启示,我首先把Google的统计分析代码去掉,然后打开网页,看看是否可以执行onload的js函数;如果不行,再把AdSense的联盟广告代码去掉,然后测试显示效果;如果还不行,就再把百度联盟广告的代码去掉,看是否解决问题。一般情况下,经过这三个步骤,onload的js函数不能执行的问题就可以解决了。实际上,在遇到这个问题是,我们只需注意一下状态栏里哪个地址的执行最久,哪个地址就是祸根了,把它去掉即可。如果是站内图片,则需要优化一下了,找出其加载慢的原因从而解决问题。onload的js函数是在网页加载完毕后才执行我一直不是很清楚,我以为onload的js函数是在网页打开的时候就执行了的,实际上,onload的js函数是在网页加载完毕后才执行,即它是网页最后才执行的函数。了解了这个之后,我们就能理解为什么有时候onload的js函数没有执行了,原因很简单,因为网页有个别地方没有加载完,被k住哪里了。
JQuery的$(window).load()与OnLoad事件比较JQuery的$(window).load()方法与OnLoad事件,很大的区别就是执行的顺序不同。对于Body.Onload事件,是在加载完所有页面内容才会触发,我的意思是所有内容,包括图片,flash等.如果页面的这些内容很多会让用户等待很长时间。而对于$(document).ready()方法,这个方法只是在页面所有的DOM加载完毕后就会触发,无疑很大的加快了网页的速度。但是对于一些特殊应用,比如图片的放大缩小,图片的剪裁。需要网页所有的内容加载完毕后才执行的呢?我推荐使用$(window).load()方法,这个方法会等到页面所有内容加载完毕后才会触发,并且同时又没有OnLoad事件的弊端。& &script type=&text/javascript&&&&&&&&& $(window).load(function() {&&&&&&&&&&& alert(&hello&);&&&&&&& });&&&&&&& $(window).load(function() {&&&&&&&&&&& alert(&hello again&);&&&&&&& });&&& &/script&上面的代码会在页面所有内容加载完成后按先后顺序依次执行。当然不要忘了与之对应的Unload方法:$(window).unload(function() {&&&&&&&&&&& alert(&good bye&);&&&&&&& });上面代码会在页面关闭时引发。在所有DOM加载之前引发JS代码,这个方法是我在调试的时候最喜欢的,有时候开发的时候也用这种方法。&body&&&& &script type=&text/javascript&&&&&&&&& (function() {&&&&&&&&&&& alert(&hi&);&&&&&&& })(jQuery)&&& &/script&&/body&对,就是利用js闭包的形式将js代码嵌入body,这段代码会自动执行,当然也可以直接嵌入js代码,这种方式要注意顺序问题,如下:&body&&div id=&test&&this is the content&/div&&&& &script type=&text/javascript&&&&&&&&& alert($(&#test&).html());//I Can display the content&&& &/script&&/body&&body&&& &script type=&text/javascript&&&&&&&& alert($(&#test&).html());//I Can't display the content&&& &/script&&&& &div id=&test&&this is the content&/div&&/body&上面两段代码,第二段代码当中因为只能解释到当前代码之前的DOM,而test并不存在于已经解析的DOM数,所以第二段代码无法正确显示。
把文章分享到:
QQ交流群()匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 jquery动态载入js 的文章

 

随机推荐