2

我正在使用 Dojo 1.2 在我客户的网页上实现一些功能。我使用的小部件之一是dijit.layout.TabContainer,它继承了StackContainer. 订阅键盘事件并创建一些热键,例如向左箭头将StackContainer一个选项卡向左移动等等。

现在问题来了:我想在我的TabContainer. 是否有我可以设置的配置选项(在 API 中找不到)来实现这一点,或者必须破解 Dojo 代码或者创建我自己的版本,StackContainer以便TabContainer摆脱热键?我当然不希望弄乱 Dojo 代码。

最好的问候/弗雷德里克

4

2 回答 2

2

只需用空主体覆盖 _onKeyPress:

<div dojoType='dijit.layout.TabContainer'>
<script type='dojo/method' event='_onKeyPress'></script>
...
<div>

奇迹般有效。

于 2009-05-07T15:27:36.057 回答
0

我只是在这里随意编码,我根本没有测试它。我正在把这个维基化,所以如果有任何问题,请发布正确的来源。

在名为的文件中使用以下 javascript com/stackoverflow/KeyPresslessTabContainer.js

dojo.provide("com.stackoverflow. KeyPresslessTabContainer");

dojo.require("dijit.layout. TabContainer");

dojo.declare("com.stackoverflow.KeyPresslessTabContainer", dijit.layout. TabContainer, {
    _controllerWidget: "com.stackoverflow.KeyPresslessTabController"
});

dojo.declare("com.stackoverflow.KeyPresslessTabController", dijit.layout.TabController, {
  /*
   *  this is the important part.  The original code was:
   *  templateString: "<div wairole='tablist' dojoAttachEvent='onkeypress:onkeypress'></div>"
   *  In the template below, we remove the onkeypress listener,
   *  and thus key presses should be ignored.
   */
  templateString: "<div wairole='tablist'></div>"
});
于 2009-02-18T15:11:40.473 回答