2009-06-30 61 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代码已知可以工作,所以如果你想解决这个问题,我们需要所有的信息。