IE7中的dojo对话框问题

时间:2010-09-10 18:27:59

标签: internet-explorer-7 dojo modal-dialog

我正在尝试在我的应用程序的页面中使用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中,当页面尝试从第一个链接显示对话框时,页面就会挂起。 以下是这页病态的一些症状:

  • 如果dom中有超过1个Dijit.dialog,则会中断。如果只有1,那么它可以正常工作
  • 如果dom中有多个对话框实例,则只有最后一个实例正常工作。之前的所有内容都冻结了浏览器。
  • 我正在使用的工作是在我的js中动态创建dijit.Dialog的实例并将其插入到dom容器中并挂钩自定义方法来隐藏它。当我隐藏它时,我也在对话框上调用destroy,以便从dom中删除对话框。这允许我在我的页面中有多个可以使用对话框的位置,但是只会显示1个并且在任何时间点都会出现在dom中

还有一些额外信息:

  • 我正在使用的html doc类型是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 :(得分:0)

原来这不是dijit Dialogs本身的问题,有一个事件处理程序(根本没有连接到dojo)导致错误,这就是它在独立页面中无法重现的原因。 / p>