WEB开发网
开发学院网页设计JavaScript JavaScript 中的有限状态机,第 3 部分: 测试小部... 阅读

JavaScript 中的有限状态机,第 3 部分: 测试小部件

 2010-09-14 13:20:44 来源:WEB开发网   
核心提示: 图 4. Firefox 中意外的 mousemove 事件幸运的是,为 Internet Explorer 所做的 Inactive 状态修改可以正确地处理这种情况,JavaScript 中的有限状态机,第 3 部分: 测试小部件(7),所以不需要做进一步修改来克服这个设计缺陷,不幸的是

图 4. Firefox 中意外的 mousemove 事件

JavaScript 中的有限状态机,第 3 部分: 测试小部件

幸运的是,为 Internet Explorer 所做的 Inactive 状态修改可以正确地处理这种情况,所以不需要做进一步修改来克服这个设计缺陷。

不幸的是,实现这些修改之后的后续测试发现 Internet Explorer 有另一个不应该发生的情况:在 Pause 状态下出现意外的 mouseover 事件。

因为 Pause 状态下 mouseover 事件需要的操作和转换与 Inactive 状态下的 mouseover 事件一样,所以可以通过调用 doActionTransaction 方法来处理这种情况。但是,没有合理的事件序列会让其他浏览器进入这种情况(至少我没有发现),所以只为 Internet Explorer 实现这个设计修改,如清单 6 所示。

清单 6. 处理只在 Internet Explorer 中发生的意外事件的 JavaScript 代码

FadingTooltip.prototype = {
  ...
  actionTransitionFunctions: {
    ...
  },
  ...
};
if ( (window.navigator.userAgent).indexOf('MSIE')!=-1 ) {
    FadingTooltip.prototype.actionTransitionFunctions["Pause"]["mouseover"] =
    function(event) { return
    this.doActionTransition('Inactive', 'mouseover', event);
    };
    }

如果浏览器是某个版本的 Internet Explorer,那么修改 FadingTooltips 原型的 actionTransitionFunctions 表(在定义它之后,但在使用它之前),按照与 Inactive 状态下的 mouseover 事件相同的方式处理 Pause 状态下的 mouseover 事件。请记住,在 JavaScript 中,关联数组和对象是等效的,所以可以使用这两种表示法之一修改这个表。

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:JavaScript 有限 状态

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接