this other thread에있는 것과 비슷한 문제에서 실행 중이며 아이디어가 부족하여 도움을 얻을 수 있습니다.(ASP classic) 중단없이 나머지 코드 실행 중지/자바 스크립트 실행
여기에 있습니다 : 세션 변수를 사용하는 ASP 응용 프로그램이 있으며 멀티탭 (IE8)으로 인해 세션 병합을 처리해야합니다.
내가 클라이언트 측에서 각 브라우저의 탭으로 ID를 (내가 그에 대한 sessionStorage을 사용하고 있습니다) 설정 해요 :
많은 많은 많은 시도 후, 나는 다음과 같은 구현에 온 것 .
(다른 방법을 찾을 수 없어서) 서버 측에서 사용하려면 쿠키에 저장하고 페이지를 다시로드합니다.
마지막으로 내 ASP 페이지에서이 ID를 쿠키에서 가져 와서 응용 프로그램의 모든 세션 변수 접두어로 사용하고 있습니다. 여기
자바 스크립트
LoadJs();
// Cookie and TabID handler
function LoadJs()
{
if (getInternetExplorerVersion() <= 6)
{
//alert("Exit..... old browser version : " + getInternetExplorerVersion());
return;
}
if (sessionStorage.TabID)
{
// Check value in cookie
var tabIdinCookie = readCookie("tabid");
// if ID in cookie not the same as ID in session update cookie and
// refresh the page to update values in server-side
if(!tabIdinCookie || (tabIdinCookie && tabIdinCookie != sessionStorage.TabID))
{
createCookie("tabid",sessionStorage.TabID);
ReloadPage();
}
}
else
{
// Create random ID
var currentTime = new Date();
sessionStorage.TabID = currentTime.getTime();
// Save ID to cookie
createCookie("tabid",sessionStorage.TabID);
createCookie("usingIE8",true,1);
// Refresh the page to make it available from server-side
ReloadPage();
}
return true;
}
// Redirect to the same page to refresh data at server-side
function ReloadPage()
{
window.location.reload(true);
}
의, ASP 코드 :
<%
Dim Nm
Nm=""
response.Write("<br>Reading from cookie....")
if (Request.cookies("usingIE8") <> "")then
if (Request.cookies("tabid") = "") then
'response.Write("<br>No cookie")
'response.flush()
' WHAT TO DO HERE ????
else
Response.Write("<br>Cookie FOUND<br>")
Nm = Request.cookies("tabid")
end if
end if
if (Session(Nm + "LogonTime")="") then
Response.Write("<br><b>Updating session</b><br>")
Session(Nm + "LogonTime") = Now
UpdateInDB(Session(Nm + "LogonTime"))
' Do other stuffs
end if
%>
마침내 문제에 대한 해결 방법을 얻게되어 매우 자랑 스럽지만 페이지가 포스트 작업을 수행하면 모든 코드 ASP가 잘못된 접두사 ID로 렌더링되고 실행되었습니다 (데이터베이스 작업 포함).) right before TabID는 쿠키에서 업데이트 할 수 있으며 페이지는 자바 스크립트로 다시로드 할 수 있습니다. 내 모든 페이지 코드가 새로 고침 후 한 번, 한 번 다시 두 번 실행되고 있음을 의미합니다.
다른 사람이 Response.End()와 같은 smthg를 구현하여 ASP의 나머지 부분이 실행되지 않도록 할 수 있다고 생각합니까? 자바 스크립트를 동시에 실행하지 않고 페이지를 새로 고쳐야한다는 것을 식별 할 수 있으면 실행할 수 있습니다. ? 또는 페이지에서 다른 액션을 수행하기 전에 모든 자바 스크립트 실행을 기다리는 중입니까?
나는 여기에서 찔 렸고, 나를 멈추게해야한다. 해결 방법이 있어야합니다 ... 수정 프로그램을 완료 할 수 있다면 적어도 3 ~ 5 년 전에는 ASP.NET으로 업그레이드되지 않는 많은 ASP (3.0) 응용 프로그램에 적용해야합니다. 사전에
감사합니다, 내가
페이지의 ASP 스크립트의 실행 전에 쿠키를 업데이트하는 각 요청을 잡는 것이 가능하다면 나를 행복하게 만들 것 또 다른 접근을하는 데 도움이! :-) .... 누구? – Manotas
그 밖에 할 일이 없다는 것을 의미합니까? ..... : '( – Manotas