개발

react-native WebView내 window.close();

고양이양말 2022. 8. 22. 10:47

웹에서의 window.close() 사용을 잡아채 postMessage로 앱에 전달한다.

 

const INJECTEDJAVASCRIPT = 'const { close: _close } = window; window.close = function() { window.ReactNativeWebView.postMessage("closeWebview"); _close();};';
...
    const handleMessage = async (e) => {
        const strEvent = e.nativeEvent.data;
        //console.log('@#@#', strEvent);
        switch(strEvent) {
            case 'closeWebview':
                handleClose();	// 웹뷰 close 할 함수 만들어서 호출하기
                break;
        }
    };
...
<WebView
    source={{uri:loadLink,
        headers: {'authorization' : token, 'User-Agent':userAgent+ENV.version}
    }}
    javaScriptEnabled={true}
    injectedJavaScript={INJECTEDJAVASCRIPT}
    onMessage={handleMessage}
/>