Javascript 如何在Dojo StackContainer中禁用热键
我正在使用Dojo1.2在客户的网页上实现一些功能。我使用的一个小部件是Javascript 如何在Dojo StackContainer中禁用热键,javascript,dojo,Javascript,Dojo,我正在使用Dojo1.2在客户的网页上实现一些功能。我使用的一个小部件是dijit.layout.TabContainer,它继承了StackContainer。StackContainer订阅键盘事件并创建一些热键,如向左箭头以向左移动一个选项卡等 现在,我想在我的TabContainer中禁用这个热键功能。我是否可以设置一个配置选项(在API中找不到任何选项)来实现这一点,或者必须破解Dojo代码,或者创建我自己的StackContainer和TabContainer版本,以摆脱热键?我当然
dijit.layout.TabContainer
,它继承了StackContainer
。StackContainer
订阅键盘事件并创建一些热键,如向左箭头以向左移动一个选项卡等
现在,我想在我的TabContainer
中禁用这个热键功能。我是否可以设置一个配置选项(在API中找不到任何选项)来实现这一点,或者必须破解Dojo代码,或者创建我自己的StackContainer
和TabContainer
版本,以摆脱热键?我当然不想弄乱Dojo代码
致以最诚挚的问候/Fredrik我只是在这里即兴编写代码,我根本没有测试它。我正在将此维基化,如果有任何问题,请发布正确的来源 在名为
com/stackoverflow/KeyPresslessTabContainer.js的文件中使用以下javascript:
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>"
});
dojo.provide(“com.stackoverflow.KeyPresslessTabContainer”);
require(“dijit.layout.TabContainer”);
declare(“com.stackoverflow.KeyPresslessTabContainer”、dijit.layout.TabContainer、{
_controllerWidget:“com.stackoverflow.KeyPresslessTabController”
});
declare(“com.stackoverflow.KeyPresslessTabController”、dijit.layout.TabController、{
/*
*这是重要的部分。原始代码是:
*模板字符串:“”
*在下面的模板中,我们删除onkeypress侦听器,
*因此按键应该被忽略。
*/
模板字符串:“”
});
只需使用空主体覆盖按键:
<div dojoType='dijit.layout.TabContainer'>
<script type='dojo/method' event='_onKeyPress'></script>
...
<div>
...
工作起来很有魅力。在Dojo的最新版本中,覆盖功能现在是\u onKeyDown
。