2013-07-08 1 views
4

Android 용 Chrome 과 Chrome을 개발 중입니다. 내가 가진 문제는 열려있는 브라우저 탭을 추적해야한다는 요구 때문입니다. 각 탭의 sessionStorage에 고유 한 ID를 저장하여이 작업을 수행합니다. 그런 다음 각 탭에 액세스 할 수있는 localStorage 배열에 각 ID를 등록하여 열린 탭을 추적합니다.Android Chrome window.onunload

문제는 window.onunload 이벤트를 사용하여 탭을 닫을 때 localStorage에서 ID를 제거 할 수 없다는 것입니다. 이 코드는 데스크톱 Chrome에서 제대로 작동하지만 Android에서 작동하지 않습니다.

$(window).on('beforeunload', function() { 
    removeWindowGUID(); 
}); 

function removeWindowGUID() { 
    var guid = sessionStorage.getItem("WindowGUID"); 
    var tmp = JSON.parse(localStorage.getItem("WindowGUIDs")); 
    tmp = tmp.remove(guid); // remove is a custom prototype fn 
    localStorage.setItem("WindowGUIDs", JSON.stringify(tmp)); 
} 

이 이벤트는 페이지를 다시로드 할 때 발생합니다. 닫을 때가 아닙니다. 또한 pagehide 이벤트를 사용해 보았습니다.

답변

2

브라우저에 따라 다릅니다. 일부는 .onunload을 사용하고 일부는 onbeforeunload을 사용합니다.

가장 빠른 해결책은 ICS,

window.onunload = window.onbeforeunload = function() { 
    var guid = sessionStorage.getItem("WindowGUID"); 
    var tmp = JSON.parse(localStorage.getItem("WindowGUIDs")); 
    tmp = tmp.remove(guid); // remove is a custom prototype fn 
    localStorage.setItem("WindowGUIDs", JSON.stringify(tmp)); 
}); 

는 진저 브레드에서 테스트 네이티브 안드로이드 브라우저를 사용 & 젤리 콩입니다.

+0

브라우저이 작업을 수행하려면 특별히 Chrome이 필요합니다. – sreimer

+0

@sreimer 예, Chrome에서 작동합니다. 언급 한대로 – Ohgodwhy

+0

은 데스크톱에서만 작동하며 모바일 크롬에서는 작동하지 않습니다. 마치 탭을 닫을 때 onunload 및 onbeforeunload 또는 onpagehide가 실행되지 않는 것과 같습니다. – sreimer

관련 문제