在按IE8上的选项卡后禁用dojo onkeyup

时间:2012-07-24 14:25:28

标签: javascript internet-explorer browser dojo dom-events

我在IE8上遇到了一个问题(恐惧!),在Websphere Portal Server上运行的Spring应用程序上使用dojo toolkit 1.4.3(不能使用任何其他版本)。

现在,我不相信后端与此有任何关系,因为IE8标签的问题是已知的:

  

按下网页的任何字段并完全按下标签,焦点会返回到网址输入和按钮,重复后不返回文档,如果单击网站中的元素重新添加焦点到该元素,但当再次按Tab键时,它会返回到浏览器的顶部。

现在,我的问题发生在选项卡一直显示并从文档中获得焦点之后。 看起来浏览器正在从DOM中删除事件,我已经调试了IE8上的代码,它似乎没有触发回调函数,而它在没有完成整个标签的情况下表现正常。

我尝试使用dojo.disconnect()并通过随后调用dojo.connect()重新添加事件无效,这是一个小片段:

var connectedObjects = {};
dojo.query(".someClass").forEach(function(inputField){
   connectedObjects[inputField.id] = {}; 
   connectedObjects[inputField.id].onfocus = dojo.connect(inputField, "onfocus", function(event){
       if(connectedObjects[inputField.id]){
           dojo.disconnect(connectedObjects[inputField.id].onkeyup);
           connectedObjects[inputField.id].onkeyup = dojo.connect(inputField, "onkeyup", someCallbackFunction);
       }
   })
});

有没有人对如何解决这个问题有任何想法?

1 个答案:

答案 0 :(得分:0)

所以,这是一个奇怪的,但有一个简单的方法来解决问题,这似乎也修复了其他浏览器循环通过具有css属性display:none的隐藏输入字段,等等代码:

dojo.query("*").forEach(function(fieldID){
    dojo.attr(fieldID, "tabIndex", "-1");
});