2012-04-22 2 views
3

좋아요 사용자 위치를 반입 한 다음 지리적 위치 (openmapsapi) 을 반전 한 다음 특정 도시 이름 (google news api)과 함께 뉴스를 표시하는 프로그램을 만들고 있습니다.다트 한 개 이상 window.message.add

다음 코드를 openmap api에 추가하고 로컬 저장소에 도시를 가져 오십시오. 거기에서 Google 뉴스 api에 대해 비슷한 코드를 사용하고 싶지만 아마도 두 개의 window.on.data 행을 추가 할 수 없습니다. 코드의 일부는 Seth Ladd의 블로그에서 가져온 것으로 모든 것이 어땠는지 조금 우둔합니다. 일.

window.on.message.add(locReceived); 
    Element script = new Element.tag("script"); 
    var somelat=window.localStorage.$dom_getItem("LAT"); 
    var somelng=window.localStorage.$dom_getItem("LNG"); 
    var someurl="http://nominatim.openstreetmap.org/reverse? format=json&lat="+somelat+"&lon="+somelng+"&addressdetails=1&json_callback=callbackForMapsApi"; 
    script.src=someurl; 
    document.body.elements.add(script); 

이 내가

 <script type="text/javascript"> 
function callbackForJsonpApi(s) { 
    window.postMessage(JSON.stringify(s), '*'); 
} 

function callbackForMapsApi(s) { 
    window.postMessage(JSON.stringify(s), '*'); 
} 
</script> 

이별로 전에 웹 기술에 일을 사용하고 내 관련 HTML 코드입니다, 어떤 도움을 주시면 감사하겠습니다.

답변

3

모든 메시지 처리기가 동시 처리 문제를 일으킬 수있는 모든 메시지를 자바 스크립트에서 수신하므로 window.on.message.add 중 하나만 사용해야합니다. 대신 JavaScript 코드가 보내는 메시지에 대상 헤더를 추가하도록하십시오.

function callbackForJsonpApi(s) { 
    s.target = "dartJsonHandler" 
    window.postMessage(JSON.stringify(s), '*'); 
} 

function callbackForMapsApi(s) { 
    s.target = "dartMapsHandler"; 
    window.postMessage(JSON.stringify(s), '*'); 
} 

그런 다음이 대상 헤더를 다트 코드로 전환하십시오. DartGap (PhoneGap의 다트 래퍼)에서 비슷한 트릭을 수행하면 관련 코드 here을 살펴볼 수 있습니다.

관련 문제