load() 方法已弃用?
Posted
技术标签:
【中文标题】load() 方法已弃用?【英文标题】:load() method deprecated? 【发布时间】:2012-09-20 12:35:24 【问题描述】:我在浏览 jQuery api 时发现 load method 在已弃用列表中。
类别:已弃用 |事件 > 文档加载
我通常使用这种方法来检查图像是否完全加载。为什么它被弃用?我应该改用什么?
【问题讨论】:
可能是因为它与更早执行的$(document).ready
混淆了?
@Sparky,有一个load()
方法为load
事件注册一个处理程序(on("load")
的快捷方式) .现在确实不推荐使用该方法,而支持on()
。
是的,在 SO,挑剔技术语义是我们所做的,或者应该做的。
@Sparky,好的,让我们再试一次。 DOM 层公开了一个load
事件。 jQuery 提供了$.fn.load()
方法 来为该事件注册一个处理程序。该方法还有另一个用途(AJAX 请求)。但那是方法,不是事件(可以调用,事件不能调用,只能触发)。文档页面被命名为load-event
以消除该方法的两个用途之间的歧义,但它仍然记录了一个方法。
啊,是的@FrédéricHamidi,我明白了。没有异议。我一直记得它在docs 中的描述,“将 event 处理程序绑定到“加载”javascript event。”。谢谢你的详细解释。
【参考方案1】:
在 jQuery 中弃用的加载函数替代它是你可以使用的,就像
$("iframe").on("load",function()
alert("on loaded iframe");
);
这项工作非常适合 jquery-3.1.1。
【讨论】:
【参考方案2】:如果load
没有按预期工作,替代方法是:
$(window).one("scroll", foo);
或者
$(window).one("scroll", function()/*...*/);
具体来说,当DOMContentLoaded
无法按预期工作时,滚动事件绑定在android 中很有用,而当onreadystatechange
无法按预期工作时,滚动事件绑定在Android 中很有用。
参考文献
Android DOM Finger Events
IE implementation of DOMContentLoaded failing when no assets
IE < 9 Hack for a Document not inside a frame
【讨论】:
它不是负载的替代品或好的解决方法 -_- ,请参阅:api.jquery.com/one @Al-Mothafar Scroll 事件绑定至少在某些platforms、scenarios 和browsers 中有效。 @Al-Mothafar 为什么你会期望 onload 触发多次,使得 .one 成为必要? @PaulSweatte 链接的一篇文章是旧的,第二篇已经没有了,最后一篇应该与 jQuery 的加载事件无关。确实,iOS 8 在极少数情况下根本不会触发 load 事件。 ***.com/questions/31744477 jquery docs on load 现在强调它的失败之处,“有几个已知的警告应该注意......”【参考方案3】:请参阅 bug #11733,其中记录了此弃用:
.load()
方法是一个模棱两可的签名,它可以是 ajax 加载或附加/触发“加载”事件。 CCAO 无法区分它们,因为 这是一个基于参数的动态决定。
为避免与方法签名相关的歧义,现在建议改用on()。例如:
$("selector").load(function()
// ...
);
应该变成:
$("selector").on("load", function()
// ...
);
【讨论】:
并非如此,on()
总是打算这样使用。它取代了bind()
以及delegate()
和live()
。我想说自从引入on()
以来,绑定事件和委托事件之间的区别(在注册方法方面)已经消失。
我同意使用,但是如果我有要加载的 URL 怎么办,所以我的代码是 $methods.load(url, function () //do smething );其中方法是具有 html 元素的变量,所以我想用 $methods.on('load', url, function()//do something);可悲的是它不工作
它给出了语法错误的控制台错误,无法识别的表达式:到 URL以上是关于load() 方法已弃用?的主要内容,如果未能解决你的问题,请参考以下文章
Modernizr.load 已弃用。 Yepnope.js 已弃用。怎么办?
如何替换已弃用的 imp.load_dynamic 的用法?
OnActivityResult 方法已弃用,有啥替代方法?