2010-07-05 2 views
0

네트워크 오류가 발생하면 Chrome에서 오류 처리기의 이벤트 객체가 IE 및 Flash Player와 다르게 동작합니다 (브라우저가 아닌 swf를 직접 실행). 다음 테스트 코드 고려 : IE 및 플래시 플레이어에서Chrome AS3 URLLoader 네트워크 오류에서 다른 동작

 
private function loadData():void { 
    var loader:URLLoader = new URLLoader(); 
    loader.addEventListener(IOErrorEvent.IO_ERROR, onError); 
    loader.addEventListener(Event.COMPLETE, onColmplete); 
    loader.load(new URLRequest("http://www.jsfbjdsssde.com")); 
    debugField.text = "loading"; // this is a TextField 
} 

private function onColmplete(evt:Event):void { 
    debugField.text = "complete"; 
} 

private function onError(evt:IOErrorEvent):void { 
    debugField.text = "error : " + evt.text; 
} 

을 debugField는

error : Error #2032: Stream Error. URL: http://www.jsfbjdsssde.com
를 표시하지만 크롬에서이 URL 텍스트에서 제거된다
error : Error #2032
이다. 왜 이것이 다른가요? 누구든지 오류 처리기에서 URL을 가져 오는 방법을 제안 할 수 있습니까? 아니면 크롬 자체의 버그입니까?


내 크롬 버전은 5.0.375.86

답변

3

나는 이것을 확인하지 않은,하지만 당신이 크롬에 설치된 플래시 플러그인 (대신 디버그 버전)의 릴리스 버전을 가지고 아주 가능성이 높습니다. 디버깅 출력은 릴리스 플레이어에서 간략하지 않습니다.

+0

그럴 수도 있습니다. 어도비의 설명서에 URL이 포함될 것인지 아닌지에 대한 자세한 내용은 없습니다 (적어도 찾지 못했습니다). 오류 리스너에서 URL을 가져 오는 적절한 방법이 있습니까? 아니면 절대 의지해서는 안됩니다. – taskinoor

+0

@ taskinoor. 내가 생각할 수있는 유일한 신뢰할 수있는 방법은 직접 추적하는 것입니다. 오류 메시지 문자열의 파싱에 의존하는 것이 좋을지라도 API의 일부는 아닙니다. 그것은 기본적으로 예고없이 변경 될 수 있습니다 (또한 경우에 따라, 항상 사용 가능하지 않을 수도 있음). –

+1

반면에 로더를 시작할 때 URL을 확실히 알고 있어야합니다. 추가 변수가있는 것만 큼 간단 할 수 있습니다 (한 번에 두 번 이상 호출하지 않는 경우). 좀더 구조체를 추가하려면 내부적으로 URLLoader를 사용하는 사용자 정의 로더를 만들고 getter를 통해 요청 된 URL을 노출하거나 URL을 응답 데이터와 함께 전달하는 사용자 정의 이벤트를 만들 수도 있습니다 (또는 어쩌면 url하지만 전체 URLRequest 객체, 당신이하려는 일에 의미가있는 경우). –

관련 문제