위치를 모니터링하고 있습니다.XHR 앱의 기록에 대한 솔루션을 해시하시겠습니까?
잘 알려진 대로 XHR(AJAX) 웹 애플리케이션에서는 앱에 대한 기록이 빌드되지 않으며 새로 고침 버튼을 클릭하면 사용자가 현재 활동에서 이동하는 경우가 많습니다.우연히 위치를 발견했습니다.해시(예:http://anywhere/index.html#somehashvalue
문제를 위치 의 현재 핸들러를 상태를 합니다.해시를 사용하여 앱의 현재 상태를 알리고 페이지 로드 핸들러를 사용하여 해당 상태를 재설정합니다.그것은 정말 멋지고 단순합니다.
이것은 제가 위치를 사용하는 것에 대해 생각하게 했습니다.내 앱의 기록을 추적하기 위한 해시.기존 라이브러리는 iframe 등을 사용하기 때문에 사용하고 싶지 않습니다.여기 제 동전과 동전이 있습니다. 애플리케이션 페이지가 로드되면 다음과 같이 시작합니다.
setInterval(
function(){
if (location.hash !== appCache.currentHash) {
appCache.currentHash = location.hash;
appCache.history.push(location.hash);
/* ... [load state using the hash value] ... */
return true;
}
return false;
}, 250
);
(appCache는 응용 프로그램 변수를 포함하는 미리 정의된 개체입니다.)이 방법은 해시 값에서 응용 프로그램의 모든 작업을 트리거하는 것입니다.제대로 된 브라우저에서 해시 값 변경은 기록에 항목을 추가하지만 IE(<= 7)에서는 그렇지 않습니다.모든 브라우저에서 다른 해시 값이 있는 페이지로 뒤로 또는 앞으로 이동해도 페이지 새로 고침이 트리거되지 않습니다.여기서 인터벌된 기능이 대신합니다.해시 값 변경이 감지될 때마다(프로그래밍 방식으로 또는 뒤로 또는 앞으로 클릭하여) 이 기능을 사용하여 앱이 적절한 작업을 수행할 수 있습니다.응용프로그램은 자체 기록을 추적할 수 있으며 응용프로그램에 기록 단추를 표시할 수 있습니다(특히 IE 사용자).
내가 보기에 이것은 브라우저를 통해 작동하며 메모리나 프로세서 리소스 측면에서 비용이 들지 않습니다.그래서 제 질문은: 이것이 XHR 앱의 기록을 관리할 수 있는 실행 가능한 솔루션이 될 수 있을까 하는 것입니다.장점과 단점은 무엇입니까?
업데이트: 저는 홈브루 프레임워크를 사용하기 때문에 기존 프레임워크 중 하나를 사용하고 싶지 않았습니다.위치를 사용할 수 있습니다.IE의 해시와 그것의 이력에도 있습니다. 저는 당신에게 유용할 수 있는 간단한 스크립트(네, iframe이 필요합니다)를 만들었습니다.제 사이트에 게시했으니 자유롭게 사용/수정/비판하세요.
대부분의 솔루션에서는 다음과 같은 세 가지 문제가 함께 발생합니다.
- 뒤로 단추
- 즐겨찾기 기능
- 새로 고침 단추
그window.location.hash
경우 이 세 해결할 수 : " 기반솔루션은대경세우해모가수결있다할니: "의 입니다.hash
는 응용 프로그램/스캐너의 상태로 매핑되므로 사용자가 "뒤로"/"앞으로"/"뒤로"/"뒤로" 중 하나를 누르고 해시의 현재 상태로 점프할 수 있습니다.주소 표시줄의 값이 변경되었기 때문에 책갈피를 설정할 수도 있습니다.(숨김)iframe
브라우저 기록에 영향을 미치지 않는 해시와 관련된 IE에 필요함).
은 모니터링 할 수 .window.location.hash
매우 효과적인 해결책을 위해서도.
구글 지도는 이것의 좋은 예입니다.각사 작에대 캡커 에 window .location 치수hash없다니습할배너무태가용자업처된해hash (지도 대 창 해시(지도 중심, 검색 결과, 위성 대 지도 보기, 정보 창 등).은 숨겨진 그서그숨겨형상태저태장다니합를로에 합니다.iframe
부수적으로, 이것은 [소프트] "새로 고침" 문제도 해결합니다.이 페이지로 연결 단추를 통해 책갈피 기능을 개별적으로 해결합니다.
저는 단지 당신이 생각하고 있는 문제 영역을 알고/분리하는 것이 가치가 있다고 생각했습니다.
사용자가 앞으로 갔는지 뒤로 갔는지 알기가 어려울 것 같습니다.상태 추적을 시작하려면 URL이 /myapp#page1로 시작한다고 말합니다.그런 다음 사용자가 url/myapp#page2를 만드는 작업을 수행한 다음 사용자가 url/myapp#page1을 다시 만드는 작업을 수행합니다.이제 그들의 역사는 모호하고 여러분은 무엇을 제거해야 할지 말아야 할지 모를 것입니다.
기록 프레임워크는 iframe을 사용하여 사용자가 언급한 브라우저 불일치를 해결합니다.iframe을 필요로 하는 브라우저에서만 사용하면 됩니다.
또 다른 단점은 사용자가 사용자 지정 뒤로 단추로 이동하기 전에 항상 브라우저 뒤로 단추로 이동한다는 것입니다.250ms마다 역사를 읽는 것이 지연될 것이라는 느낌도 듭니다.간격을 좀 더 좁힐 수도 있겠지만, 그렇게 되면 일이 잘 안 풀릴지 모르겠어요.
저는 yui의 히스토리 매니저를 사용했고, 모든 브라우저(특히 ie6)에서 항상 완벽하게 작동하지는 않지만, 많은 사용자와 개발자들이 사용하고 있습니다.그들이 사용하는 패턴도 꽤 유연합니다.
이 모든 것들은 모든 범위의 브라우저를 지원하는 데 중요하지만, 바라건대 그 필요성이 사라지기를 바랍니다.IE8과 FF3.6 모두 온해시 변경 지원을 도입했습니다.나는 다른 사람들이 선례를 따를 것이라고 상상합니다.시간 초과나 iframes를 사용하기 전에 이 기능의 가용성을 확인하는 것이 좋을 것입니다. 현재 가장 좋은 솔루션이기 때문입니다. 그리고 IE에서도 작동합니다!
언급URL : https://stackoverflow.com/questions/568719/is-monitoring-location-hash-a-solution-for-history-in-xhr-apps
'programing' 카테고리의 다른 글
mysql 사용자가 볼륨에 액세스할 수 없는 것 같아 Azure에서 mariadb 컨테이너를 시작할 수 없습니다. (0) | 2023.08.28 |
---|---|
마리아 사용에 필수적인 도구DB (0) | 2023.08.28 |
Powershell에서 Python을 종료하기 위한 Ctrl-C가 작동하지 않습니다. (0) | 2023.08.28 |
PHP 컴파일 오류: "배열에서 빈 배열 요소를 사용할 수 없습니다." (0) | 2023.08.28 |
node.js 대 ASP의 예기치 않은 결과입니다.NET Core 성능 테스트 (0) | 2023.08.23 |