2009-06-30 35 views
0

我遇到了我正在編寫的使用Dojo和Zend Framework的應用程序的問題。這個問題隻影響Internet Explorer 6,其他版本的IE瀏覽器,ff,chrome和safari都可以正常工作,沒有任何問題。dojo在使用Zend Framework時崩潰ie6

當IE6登錄到登錄頁面時,它將發送細節崩潰到微軟對話框。登錄腳本使用dojo爲用戶提供一些驗證,以確保他們的密碼格式正確等。

我在某些論壇上看到,dojo中的addOnLoad()函數調用可能是原因,而window.setTimeout () 有助於。 http://www.dojotoolkit.org/forum/dojo-core-dojo-0-9/dojo-core-support/dom-manipulation-addonload-crashes-ie6

我遇到的問題是如何操作我們在應用程序中的layout.phtml中的dojo頭。我們目前在頭文件中有這個代碼。

<?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。

謝謝...

+0

上面的代碼看起來不錯。頁面上還有什麼可能是罪魁禍首? 我有幾乎相同的東西(不通過Zend雖然)在IE6上運行沒有任何問題。 – seth 2009-06-30 16:45:11

回答

1

你可以減少它,直到你找到什麼是崩潰的IE6?保存你的輸出爲靜態HTML,確認它仍然崩潰IE並開始刪除代碼。把那個addOnLoad放到一起 - 它還會崩潰嗎?如果不是,則取出forEach,依此類推。開始從zendDijits數組中刪除元素 - 是否有一個特別是導致麻煩?

這是一個股票IE6?任何插件/插件?

你的php應該生成一個腳本元素來拉動dojo.js.你有這麼奇怪的事情 - Zend代碼已知可以工作,所以如果你想解決這個問題,我們需要所有的信息。