jquery和$ .getScript()的使用

时间:2012-03-17 18:31:42

标签: jquery

这是代码

$(function() {
    $("input[type=button]").click(            
            function(evt) {                        
                if( !window.sayHi ) {
                    evt.target.disabled = "disabled";
                    $.getScript("hi.js", function() {
                        sayHi($("input[type=text").val());
                        evt.target.disabled = "";
                    });
                }
                else{
                    sayHi( $("input[type=text").val() );
                }
            });
});

如果我反复点击按钮会发生什么,然后$ .getScript()会重复下载hi.js文件或者只是第一次下载?

$ .getScript()检查客户端机器中是否存在js文件....如果没有则只下载?请讨论。感谢

我得到了关于getScript()函数的细节。在这里,我给出了代码,我坚持了几行。

jQuery.cachedScript = function(url, options) {

// allow user to set any option except for dataType, cache, and url
options = $.extend(options || {}, {
dataType: "script",
cache: true,
url: url
});

// Use $.ajax() since it is more flexible than $.getScript
// Return the jqXHR object so we can chain callbacks
return jQuery.ajax(options);
};

// Usage
$.cachedScript("ajax/test.js").done(function(script, textStatus) {
console.log( textStatus );
});

1)cachedScript()函数需要两个参数,但只有一个在调用时发送....为什么?

2)从哪里来的done()函数来到这里?

请解释以上两点

1 个答案:

答案 0 :(得分:0)

jQuery将当前的Unix纪元作为GET参数附加,因此将为每个click事件下载它(如果它们不在相同的毫秒内发生):P。

  

默认情况下,$.getScript()将缓存设置设置为false。这个   将带时间戳的查询参数附加到请求URL以确保   浏览器每次请求时都会下载脚本。您   可以通过全局设置缓存属性来覆盖此功能   $.ajaxSetup()

Source

设置标志并对其进行测试或查找新脚本中定义的变量是一种很好的形式。然后根据它写一个条件。