나는 해결책을 찾았다 고 생각합니다. 당신이 더 나은 해결책을 가지고 있다면 자유롭게 체임 할 수 있습니다.
OnClientClick="return FadeOut();"
현재 내용에 가시 퇴색되는 경우는 false를 돌려 아래로 내 페이드 아웃 메소드를 호출 : 내 버튼에서
나는 다음과 같은 OnClientClick 이벤트 핸들러를 배치했다. false를 반환하면 UpdatePanel이 호출했을 비동기 포스트 백이 모두 취소됩니다.
일단 애니메이션이 끝나면 IsFadedIn 변수를 false로 설정하고 버튼을 다시 클릭합니다 (버튼을 클릭하는 코드가 지금 브라우저 간 호환이되지 않는다는 것을 알고 있습니다. 이것은 개념 증명 일 뿐이므로 그것은 고쳐질 필요가있을 것이다). IsFadedIn이 false로 설정되었으므로 이번에 FadeOut 메서드는 false를 반환하지 않으므로 UpdatePanel은 다시 게시를 수행합니다.
로드가 완료되면 새 내용이 사라질 수 있도록 이벤트 핸들러가 pageLoaded 이벤트에 첨부되어 있습니다.
좋은 : 이제 새 콘텐츠를로드하기 전에 애니메이션을 끝낼 수 있습니다.
불량 : 포스트 백 프로세스를 시작하기 전에 애니메이션이 끝날 때까지 기다려야하므로 사용자는 실제로 조금 더 기다려야합니다.
var opacity = 100;
var IsFadedIn = true;
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(FadeIn);
function FadeIn(sender, args) {
if (!IsFadedIn) {
if (opacity < 100) {
opacity += 15;
$get("LowerPageContent").style.filter = "alpha(opacity=" + opacity + ")";
setTimeout(FadeIn, 1);
} else {
$get("LowerPageContent").style.filter = "alpha(opacity=100)";
IsFadedIn = true;
}
}
}
function FadeOut() {
if (IsFadedIn) {
if (opacity > 0) {
opacity -= 15;
$get("LowerPageContent").style.filter = "alpha(opacity=" + opacity + ")";
setTimeout(FadeOut, 1);
} else {
$get("LowerPageContent").style.filter = "alpha(opacity=0)";
IsFadedIn = false;
$get("TestButton").click();
}
return false;
}
}