尽管从 $.Ready() 中删除了我的所有代码,但它似乎jquery.validate.unobtrusive.js
调用了一些加载代码,这导致我们的 DOMContentLoaded 事件需要 300 毫秒的前置时间才能触发。
我们确实有一个相当大的 DOM,但肯定不会花那么长时间吗?
尽管从 $.Ready() 中删除了我的所有代码,但它似乎jquery.validate.unobtrusive.js
调用了一些加载代码,这导致我们的 DOMContentLoaded 事件需要 300 毫秒的前置时间才能触发。
我们确实有一个相当大的 DOM,但肯定不会花那么长时间吗?
在解决我正在开发的产品上的一些性能问题时,我的 DOMContentLoaded 事件似乎在 IE 9 中花费了 700 毫秒(我们有一个非常大的 DOM - 这也在我的列表中)
禁用我所有的 OnReady 代码后 - 我缩小了范围
parse(selector)
在jquery.validate.unobtrusive.js
找到后:
$(selector).find(":input[data-val=true]").each(function () {...}
我立即知道 Find() 方法中选择器的结构,这将进入嘶嘶声引擎,而不是使用Document.QuerySelectorAll()
.
--根据@CharlesC 的评论进行编辑--
选择器的微小更改为:
$(selector).find("input, select, textarea").filter("[data-val=true]")
在 IE 中导致 300 毫秒的性能提升。