1

我尝试按照mindtrove 博客的小部件示例。这是示例演示页面

这个小部件有一些问题:左右箭头键,以及 home 和 end 键在 Firefox 中不起作用(我使用的是 Mac),如果我在 Safari 中加载示例页面,任何键都不起作用。我不确定这只是我的 Mac 的问题还是根本无法在 Mac 上运行。

以下是小部件 Rating.js 中的一些代码:

_onKeyDown: function(event) {
    switch(event.keyCode) {
    case dojo.keys.UP_ARROW:
    case dojo.keys.RIGHT_ARROW:
        this.currentValue += 1
        this.currentValue = Math.min(this.currentValue, this.maximumValue);
        dojo.stopEvent(event);
        break;
    case dojo.keys.DOWN_ARROW:
    case dojo.keys.LEFT_ARROW:
        this.currentValue -= 1
        this.currentValue = Math.max(this.currentValue, this.minimumValue);
        dojo.stopEvent(event);
        break;
    case dojo.keys.HOME:
        this.currentValue = this.minimumValue;
        dojo.stopEvent(event);
        break;
    case dojo.keys.END:
        this.currentValue = this.maximumValue;
        dojo.stopEvent(event);
        break;
    }
    // refresh the display
    this._update();
}

据我所知,这个函数事件中的所有键都应该起作用。我不确定为什么有些不起作用。顺便说一句,我发现一件有趣的事情:对于 Firefox 中的那些键(左、右、home 和 end)键,如果我按住 shift 键,它们就会起作用。

我不确定问题是小部件代码中的错误还是 Mac 的 Dojo 错误?

4

1 回答 1

0

实际上,我发现所有的键都在 Firefox(Mac) 中工作。我正在使用 Vimperator 来标记一些键。当我在“直通”模式下获得它时,这意味着 Vimerator 插件不会捕获任何键,聚焦的评级控件小部件将获得左、右、上、下、主页和结束的关键事件。

至少在 Firefox 的情况下,该小部件正在工作。根据我的经验,小部件在获得焦点时为控件提供了一些事件功能。但是,如果有任何附加组件或浏览器配置导致事件无法通过或它们响应事件,那么您将遇到“问题”。换句话说,如果它在浏览器情况下真的很复杂。我可以想象,如果某些附加组件可以禁用鼠标单击事件,则该小部件将不再起作用。

我仍然无法弄清楚让小部件在我的 Safari 中工作。据我所知,小部件控件根本没有任何焦点。小部件被分配给测试页面中的 span 标签。我不确定 span 标签是否可以在 Safari 中获得焦点。我会看看我是否可以将小部件放到另一个可聚焦的标签上,然后试一试。

得到一些工作和探索真的很有意义。

于 2008-11-22T17:02:28.010 回答