使用Zend Framework时,dojo崩溃ie6

时间:2009-06-30 12:50:11

标签: php zend-framework dojo

我遇到的问题是我正在编写的使用Dojo和Zend Framework的应用程序。该问题仅影响Internet Explorer 6,其他版本的IE,ff,chrome和safari工作正常,没有任何问题。

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

感谢...

1 个答案:

答案 0 :(得分:1)

你可以减少它,直到你发现IE6崩溃了吗?将输出保存为静态html,确认它仍然崩溃IE并开始删除代码。完全取出addOnLoad - 它还会崩溃吗?如果没有,请取出forEach,依此类推。开始从zendDijits数组中删除元素 - 是否有一个特别导致问题?

这是IE6的股票吗?任何插件/插件?

你的php应该生成一个脚本元素来拉动dojo.js.你已经有了很好的事情 - Zend代码已知可行,所以如果你想解决这个问题,我们需要所有信息。

相关问题