백본보기에서 새 창을 시작해야합니다. 내보기 파일에서 HTML 템플릿을 사용 중입니다.백본 js 뷰에서 window.open 사용; 보기 기능에 대한 참조 손실
HTML 템플릿 코드의 덩어리를 가지고 :
<a id="providerIcons">
<div style='display:inline-block; padding-right:30px;text-align: center;'><img width='110' height='110' src='app/assets/images/dropboxLogo.jpg' /><br/>DropBox</div>
</a>
내보기 파일이 이벤트 매핑 설정 :
events: {
"click #providerIcons" : "onProvidersClick"
},
을하고 난 onProvidersClick도보기에 정의되어 있습니다
onProvidersClick: function() {
var URL = "https://www.dropbox.com/1/oauth2/authorize?client_id=xyz&response_type=token&redirect_uri=http://localhost:9098/handleOauth.html";
**var oauthwindow = window.open(URL, "SignIn", "width=650,height=550,toolbar=0,scrollbars=0,status=0,resizable=0,location=0,menuBar=0");**
oauthwindow.focus();
return false;
},
이 뷰 파일은 "saveToken"함수도 정의합니다.
saveToken: function() {
alert("connectorsmain-view.js; saveToken()");
}
창이 잘 실행됩니다. 그러나 oAuth 프로세스 (새 창에서 시작됨)에서 콜백/리디렉션이 있으며 oAuth 플로우가 끝날 때 창에 새 HTML 파일을 가리키고로드합니다. window.opener.saveToken이 아니라고 나는 오류를 받고 있어요
var access_token = (window.location.hash||window.location.search).match(/access_token=([^&]+)/);
if(access_token){
// Save the first match
access_token = decodeURIComponent(access_token[1]);
**window.opener.saveToken(access_token);**
window.close();
}
: 내 서버에있는 그 최종 HTML 파일은, 새로운 창을 열어 원래 화면으로 돌아 access_token은 다음 Oauth를 전달하는 스크립트를 가지고 함수. View 파일 레벨에서 "saveToken"fxn을 인식하지 못합니다.
뷰의 템플릿 인 HTML에서 "saveToken"함수를 정의하면 예상대로 작동합니다. 그러나 템플릿 파일이 아니라 View 파일에 함수가 필요합니다.
모든 의견에 진심으로 감사드립니다.
그게 효과가 있습니다! – LWinni