2016-12-19 1 views
0

레거시 데이터에 대한 웹 액세스를 제공하는 사이트에서 작업하고 있습니다.
기본 흐름은 사용자가 메뉴에서 쿼리 양식을 선택하고 양식을 작성한 다음 제출하는 것입니다. 서버는 적절한 HTML을 생성하고이를 브라우저로 리턴합니다. 여태까지는 그런대로 잘됐다.브라우저를 다시 실행 한 후에 JavaScript를 실행할 수 있습니까?

일부 보고서는 생성하는 데 시간이 걸릴 수 있습니다. 해당 보고서의 경우 양식 제출시 "처리 중"표시기가 표시됩니다. 이 표시기는 애니메이션 아이콘이 포함 된 일반적으로 숨겨진 <div>입니다.

사용자가 브라우저의 뒤로 단추를 사용하여 쿼리 양식으로 돌아갈 때 문제가 발생합니다. 브라우저가 u 리 형식의 페이지를 다시 표시하면 처리 표시기는 계속 표시됩니다. 그걸 제거하는 유일한 방법은 그 시점에서 페이지를 새로 고치는 것입니다.

뒤로를 숨기려면 어떤 방법이 있습니까?

+0

로드 이벤트에서 처리 표시기를 숨기시겠습니까? –

+0

onload 이벤트는 historyBack에서 실행되지 않습니다 (IE 제외). –

답변

0

페이지가로드 된 후 표시기를 자동으로 제거하도록 JavaScript 이벤트를 설정할 수 있습니다. 이렇게하면 표시기가 나중에 표시기에 지시하지 않으면 표시기가 표시되지 않습니다. 표시기를 절대 표시하지 않으려면 표시기를 표시하는 코드를 자동으로 숨기는 이벤트가 발생한 위치에 놓을 수 있습니다. 둘 다 페이지를로드 할 때 발생합니다.

+0

@Bekim Bacaj가 언급했듯이로드 이벤트는 뒤에서 발생하지 않습니다. 내가 할 수있는 한, 뒤에서 원래 페이지에 이벤트가 발생하지 않습니다. –

0

마침내이 응용 프로그램에서 충분히 잘 작동하는 해결책을 찾았습니다.

Firefox와 같은 일부 브라우저는 페이지가 다시 표시 될 때 document.focus 이벤트를 발생시킵니다. Safari와 같은 다른 사용자는 window.popstate 이벤트를 대신 실행합니다.

이제는이 두 가지 이벤트를 모두 처리하므로 예상 한 99.9 %의 속도로 작동합니다.

관련 문제