2012-12-04 1 views
0

HTML 기반 AIR 응용 프로그램을 만들고 ActionScript 메서드를 호출하기 위해 HTML 패턴의 특정 패턴 (#AIRBRIDGE_methodName_arguments)과 함께 해시 태그를 추가합니다. 사용 window.location = '#AIRBRIDGE_methodName_arguments'; HTML 응용 프로그램의 JavaScript에서 AIR LocationChangeEvent.LOCATION_CHANGING 이벤트를 호출하지만 StageWebView.location 값에 액세스하려고하면 해시가 반환되지 않습니다.AIR StageWebView에서 LocationChangeEvent.LOCATION_CHANGING의 해시 값 가져 오기

아무도이 경험이 있습니까? 다음은 ActionScript 코드입니다.

public function LoadHtmlPageByName(pageName:String, stage:Stage):void 
    { 
     stage.scaleMode = StageScaleMode.EXACT_FIT; 

     webView = new StageWebView(); 
     webView.stage = stage; 
     webView.addEventListener(LocationChangeEvent.LOCATION_CHANGING, onLocationChange); 
     webView.viewPort = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight); 

     var htmlPath:String = new File(new File("app:/assets/html/" + pageName + "#something").nativePath).url; 
     webView.loadURL(htmlPath); 
    } 

    public function onLocationChange(event:LocationChangeEvent):void 
    { 
     trace("you are now at: ", webView.location); 
    } 

답변

3

# (해시 앵커링) 대신 window.location에 알 수없는 프로토콜을 사용하십시오.

예 : window.location = "unknown :/and_add_here_your_method_info"

Adobe Air는 LocationChangeEvent.LOCATION_CHANGE 또는 LOCATION_CHANGING을 통해이를 잡아낼 수 있습니다.

iOS 참고 사항 : EventError.Error에도 귀 기울입니다. 필자의 경우 Adobe Air 3.4를 사용하면 window.location의 값이 EventError.text로 전달됩니다. 그래서 그것도 확인하십시오.

0

페이지가 다시로드되지 않으면 '위치'가 변경되지 않습니다. 페이지의 제목을 변경하고 읽을 수는 있지만 페이지가 다시로드되지 않으면 변경 될지 확실하지 않습니다.