У меня проблемы с приложением, которое я пишу, которое использует 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.
спасибо ...
Этот код выглядит отлично. Есть ли что-нибудь еще на странице, которая может быть виновником? У меня есть почти то же самое (не через Zend, хотя), работающее на IE6 без проблем. – seth
На самом деле у меня нет двух текстовых полей, которые используют несколько регулярных выражений, чтобы проверить, что имя пользователя является адресом электронной почты и что пароль соответствует требованиям пароля, а также кнопку входа в систему. Помимо этого нет других компонентов додзе. –
Странно. Я просто создал эту страницу http://jsbin.com/utami3, и она отлично работает в моей версии IE6. Какую версию dojo использует Zend? – seth