我想知道是否有可能以一种不会阻塞用户体验的方式加载JavaScript。我不确定如何实现相同的效果,但我正在寻找一个跨浏览器的解决方案。我想知道是否有人能够指导我正确的方向。将js放在页面底部效果不太好。
谢谢你的时间。
我想知道是否有可能以一种不会阻塞用户体验的方式加载JavaScript。我不确定如何实现相同的效果,但我正在寻找一个跨浏览器的解决方案。我想知道是否有人能够指导我正确的方向。将js放在页面底部效果不太好。
谢谢你的时间。
Javascript运行在单线程中,因此如果您有大量的Javascript调用,比如使用ExtJS等库,它可能会变慢。然而,您可以考虑以下替代方案:
首先,尽可能优化代码。
其次,您可以使用Javascript中的计时器来模拟异步工作。这是一个很好的示例:http://ejohn.org/blog/how-javascript-timers-work/
如果您想获得更多信息,以下是一些额外的提示,可尝试减少Javascript冻结时间。
祝你好运!
$('#id').click(function(){
$.post('url',data,function(callbackdata){//do something
});
});
我认为你可以使用Workers,但它似乎只在FF3.5中实现,其他浏览器很少支持。
详见http://hacks.mozilla.org/2009/07/working-smarter-not-harder/
使用小延迟的setTimeout函数可以让控制流程继续进行,同时安排另一个函数稍后执行。这对于防止UI阻塞或意外依赖其他函数的成功执行特别有用。
我发现这非常有用,可以防止JavaScript错误干扰绑定事件。例如,在表单上安装提交处理程序:
$('#form').submit(function() {
setTimeout(function() {
// Submit handler function, i.e. do an ajax submission of the form
$.ajax(...etc...);
}, 1);
// Return false before the handler executes, ensuring the form won't manually submit
// in the event of a js error in the handler
return false;
});
延迟执行 JavaScript 可以是一个非常好的解决方案,如果你有一些不紧急需要立即加载的 JavaScript。
看看这个jQuery插件(http://code.google.com/p/funky-jq-plugins/wiki/nonblocking)。
它旨在使用计时器来模拟多线程环境,其中UI线程不会被迭代长列表等要求操作冻结。非常酷的东西......我写的 :)
现在先告别。
<script>
标签,还是JavaScript函数的执行? - Jonathon Faust