제목에서 내 문제를 설명하는 방법을 모르겠으니이 점에 대해 용서해주십시오. 내 웹 사이트를 임의의 페이지로 열었고 등록 단추가 있습니다. 정말 간단하지만 제 경우에는 등록 양식을 다른 탭 (또는 창)에 표시해야합니다. "RederPartial"이 아니며 어떤 종류의 팝업 창이 아니라 합법적 인 새 탭입니다. 문제는 등록이 완료되면 (즉, 새로운 사용자가 생성되었을 때) 내 임의의 페이지에서 탐지 할 수 있기를 원합니다. 어떻게이 정보를 전달할 수 있습니까? 첫 페이지를 다시로드하지 않고두 창 사이의 정보 교환
0
A
답변
1
는 두 개의 창은 파일 시스템 API 또는 로컬 저장소를 사용하여, 쿠키, 서버를 통해 (서로 이야기 할 수있는 여러 가지 방법이 있습니다.
Locale Storage은 둘 사이에 이야기하는 가장 쉬운 방법입니다 동일한 도메인에서 온 창이지만 구형 브라우저에서는 지원되지 않습니다. 누군가 등록한 것을 알기 위해 서버에 접속해야하므로 서버 (Ajax // 웹 소켓)를 사용하는 것이 좋습니다.
다음은 임의의 페이지에서 사용할 수있는 다소 간단한 AJAX 솔루션입니다.
(function(){
var formOpened = false;
var registered = false;
//Change to whatever interaction is needed to open the form
$('#registerbutton').on('click', function(){
if (!formOpened){
formOpened = true;
//Will try to poll the server every 3 seconds
(function pollServer(){
$.ajax({
url: "/ajax/pollregistered",
type: "GET",
success: function(data) {
if (data.registered){
registered = true;
//do other stuff here that is needed after registration
}
},
dataType: "json",
complete: setTimeout(function() {if (!registered) pollServer();}, 3000),
//will timeout if request takes longer than 2 seconds
timeout: 2000,
})
})();
//opens the new tab
var win = window.open('/registrationform', '_blank');
win.focus();
}
});
})();
방문자의 세션 키를 '/ ajax/pollregistered'액션으로 사용하여 백엔드 코드를 작성하여 방문자가 사이트로 사용자로 등록되었는지 여부와 시간을 확인할 수 있습니다.
로컬 저장소 사용에 신경 쓸 필요가 없다면 서버 대신 저장소를 폴링하고 등록시 등록 페이지를 로컬 저장소에 쓸 수 있습니다. 이것은 서버에 대한 스트레스가 적지 만 고대 브라우저를 사용하는 사용자에게는 효과가 없을 수 있습니다.
새 탭을 여는 방법은 완전히 신뢰할만한 것은 아닙니다. 기술적으로 javascript로 새 탭을 여는 확실한 방법은 없습니다. 그것은 브라우저와 사용자의 선호도에 달려 있습니다. 새로운 탭을 여는 것은 안티 팝업 플러그인을 사용하는 사용자를 차단할 수 있습니다.
그렇다면 디자인을 수정하고 대신 하나의 창으로 작업하는 방법을 찾아 보시기 바랍니다. 자신과 사용자 모두에게 더 나을 것입니다.
관련 문제
- 1. 두 배열 요소 사이의 교환 값 (단순)
- 2. 두 개의 HTML과 PHP 사이의 교환 변수
- 3. 두 개의 창 데이터 교환 WPF
- 4. 두 웹 응용 프로그램 간 정보 교환
- 5. 두 웹 응용 프로그램 간의 정보 교환
- 6. PyQT4 - 두 창 사이의 통신
- 7. 두 Windows 사이의 정보 전송 C#
- 8. 클라이언트 서버 교환 정보
- 9. 정보 공유 DLL을 호출하여 두 스레드 간의 정보 교환
- 10. 기본 HTML 페이지와 팝업 창 사이의 데이터 교환
- 11. 오픈 클래스 사이의 의사 교환
- 12. 그리드와 목록 조각 사이의 교환
- 13. C# - 인스턴스 간 정보 교환
- 14. 응용 프로그램의 두 창 사이의 통신
- 15. 두 창 사이의 통신 방법은 무엇입니까?
- 16. DotNetOpenAuth/WebSecurity 기본 정보 교환
- 17. Regex : 두 마커 사이의 DNA 정보 추출
- 18. 창 사이의 통신 방법은 무엇입니까?
- 19. HTML5 localstorage를 사용하여 정보 교환
- 20. 무선으로 연결된 두 대의 컴퓨터 간의 정보 교환
- 21. 일반 정보 창
- 22. 두 서버간에 파일을 교환
- 23. 교환 두 'onclicks'즉
- 24. tkinter에서 부모와 자식 위젯 사이의 신호 교환
- 25. 창 및 정보 추적
- 26. 아이콘에 정보 창 추가
- 27. 창 파일 정보 얻기
- 28. MAP에 여러 정보 창
- 29. 마커 정보 창
- 30. 창 저자 정보 속성
대단히 감사합니다. 나는 그것이 최적이 아니라는 것을 안다. 그러나 나는 다른 방법을 생각하지 않는다. 어쩌면 IFrame을 사용합니까? 것은 그 사용자가 recepies를 만들 수있는 그것의 웹 사이트이고, 나는 조리법을 만든 후에 \ 등록을 등록 할 수 있기를 원한다. 또한 crossdomain 리디렉션이 필요한 페이스 북과 같은 외부 서비스를 통해 \ login을 등록하도록합니다. 그리고 사용자가 아약스를 통해 업로드하는 이미지가 있고 페이 스북 벽에 레시피가 너무나 공개되어 게시하기 전에 등록해야하므로 레시피 양식 만들기 데이터를 작성하는 것은 까다로운 작업입니다. – user3198994