我的网页上有异步加载脚本的小问题.我需要异步加载页面的所有脚本.我尝试了很多程序,我在谷歌上发现,但它仍然不完美.
现在我有这样的:
将所有脚本从布局拆分为一个包,包括jquery.
在页面底部调用带有异步标记的RenderFormat.
现在这就是我遇到问题的地方:我需要解决由@RenderFormat呈现脚本的情况.问题是这些脚本的渲染时间比我需要的要早.
例如,我在Home/Index文件中有这个:
@Scripts.RenderFormat("", "~/bundles/raphael")
或者干脆
... $(".datapicker").datapicker(); ...
这里我们得到错误," $未定义 ",因为尚未加载jquery.
在内容之后,在布局文件中我有:
... @Scripts.RenderFormat("", "~/bundles/frontall") ... @RenderSection("scripts", required: false)
如果我将所有脚本放在页面上并将它们放到一个包中,一切都很好,但我不希望脚本被渲染,我只需要在特定的部分中执行此操作.
接下来的想法是创建一个自定义的RenderSection方法,它会像这样做:
function async(u, c) { var d = document, t = 'script', o = d.createElement(t), s = d.getElementsByTagName(t)[0]; o.src = u; if (c) { o.addEventListener('load', function (e) { c(null, e); }, false); } s.parentNode.appendChild(o, s); } async("/bundles/jquery", function() { //here, load scripts from inner pages. Index, Detail... });
有办法,怎么解决?非常感谢您的宝贵时间.