2010-09-10 63 views
0

我試圖在我的應用程序的頁面中使用dojo的對話框,但IE7中的頁面出現了一些問題(或者在某些情況下,在IE 8中有一些問題,當頁面以兼容模式查看時)。 以下是我正在嘗試編寫的頁面的粗略框架結構。IE8中的dojo對話框問題

<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文檔類型是DTD XHTML 1.0過渡// EN」「http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
  • 它工作在FF,鉻和IE 8細,只有在中斷IE 7
  • 我使用道場1.5(不一個來自谷歌的網站,但來自我的服務器的副本,但我不能把它放在示例代碼中)

任何人有任何關於在IE 7中有問題的dojo對話框的想法?

回答

0

原來,這不是dijit Dialogs本身的問題,有一個事件處理程序(根本不連接到dojo)導致錯誤,這就是爲什麼它不能在獨立頁面中重現。