RN webview 내에서 window.close 이벤트를 감지하는 방법이 있나요?


(나보윤) #1

리액트 네이티브에서 웹뷰를 띄웠고… 웹뷰내에서 window.open 이벤트로 인한 새창이 열립니다.
여기까진 문제없는데 그 팝업창을 window.close 로 닫게 되면 webview 에는 그냥 하얀 화면만 나오게 됩니다. window.close 이벤트를 감지가 가능하면 window.close 발생시
웹뷰의 url 을 변경한다던가 reload 한다던가 해서 처리하면 좋은데 감지가 안되네요

안드로이드의 onCloseWindow(WebView window) 같은 메소드가 있으면 좋겠습니다.

그럼 감사합니다.


(Juwon Jeong) #2

아래의 두가지 방법을 이용해서 window close 메소드를 override하여 close 호출시 postMessage를 통해 웹뷰에 알려주시거나 window.onbeforeunload 같은 이벤트에서 postMessage를 통해 웹뷰에 알려주는건 어떨까요?

override

const { close: _close } = window;                  
window.close = function() {
    //...window.postMessage 같은 webview에 알릴 코드 실행
    _close();                             
};

beforeunload

window.addEventListener('beforeunload', function (e) {
    //...window.postMessage 같은 webview에 알릴 코드 실행
});

(나보윤) #3

WebView단 즉 웹페이지 내부에서 코드 수정이 없이
react native 단에서 모두 처리해야 해요…

위에 주신 코드를 보면 웹페이지 와 app 단에서 서로 연동해야 하는 작업이 필요할듯 하네요…

app 단에서 모두 처리 하는 방법은 없을까요?