2009-06-30 5 views
0

У меня проблемы с приложением, которое я пишу, которое использует Dojo и Zend Framework. Проблема затрагивает только Internet Explorer 6, другие версии IE, ff, chrome и safari работают нормально, без проблем.Dojo аварии ie6 при использовании Zend Framework

Когда IE6 попадает на страницу входа в систему, он сбрасывает данные отправки в диалоговое окно Microsoft. В сценарии входа в систему используется додзе, чтобы обеспечить правильную отформатировку их паролей.

Я видел на некоторых форумах, что вызов функции addOnLoad() в dojo может быть причиной и window.setTimeout() помог бы. http://www.dojotoolkit.org/forum/dojo-core-dojo-0-9/dojo-core-support/dom-manipulation-addonload-crashes-ie6

Проблема заключается в том, как манипулировать заголовком dojo, который у нас есть в layout.phtml в приложении. В настоящее время мы имеем в файле этот код в заголовке.

<?php 
     $this->dojo()->setLocalPath($this->baseUrl().'/javascript/dojo/dojo.js'); 
     $this->dojo()->addStylesheetModule('dijit.themes.tundra'); 
     echo $this->dojo(); 

?> 

Это приводит к следующим в html.

 
    
dojo.require("dijit.form.ValidationTextBox"); 
    dojo.require("dijit.form.Button"); 
    dojo.require("dojo.parser"); 
dojo.addOnLoad(function() { 
    dojo.forEach(zendDijits, function(info) { 
     var n = dojo.byId(info.id); 
     if (null != n) { 
      dojo.attr(n, dojo.mixin({ id: info.id }, info.params)); 
     } 
    }); 
    dojo.parser.parse(); 
}); 
var zendDijits = [{"id":"username","params":{"regExp":"[a-z0-9_\\+-]+(\\.[a-z0-9_\\+-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2,4})$","invalidMessage":"Please enter a valid email address","trim":"true","required":"true","dojoType":"dijit.form.ValidationTextBox"}},{"id":"password1","params":{"trim":"true","lowercase":"true","regExp":"^.*(?=.{6,})(?=.*\\d)(?=.*[a-zA-Z]).*$","invalidMessage":"Invalid Password. Password must be at least 6 alphanumeric characters","required":"true","dojoType":"dijit.form.ValidationTextBox"}},{"id":"submit","params":{"label":"Login","dojoType":"dijit.form.Button"}}]; 



Как я могу изменить это, чтобы попытаться добавить исправления, упомянутые в ссылке, или есть другой способ, чтобы написать это без IE6 сбой все время ?? Я бы предпочел исправить это, чем удалить всю проверку клиента, на случай, если клиент использует IE6.

спасибо ...

+0

Этот код выглядит отлично. Есть ли что-нибудь еще на странице, которая может быть виновником? У меня есть почти то же самое (не через Zend, хотя), работающее на IE6 без проблем. – seth

+0

На самом деле у меня нет двух текстовых полей, которые используют несколько регулярных выражений, чтобы проверить, что имя пользователя является адресом электронной почты и что пароль соответствует требованиям пароля, а также кнопку входа в систему. Помимо этого нет других компонентов додзе. –

+0

Странно. Я просто создал эту страницу http://jsbin.com/utami3, и она отлично работает в моей версии IE6. Какую версию dojo использует Zend? – seth

ответ

1

Можете ли вы уменьшить его вниз, пока вы не найдете то, что происходит сбой IE6? Сэкономьте свой результат как статический html, подтвердите, что он по-прежнему сбой IE и начинает удаление кода. Возьмите этот addOnLoad вообще - он все еще падает? если нет, выньте forEach и т. д. Начать удаление элементов из массива zendDijits - есть ли, в частности, что вызывает проблемы?

Является ли это запасом IE6? Любые плагины/аддоны?

Ваш php должен создать элемент сценария для перемещения dojo.js. У вас есть все, что происходит дальше - этот код Zend, как известно, работает, поэтому нам нужно все информацию, если вы хотите это решить.

Смежные вопросы