我遇到了我正在编写的使用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