FRAMEWORK/CORDOVA

INAPPBROWER에서 값 받아오기

나나나나나나나ㅏ나난ㄴ나ㅏ나나 2020. 3. 5. 18:11
728x90

환경 

  • cordova 

 

코르도바 하이브리드로 개발하던중 팝업창을 만들고 팝업창이 닫힐때 팝업창에서 데이터를 전송해서 가져오고 싶었다. 

그냥 window.open()으로 해서 가져오면 안되나 싶었는데 그렇게 되지는 않는다 

결국 플러그인 설치해서 inappbrower로 팝업창을 띄워야된다....

 

 

플러그인 설치

cordova plugin add cordova-plugin-inappbrowser

 

다른곳 보면 아래와 같이 가져오는 경우가 많다 inappbrower에서는 undefined으로 찾을수가 없다고 한다. 

var popup = window.open(url, '_blank', 'location=yes')
console.log(popup.document.getElementById('div'));

 

해결

그래서 inappbrower 개발문서를 열심히 보고 또 보고 한 결과 찾았다! executeScript를 사용했는데, 팝업창 열린걸 자식창이라고하고 원래 창을 부모창이라고 편하게 지칭을 하면 자식창에 script를 추가하고 완료되면 함수를 실행하는 옵션이라구한다!

 

popup = window.open(url, '_blank', 'location=yes');
popup.addEventListener('loadstop', function(e){
	var code = `(function(){
    				var return-code = $("#div").innerHTML;
                    return return-code;
                })()
    popup.executeScript({
    	code: code
    }, function(return_val){
    	console.log(return_val)	/* $("#div").innerHTML */
    })
    
})

 

정리해서 보면 간단한거같은데 몇시간을 낭비한건지 9ㅅ9

 

* 참고  https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-inappbrowser/

728x90