jQuery.getScript() 的 Zepto 等价物是啥?

Posted

技术标签:

【中文标题】jQuery.getScript() 的 Zepto 等价物是啥?【英文标题】:What's the Zepto equivalent of jQuery.getScript()?jQuery.getScript() 的 Zepto 等价物是什么? 【发布时间】:2012-01-23 07:06:19 【问题描述】:

什么是 jQuery.getScript() 的 Zepto 等价物?我需要用这两个库动态加载一个 javascript 文件。

【问题讨论】:

【参考方案1】:

这个工程附加到 zepto.js!

;(function ($)  
    $.getScript = function(src, func) 
        var script = document.createElement('script');
        script.async = "async";
        script.src = src;
        if (func) 
           script.onload = func;
        
        document.getElementsByTagName("head")[0].appendChild( script );
    
)($)

【讨论】:

它不会出现在 fn 上。此外,由于您正在编写一个插件,因此您可以通过使用 Zepto 功能真正简化。 理论上,避免使用 $() 来附加元素或设置属性等应该更快并且可以节省内存 - 在快速加载时两者都很重要。所以我就这样做了,我添加了一些修改(现在在编辑审查中)。 我不知道或不需要异步参数,所以我只是将其注释掉。如果通过 Web 与文件系统加载,我会研究它以提高速度。【参考方案2】:
;(function($)

    $.getScript = function (url, success, error) 
        var script = document.createElement("script"),
            $script = $(script);
        script.src = url;

        $("head").append(script);
        $script.bind("load", success);
        $script.bind("error", error);
    ;

)(Zepto);

这部分内容来自Zepto.ajaxJSONP

【讨论】:

【参考方案3】:

我一直在寻找同样的东西,我发现标准的 $.ajax 调用将在 dataType === "script" 时评估响应。我将它实现为 Zepto 插件,如下所示:

(function ($) 
    var getScript = function (url, callback, options) 
            var settings  = $.extend(
                'url': url,
                'success' : callback || function () ,
                'dataType' : 'script'
            , options || );
            $.ajax(settings);
        ;

    $.getScript = getScript;
($ || Zepto));

它应该使用与 jQuery 版本相同的语法,除了我添加了 options (3rd) 参数以允许将任意选项传递给 ajax 请求。

【讨论】:

这种方法的一个限制是您不能进行跨域请求。第三方脚本会失败。

以上是关于jQuery.getScript() 的 Zepto 等价物是啥?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery ajax - getScript() 方法

jQuery中Ajax快捷方法之$.getScript()

jQuery ajax - getScript() 方法

脚本完全加载并执行时,jquery .getscript()回调

jQuery动态加载脚本 $.getScript();

“使用严格”; + jQuery.getScript() = 脚本不能导出到全局命名空间