2

我在 IE8 上的事件有问题(可怕!),在 Websphere Portal Server 上运行的 Spring 应用程序上使用 dojo 工具包 1.4.3(不能使用任何其他版本)。

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

按下网页的任何字段并一直按 Tab,焦点会返回到 url 输入和按钮,并且在重复之后不会返回到文档,如果您单击网站中的元素,它会重新添加焦点在该元素上,但是当您再次按 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);
       }
   })
});

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

4

1 回答 1

0

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

dojo.query("*").forEach(function(fieldID){
    dojo.attr(fieldID, "tabIndex", "-1");
});
于 2012-07-25T09:51:31.910 回答