我遇到了我正在編寫的使用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。
謝謝...
上面的代碼看起來不錯。頁面上還有什麼可能是罪魁禍首? 我有幾乎相同的東西(不通過Zend雖然)在IE6上運行沒有任何問題。 – seth 2009-06-30 16:45:11