JavaScript's get-it-done nature
JavaScript's get-it-done nature
JavaScript是否打算在网站/web应用程序上尽可能少地运行?我的意思是,通常的意图是运行通过所有的js文件,只要页面加载并把它们放在一边,然后当函数来执行它们,并完成它?
我正在使用谷歌地图的一个项目,我有一个自定义标记对象脚本出来,调试器告诉我,浏览器运行通过我所有的js文件之前,任何东西甚至出现在页面上。
我的问题出现在这里:我想用jQuery动画某些标记来连续地上下反弹(类似于OS X dock中的图标),我在无限循环函数中的几次尝试都只是崩溃了浏览器。所以我明白,浏览器不喜欢,,但有没有一种方法,让一个简单的脚本在后台重复自己,而用户导航页面?或者JavaScript不应该这样使用?
(我用Flash工作了很长时间,所以我的心态仍然在那里。)
是的,Javascript函数应该尽其所能并尽快退出。GUI和脚本在同一个线程上运行,因此只要您在Javascript函数中,浏览器中就不会显示任何内容。如果你尝试使用无限循环,浏览器将会冻结。
您使用window.setInterval
和window.setTimeout
方法来触发在特定时间运行的代码。通过运行一个每秒更新几次的间隔,你可以创建一个动画。
您必须设置计时器以在指定时间后执行脚本。
var timer = setTimeout(code, milliseconds);
将在某某毫秒内执行code
。每次执行脚本都可以设置一个新的计时器来再次执行脚本。
您可以使用clearTimeout(timer)
取消定时事件。
使用setTimeout()或setInterval()。MDC关于它的文章非常好。
你需要在快速运行但被多次调用的函数内部更新,而不是在循环内部更新。
既然你说你正在使用jQuery,考虑使用它的效果API(例如,jQuery.animate()
),它将使你的生活更容易!
就我个人而言,我将尽可能多的代码保存在页面加载后执行,部分原因是将所有<script>
放在<body>
的底部。这意味着(可感知的)页面加载时间的减少,同时让我所有的JS在需要时准备好运行。
我不建议你在文档的开头就把所有需要做的事情都讲一遍。相反,将事物绑定到事件,如按钮的单击等。
- 有没有一种方法可以防止img get请求使用css或js发生
- CORS-重定向到第二个GET正在接收的页面
- jQuery Ajax GET请求工作不正常
- 如何将PHP get查询转换为Meteor's HTTP.get()
- 返回/从Twit's客户端.get
- AngularJS错误:提供程序必须从$get工厂方法返回值
- 如何在router.get()方法中传递url作为参数
- 使用Javascript/JQuery获取JSON GET数据
- 如何使用php文件中的GET来获取我在.js文件中声明的变量
- Lodash懒惰链不'It’我不管用
- Get方法获取csv文件的内容
- 什么'$.get和$.ajax之间的区别是什么
- I'我得到这个.get()在ember中未定义
- Babel编译错误:找不到模块核心js/library/fn/get迭代器
- React Native-What'It’在任何地方都要留下逗号
- Ajax GET 请求的 URL 失败,但 hurl.it 相同 URL 的 GET 请求有效.什么给
- 错误$.get(..).done不是函数
- 获取 jQuery get().done() 函数的返回值
- Jasmine 2.0 async done()和angular-mocks inject()在同一个test it()
- JavaScript's get-it-done nature