本文实例讲述了JS实现的自定义网页拖动类。分享给大家供大家参考,具体如下: Javascript本身没有暂停功能(sleep不能使用)同时 vbscript也不能使用doEvents,故编写此函数实现此功能。 javascript作为弱对象语言,一个函数也可以作为一个对象使用。 比如: function Test(){ alert("hellow"); this.NextStep=function(){ alert("NextStep"); } } 我们可以这样调用 var myTest=new Test();myTest.NextStep(); 在JavaScript中,由于其异步执行的特性,它并没有内置的`sleep`或`wait`函数来实现程序的暂停。然而,在某些情况下,我们确实需要模拟这种暂停效果,例如在动画或者等待某个条件满足后再执行后续操作时。在这种场景下,我们可以采用事件循环和定时器来实现类似的效果。本文中介绍的是一种利用`setTimeout`和自定义方法来模拟暂停功能的方法。 我们要理解JavaScript中的事件循环机制。JavaScript是单线程的,所有的任务都在同一个线程上执行,当遇到异步操作如`setTimeout`时,会将该操作放入任务队列,待主线程空闲时才会去执行。这就是我们可以通过`setTimeout`来模拟暂停的原理。 以下是一个简单的实现暂停功能的示例: ```javascript function sleep(obj, iMinSecond) { // 将当前对象存入全局数组 if (window.eventList == null) window.eventList = new Array(); var ind = -1; for (var i = 0; i < window.eventList.length; i++) { if (window.eventList[i] == null) { window.eventList[i] = obj; ind = i; break; } } // 如果数组已满,则添加到末尾 if (ind == -1) { ind = window.eventList.length; window.eventList[ind] = obj; } // 使用setTimeout设置一个定时器,延迟指定秒数后执行goon函数 setTimeout("goon(" + ind + ")", iMinSecond); } // 继续函数,从数组中取出对象并执行NextStep或原函数 function goon(ind) { var obj = window.eventList[ind]; window.eventList[ind] = null; if (obj.NextStep) obj.NextStep(); // 如果有NextStep方法,执行之 else obj(); // 否则直接执行原函数 } // 定义一个包含暂停和恢复功能的对象 function Test() { alert("hellow"); sleep(this, 3000); // 调用暂停函数,3秒后继续执行 this.NextStep = function() { alert("NextStep"); }; } // 执行Test对象 Test(); ``` 在这个例子中,`sleep`函数接收一个对象和一个时间间隔作为参数,它将对象存储在全局的`eventList`数组中,并设置一个定时器在指定秒数后调用`goon`函数。`goon`函数负责从数组中取出对象并执行其`NextStep`方法,如果没有`NextStep`方法,则直接执行对象本身。 这种实现方式允许我们在需要暂停的地方调用`sleep`,然后在暂停后的地方定义`NextStep`方法。这样,当`setTimeout`的回调触发时,程序会继续执行`NextStep`中的内容,实现了暂停和继续的功能。 需要注意的是,这种实现方式依赖于全局变量`eventList`,在复杂的应用场景下可能会引起命名冲突或管理困难。在实际开发中,我们可以考虑将这些数据结构封装在闭包或者类的私有属性中,以提高代码的可维护性和避免潜在的问题。 JavaScript中的暂停功能并非直接提供,而是通过异步编程模型和定时器来间接实现。通过巧妙地设计函数和调用顺序,我们可以模拟出暂停和恢复的效果,这对于创建复杂的交互式应用非常有用。
- 粉丝: 5
- 资源: 916
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0