Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Dojo StackContainer中禁用热键_Javascript_Dojo - Fatal编程技术网

Javascript 如何在Dojo StackContainer中禁用热键

Javascript 如何在Dojo StackContainer中禁用热键,javascript,dojo,Javascript,Dojo,我正在使用Dojo1.2在客户的网页上实现一些功能。我使用的一个小部件是dijit.layout.TabContainer,它继承了StackContainer。StackContainer订阅键盘事件并创建一些热键,如向左箭头以向左移动一个选项卡等 现在,我想在我的TabContainer中禁用这个热键功能。我是否可以设置一个配置选项(在API中找不到任何选项)来实现这一点,或者必须破解Dojo代码,或者创建我自己的StackContainer和TabContainer版本,以摆脱热键?我当然

我正在使用Dojo1.2在客户的网页上实现一些功能。我使用的一个小部件是
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