osh*_*nen 8 javascript jquery google-chrome internet-explorer-8 getscript
似乎helloworld.js根据我点击的次数加载多次#load.我这样说是因为当我查看Google Chromes开发人员工具网络标签时,它会显示helloworld.js我点击的次数#load.
$(document).ready(function() {
$("#load").click(function(){
$.getScript('helloworld.js', function() {
hello();
});
});
});
Run Code Online (Sandbox Code Playgroud)
该hello()函数如下所示:
function hello(){
alert("hello");
}
Run Code Online (Sandbox Code Playgroud)
是否可以检测是否helloworld.js已经加载?
因此,如果它尚未加载,则加载它,如果已加载,则不加载它.
如果我单击#load按钮4次,这就是Developer Tools当前显示的内容:

Mut*_*ran 10
文件加载成功后设置标志.如果设置了标志,则再次跳过文件加载.
试试这段代码,
var isLoaded = 0; //Set the flag OFF
$(document).ready(function() {
$("#load").click(function(){
if(isLoaded){ //If flag is ON then return false
alert("File already loaded");
return false;
}
$.getScript('helloworld.js', function() {
isLoaded = 1; //Turn ON the flag
hello();
});
});
});
Run Code Online (Sandbox Code Playgroud)
那么为什么不只是这样开一次事件:
$("#load").one("click", function() {
$load = $(this);
$.getScript('helloworld.js', function() {
hello();
// bind hello to the click event of load for subsequent calls
$load.on('click', hello);
});
});
Run Code Online (Sandbox Code Playgroud)
这将防止后续加载并避免使用全局
另一种选择是让它.getScript()运行,但让它从浏览器的缓存中获取脚本,这样你就不会每次都重新加载它.
要实现此目的,请添加以下代码:
$.ajaxSetup({
cache: true
});
Run Code Online (Sandbox Code Playgroud)
这取自文档页面.
| 归档时间: |
|
| 查看次数: |
16271 次 |
| 最近记录: |