2009-06-30 4 views
0

Dojo 및 Zend Framework를 사용하는 필자가 작성한 응용 프로그램에 문제가 있습니다. 이 문제는 Internet Explorer 6, IE, ff, 크롬 및 사파리의 다른 버전에만 영향을 미치며 문제없이 잘 작동합니다.Zend Framework를 사용할 때 do6이 ie6 충돌합니다.

IE6이 로그인 페이지에있는 경우 세부 정보를 Microsoft 대화 상자로 보내면 충돌이 발생합니다. 로그인 스크립트는 dojo를 사용하여 사용자가 비밀번호가 올바르게 포맷되었는지 확인합니다.

dojo에서 addOnLoad() 도움이 될 것이다. 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

+0

실제로 내가 가진 모든 것은 사용자 이름이 전자 메일 주소이고 암호가 암호 요구 사항과 일치하는지, 로그인 단추와 일치하는지 확인하기 위해 몇 가지 정규식을 사용하는 2 개의 텍스트 상자입니다. 그 외의 다른 도장 구성 요소는 없습니다. –

+0

이상한. 난 그냥이 페이지 http://jsbin.com/utami3 설정하고 잘 IE6 내 버전에서 작동합니다. Zend는 어떤 dojo 버전을 사용합니까? – seth

답변

1

당신은 IE6 충돌을 손쉽게 찾을 수 있습니다 당신이 때까지 아래로 줄일 수 있습니까? 출력을 정적 HTML로 저장하고 IE가 여전히 충돌하는지 확인하고 코드 제거를 시작하십시오. addOnLoad를 모두 꺼내십시오 - 여전히 충돌합니까? 그렇지 않은 경우, forEach를 꺼내는 등의 작업을 수행합니다. zendDijits 배열에서 요소를 제거하기 시작합니다. 특히 문제를 일으키는 요소가 있습니까?

이것은 주식 IE6입니까? 모든 플러그인/애드온?

귀하의 PHP는 dojo.js를 가져 오기위한 스크립트 요소를 생성해야합니다. 젠드 코드가 잘 작동한다고 알려져 있으므로, 이것을 해결하고 싶다면 모두 정보가 필요합니다.