2008-12-19 57 views
2

我正在使用Dojo 1.2在客戶的網頁上實現一些功能。我使用的其中一個小部件是繼承StackContainer的dijit.layout.TabContainer。 StackContainer在鍵盤事件上訂閱並創建一些熱鍵,如向左箭頭將一個標籤向左移動等等。如何禁用Dojo中的熱鍵StackContainer

現在問題:我想在我的TabContainer中禁用這個熱鍵功能。有沒有我可以設置的配置選項(無法在API中找到任何內容)來實現此目的,或者必須破解Dojo代碼,或者可能創建自己的StackContainer和TabContainer版本以消除熱鍵?我當然寧願不要混淆Dojo代碼。

最好的問候/弗雷德裏克

回答

2

只需使用一個空的本體覆蓋_onKeyPress:

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

就像一個魅力。

+0

在最近的Dojo版本中,要覆蓋的函數現在是`_onKeyDown`。 – paraquat 2014-05-27 21:04:54

0

我只是編碼即興在這裏,我沒有測試出來的。我正在做這個wikified,所以請發佈正確的來源,如果有任何問題,請。

使用一個名爲文件中下面的JavaScript COM /計算器/ 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,{ /* * 這是重要的組成部分原代碼爲: * templateString: 「」 *在模板在下面,我們刪除onkeypress listener, *,因此按鍵應該被忽略。 */ templateString:「」 });