html 페이지 닫기, 리셋 전 알림

1865 단어 프런트엔드 html
		var isLoad=false;
		window.onload = function(){
			isLoad=true;
		}; 
		window.onbeforeunload = function() {
			  var result=getEntity('#update_com_form');
			  console.log(Object.getOwnPropertyNames(result).length);
		       if(result!=null && Object.getOwnPropertyNames(result).length>0){
		           	return " , ?";
		       }
		};
		$(window).unload(function(event){
			if(!isSaveSuccess && isLoad){
				var result=getEntity('#update_com_form');
				if(result!=null){
					saveTempComInfo();
				}
			}
		});

시작된 네트워크 요청 ajax는 반드시 동기화해야 합니다.
		// 
		function saveTempComInfo(){
			var result=getEntity('#update_com_form');
			if(result!=null){
				jQuery.ajax({ 
					url:"/pages/auditJson/saveTempComInfo",
					type:'post',
					dataType: "json",
					async: false,// 
					data:result,
					timeout:15000,
					contentType : "application/x-www-form-urlencoded; charset=utf-8",
					success:function(feedresult){
						if(feedresult){
							if(feedresult.status){
								 
							}
						}
					},
					complete:function (XMLHttpRequest, textStatus) {
						if(textStatus=='error'){
							log(" !");
						}else if(textStatus=='timeout'){
							log(' , ');
						}
					}
				});
			}
		}

원리 따위는 투철하지 않다. 동기화 방법이라면 브라우저는 unload 이벤트가 실행되기를 기다렸고, 비동기적인 방법은 요청을 던진 후에 unload를 계속 실행해서 요청을 잃어버려서 요청을 중단시켰다.여기에서 타오바오UED가 beforeunload의 분실률을 연구하는 글을 보았는데, 이 방법을 사용해 달라고 요청하면 분실되는 경우가 없지 않을까요?인터넷에서 또 하나의 연구 페이지가 닫혀서 요청을 보내는 글을 보았습니다. 여기에서 그가 사용하는 이미지 대상을 구축하여 요청을 보냈지만 i와 Firefox도 모두 중단되었습니다. 저는 크롬에서 실행할 수 있다는 것을 실험했습니다.그리고 작가도 i, Firefox를 완성하기 위해 1초를 슬립했다.나는 이 원리가 aax 동기화 방식과 같다고 생각한다. unload의 촉발을 막아서 요청을 완성하는 방법이어야 한다. 구체적으로는 잘 알지 못한다. 큰 소가 미혹을 풀기를 기다린다.

좋은 웹페이지 즐겨찾기