dojo onkeyup отключен после нажатия вкладки в IE8

У меня проблема с событиями в IE8 (ужас!), используя набор инструментов dojo 1.4.3 (не могу использовать любую другую версию) в приложении Spring, работающем на сервере портала Websphere.

Теперь я не верю, что бэкэнд имеет к этому какое-то отношение, поскольку проблема с вкладками IE8 известна:

нажмите на любое поле веб-страницы и нажмите вкладку до конца, фокус вернется к вводу URL-адреса и кнопкам и не вернется к документу после его повторения, если вы нажмете на элемент на веб-сайте, он повторно добавляет фокус на этот элемент, но когда вы снова нажимаете вкладку, он возвращается в верхнюю часть браузера.

Теперь моя проблема возникает ПОСЛЕ всего табуляции и выведения фокуса из документа. Казалось бы, браузер удаляет события из 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);
       }
   })
});

У кого-нибудь есть идеи, как это решить?


person Gonçalo Vieira    schedule 24.07.2012    source источник


Ответы (1)


так что это странно, но есть простой способ решить проблему, это также, кажется, исправляет другие браузеры от циклического переключения через скрытые поля ввода, которые имеют свойство css display:none, так что в коде:

dojo.query("*").forEach(function(fieldID){
    dojo.attr(fieldID, "tabIndex", "-1");
});
person Gonçalo Vieira    schedule 25.07.2012