Я пытаюсь использовать диалоговое окно dojo на странице моего приложения, но у меня возникают проблемы со страницей в IE7 (или в некоторых случаях в IE 8, когда страница просматривается в режиме совместимости).
Ниже приводится примерная структура страницы, которую я пытаюсь написать.
<head>
<style type="text/css">
body, html { font-family:helvetica,arial,sans-serif; font-size:90%; }
</style>
<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.5/dojo/dojo.xd.js"
djConfig="parseOnLoad: true">
</script>
<script type="text/javascript">
dojo.require("dijit.Dialog");
var secondDlg;
dojo.addOnLoad(function() {
var foo = new dijit.Dialog({id:'testDialog', title: "test dialog", content: "test content" }, dojo.byId('dialog1Container'));
foo.startup();
var foo2 = new dijit.Dialog({id:'testDialog2', title: "test dialog 2", content: "test content 2" }, dojo.byId('dialog2Container'));
foo2.startup();
});
wrapper = function() {
dijit.byId('testDialog').show();
}
</script>
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.5/dijit/themes/claro/claro.css"
/>
</head>
<body class=" claro ">
<p>
When pressing this button the dialog will popup. Notice this time there
is no DOM node with content for the dialog:
</p>
<a onClick="wrapper();"> Show the test dialog</a>
<br />
<a onClick="dijit.byId('testDialog2').show();"> Show the test dialog</a>
<div id="dialog1Container"></div>
<div id="dialog2Container"></div>
</body>
В IE7 страница просто зависает при попытке отобразить диалоговое окно из 1-й ссылки.
Вот некоторые симптомы болезни, болеющей на этой странице:
- Он ломается, если в DOM больше 1 Dijit.dialog. Если есть только 1, то он отлично работает
- Если в DOM более 1 экземпляра диалогов, правильно работает только последний. Все предыдущие блокируют браузер.
- Работа, которую я использую, заключается в том, чтобы динамически создать экземпляр dijit.Dialog в моем js, вставить его в контейнер dom и подключить собственный метод, чтобы скрыть его. И когда я скрываю это, я также вызываю в диалоге уничтожение, поэтому оно удаляет диалог из домена. Это позволяет мне иметь несколько мест на моей странице, которые могут использовать диалог, но только 1 будет отображаться и присутствовать в DOM в любой момент времени
И дополнительная информация:
- Используемый мной тип документа html - DTD XHTML 1.0 Transitional // EN "" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
- Отлично работает в FF, Chrome и IE 8, только в IE 7
- Я использую Dojo 1.5 (не тот, что на сайте Google, а копию с моего сервера, но я не могу вставить это в пример кода)
Кто-нибудь имеет представление о проблемах в диалоге dojo в IE 7?