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 等价物是啥?的主要内容,如果未能解决你的问题,请参考以下文章