यदि आप एएसपी.NET AJAX आंशिक पोस्टबैक के बारे में बात कर रहे हैं, तो मुझे आज भी इस व्यवहार का सामना करना पड़ा, ठीक वही काम करना। (आप नहीं कर रहे हैं, मेरी पोस्ट पूरी तरह से ध्यान न दें।)
मेरे अनुभव अब तक में, यह की तरह अगर आपके आंशिक पोस्टबैक एक इनपुट से शुरू हो रहा है, यह एक आंशिक पोस्टबैक के दौरान onbeforeunload सक्रिय नहीं होगा लगता है , लेकिन यदि आंशिक पोस्टबैक हाइपरलिंक द्वारा ट्रिगर किया गया है, तो यह होगा। ऐसा लगता है कि ब्राउजर मानता है कि अगर आप एंकर टैग में कुछ भी क्लिक करते हैं (केवल आईई और फ़ायरफ़ॉक्स में परीक्षण किया जाता है लेकिन हाँ) पर क्लिक करते हैं तो आप नेविगेट कर रहे हैं।
पृष्ठ के पास एक निश्चित छिपी हुई फ़ील्ड है या नहीं, पहले से ही क्लाइंट-साइड निर्धारित करने के लिए मैं उपयोग कर रहा था, जब नेविगेट दूर चेतावनी दिखाने के लिए उचित है, तो मैं इसे आसानी से ठीक करने में सक्षम था अगर स्थिति को मेरे ऑनबेरनलोड के लिए छुपा फ़ील्ड का मान, और मूल्य निर्धारित करने के लिए पेजरक्वेट मैनेजर के BeginRequest और EndRequest हैंडलर में हुकिंग करना। यह आंशिक पोस्टबैक के दौरान चेतावनी को प्रभावी ढंग से अक्षम करता है। यदि आप अधिक विशिष्ट चीजें जांचना चाहते हैं तो आप यहां अधिक जटिल तर्क जोड़ सकते हैं।
यहां वास्तव में एक अति-सरलीकृत कोड नमूना है। (। खेद अगर मैं मुकाबले और बिंदु जहां यह काम नहीं करता है, लेकिन यह आप एक विचार देना चाहिए करने के लिए सेंसर)
window.onbeforeunload = checkNavigateAway;
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(onBeginRequest);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(onEndRequest);
function onBeginRequest(sender, args) {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0) {
navigateAwayFlag[0].value = "false";
}
}
function onEndRequest(sender, args) {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0) {
navigateAwayFlag[0].value = "true";
}
}
function checkNavigateAway() {
var navigateAwayFlag = $("input[id*='navigateAwayValue']");
if (navigateAwayFlag.length > 0 && navigateAwayFlag[0].value == "true")
{
return "Warning Text";
}
}
संपादित: बुरी खबर। उपरोक्त आईई 6 में काम नहीं कर रहा है। ऐसा लगता है जैसे यह फ़ायरफ़ॉक्स की तुलना में एक अलग क्रम में घटनाओं को सक्रिय करता है, इसलिए AJAX startRequest से पहले ऑनबर्नलोड लोड हो जाता है ... हाइपरलिंक के माध्यम से ध्वज के मूल्य को बदलने के लिए एक रास्ता खोजना पड़ सकता है, इससे पहले कि वह आग लगने से पहले क्लिक करें।जब मैं लॉगआउट, मैं इस स्क्रिप्ट फोन
var allowConfirm = true;
window.onbeforeunload = confirmExit;
function confirmExit()
{
if(allowConfirm)
return "Are you sure you want to navigate away from this page?";
else
allowConfirm = true;
}
:
शरीर टैग के अंदर:
धन्यवाद। Spec पढ़ें और यह "दस्तावेज़" लिखने के लिए "document.write" संदर्भित करता है। यह निश्चित रूप से ग्रिड लाइब्रेरी के साथ एक गुच्छा हो रहा है जिसका हम उपयोग कर रहे हैं। – Paul