2010-08-20 4 views
0

우리는 현재 팝업 창 (*)을 광범위하게 사용하고 IE에서 문제가 발생하는 응용 프로그램을 개발 중입니다. (before으로보고되었지만 해결책). 우리의 주요 창 M 팝업 창 P을 열고 그것에 대한 참조를 유지 :팝업 창 (ExtJS)에서 이벤트 발사

문제는 이것이다. P 다음 개체에 이벤트 처리기를 M에 등록합니다. 때 다음과 같은 오류 메시지와 아웃 이벤트가 발생, IE8 폭탄 :

EXTUTIL.Event.prototype에 불 기능이
JScript object expected 
ext-all-debug.js (Line 1735, Char 17) 
Code: 0 

. 코드는 Firefox, Opera 및 Chrome에서 잘 작동합니다.

이 동작을 제공하는 minimal example을 제공했습니다.

도움을 주시면 감사하겠습니다.

(*) 네, 그럴만한 이유가 있습니다. 그리고 아니, Ext.Window는 옵션이 아닙니다.

답변

2

글쎄, 적어도 나는 tumbleweed 배지를 얻었다. :-)

ExtJS를 사용하여 IE의 브라우저 창에서 이벤트를 실행할 수 없습니다. ExtJS 커뮤니티 지원 팀의 Condor는 다음과 같이 말했습니다 :

Ext는 창문간에 사용하는 것이 안전하지 않습니다. 각 창은 자체 Ext 인스턴스를 가져야하며 두 창 사이의 통신은 기본 데이터 유형 (String, Number, Boolean, Date)을 사용하여 수행해야합니다.

즉, 다른 윈도우에 객체를 전달하기 때문에 다른 윈도우에 이벤트 핸들러를 등록 할 수 없습니다.

사실, 이것은 적어도 IE7 이상에서는 정확하지 않습니다. 브라우저 창에서 참조 개체입니다. 이 할 수없는 것은입니다. Ext 이벤트 시스템을 사용하십시오.

내가 대신 P에 이벤트 핸들러를 등록, IS 사용되는 해결 방법은 다음 "로컬"이벤트를 발생 PM 호출 방법이 있습니다. 물론 우아하고 유연하지는 않지만 모든 브라우저에서 잘 작동합니다. 게다가, 크로스 윈도우 커뮤니케이션을 간단하고 잘 정의 된 상태로 유지하는 것이 우수 실행이라고 생각합니다. 이벤트 핸들러를 사용하는 경우, 어디에 처리되는지를 신중하게 관리해야합니다 (예 : 창이 닫히기 전에 모든 이벤트 핸들러의 등록을 취소해야 함).

+0

+1이 대답이 필요합니다. – demotics2002