2014-05-22 2 views
5

내 노드 - 웹킷 응용 프로그램은 제어창과 프리젠 테이션 창으로 구성됩니다.다른 창에서 노드 - Webkit 시작 기능

컨트롤 창은 데이터를 수집하고 결국 window.open 함수를 통해 프레젠테이션 창을 시작합니다.

이제 프레젠테이션 창이 global 변수의 일부 정보에 액세스 할 수 있습니다.

이제 SVG 요소 등을 만들어 해당 정보를 그래픽으로 표현하고 싶습니다.

나는 정확히 그것을 수행하는 자바 스크립트 함수를 가지고 있지만, 컨트롤 윈도우에서 그 함수를 시작하는 방법이 필요하다.

이 함수는 다른 윈도우의 DOM에 액세스해야하므로 직접 호출 할 수는 없습니다.

나는 다른 윈도우의 객체에 eval 기능을 사용하여 시도했지만, 그 메시지

[18719:0522/205047:ERROR:breakpad_linux.cc(1225)] crash dump file written to 
/tmp/chromium-renderer-minidump-788bf8d0c68301d5.dmp 

이해야 할 일이 될 것입니다 가장 좋은 방법으로 노드 웹킷 충돌?

setInterval을 사용하여 전역 변수를 정기적으로 확인 하시겠습니까?

답변

3

하나의 솔루션은 global 변수에 술집/하위 기능을 부착입니다 . 지금까지 사용했던 설정은 jQuery 기반이지만 구성하지 않고도 만들 수 있습니다. 첫째는 this 코드의 변형을 사용하여 초기화 :

var messages = messages || {}; 
    global.Message = global.Message || function(id) { 
     var callbacks, method, 
     message = id && messages[ id ]; 
     if (!message) { 
     callbacks = jQuery.Callbacks(); 
     message = { 
      publish: callbacks.fire, 
      subscribe: callbacks.add, 
      unsubscribe: callbacks.remove 
     }; 
     if (id) { 
     messages[ id ] = message; 
     } 
     } 
     return message; 
    }; 

그리고 어디 이벤트가 게시 된 다음과 같은 패턴을 사용하여 가입 할 수있는 창 사이. 하나의 창에서 데이터를 게시 할 수 있습니다.

global.Message("someButtonClicked").publish(data); 

그러면 다른 하나는 데이터를 수신 할 수 있습니다.

global.Message("someButtonClicked").subscribe(onButtonClicked); 

function onButtonClicked(data) { 
    console.log(data); 
}; 
+0

감사합니다. – apexys

관련 문제