Проблема с dojo Dialog в IE7 - PullRequest
       19

Проблема с dojo Dialog в IE7

0 голосов
/ 10 сентября 2010

Я пытаюсь использовать диалоговое окно 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?

1 Ответ

0 голосов
/ 05 октября 2010

Оказывается, что это не было проблемой с самими диалоговыми окнами dijit, был обработчик событий (вообще не подключенный к dojo), который вызывал ошибку, поэтому он не воспроизводился на отдельной странице.

...