我有一个关于延迟加载sciprts的问题。
所以基本上只是告诉你我的情况:
我有一个页面,在页面的末尾我加载了jquery和其他一些脚本,所以首先加载所有的html,然后才开始加载脚本。
但是在我网页上的某些地方,我不得不写一些内联脚本,需要使用jquery之类的东西,如$ ...如果找不到,我会收到错误。
我不能将该内联脚本放在seperat js文件中并在最后加载它,因为在mvc中我无法接近模型并从控制器调用动作。
那么有没有办法说出jquery之后的加载?
答案 0 :(得分:0)
只需在javascript文件最底部的html页面的window.onload事件中指定一个方法。
window.onload = function ()
{
do your jQuery thingies here.
}
浏览器下载了所有页面资源(包括外部css和js文件)后,window.onload事件将触发。
更新:请将所有内联脚本放在html5页面的底部,这是一个很好的做法。此外,将所有javascript文件放在一个单独的JS文件上将为您提供诸如缩小javascript和将外部js文件缓存到浏览器等优点,从而加快加载速度。
答案 1 :(得分:0)
对于在头部加载jQuery不可取或不可能的情况,这是我的解决方案。
它涉及在头部声明一个临时$
函数,该函数使用 jQuery-esque 语法收集内联发生的任何函数。
真正的jQuery然后加载并覆盖window.$
,但留下存储在var inlines
中的函数数组,然后可以在jQuery可用时处理。
<html>
<head>
...
<script>
var inlines = [];
window.$ = function(inline) {
inlines.push(inline);
};
</script>
</head>
<body>
...
<script>
$(function() {
// Do some jQuery stuff.
}
</script>
...
<script... load jQuery here!! ></script>
<script>
for(var i = 0; i < inlines.length; i++) {
inlines[i]();
}
</script>
</body>
</html>
我还成功地将这种方法应用于内联require.js需要调用,然后才知道依赖项被加载。