2009-08-01 9 views
5

मैंने इस मुद्दे के लिए कुछ खोज की हैं और मैं खाली हाथ आया हूं। मुझे उम्मीद है कि कोई मेरे लिए चीजों को स्पष्ट कर सकता है और मुझे सही दिशा में इंगित कर सकता है।ब्राउज़र को अंतिम बार देखा गया पृष्ठ की स्थिति याद नहीं है

समस्या: मैं उस पृष्ठ एक खोज फॉर्म जमा करने के बाद परिणाम की एक सूची प्रदर्शित की है। जब कोई उपयोगकर्ता परिणामों में से किसी एक पर क्लिक करता है, तो ब्राउज़र परिणाम के बारे में अधिक जानकारी दिखाते हुए एक नए पृष्ठ पर जाता है। जब उपयोगकर्ता परिणामों पर पैक जाने के लिए 'बैक' बटन पर क्लिक करता है, तो मेरा ब्राउज़र पृष्ठ को फिर से लोड करता है और अंतिम क्लिक किए गए परिणाम के बजाय पृष्ठ के शीर्ष को दिखाता है।

लक्ष्य: मुझे यह क्या चाहिए: जब उपयोगकर्ता बैक बटन पर क्लिक करता है, तो ब्राउज़र को पिछले पृष्ठ पर वापस जाना चाहिए और पृष्ठ के शीर्ष को दिखाने के बजाय, पिछली स्थिति पर पृष्ठ दिखाएं ।

समाधान: मैं पूरी तरह से खो गया हूं कि यह परिणाम कैसे प्राप्त किया जा सकता है। क्या जावास्क्रिप्ट, या ब्राउज़र में भेजे गए शीर्षलेखों के साथ इसका कुछ संबंध हो सकता है, शायद कैशिंग के साथ कुछ करना है।

उत्तर

0

मैंने इस समस्या को PHP के साथ हेडर भेजकर तय किया। यह मेरा समाधान था:

header("Expires: 0"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: store, cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", FALSE); 

सहायता के लिए सभी को धन्यवाद।

+1

के बारे में कुछ नहीं पता है क्या आपको पता है कि यह क्यों काम करता है? यदि किसी ब्राउज़र को वापस जाना है और सामग्री के लिए वेब सर्वर को हिट करना है, तो बैक बटन पर पेज स्टेटस जानकारी को बनाए रखने की अधिक संभावना क्यों है? – Anirvan

2

यदि यह अविश्वसनीय रूप से महत्वपूर्ण है, मैं जांच कर सुझाव देते हैं चाहते हैं निम्नलिखित:

  • प्रत्येक आउटगोइंग लिंक करने के लिए जोड़ id रों
  • उपयोग जावास्क्रिप्ट लिंक के लिए onClick कब्जा करने के लिए
  • जब एक लिंक क्लिक किया गया है, उपयोगकर्ता को उस लिंक के idfragment identifier पर रीडायरेक्ट करें, फिर वांछित
के रूप में लिंक करें

जब उपयोगकर्ता बैक बटन हिट करता है, तो वे उस विशिष्ट लिंक पर वापस आ जाएंगे, उदा। http://www.example.com/#link27 बजाय http://www.example.com/ की

आप यहाँ से कुछ विचार प्राप्त करने में सक्षम हो सकता है:

+0

तो छद्म कोड इस तरह कुछ दिखाई देगा: 1. उपयोगकर्ता परिणाम सूची में एक लिंक पर क्लिक करता है। 2. क्लिक पर क्लिक किए गए लिंक से एक ऑनक्लिक ईवेंट कहा जाता है। 3. ईवेंट से बुलाया गया फ़ंक्शन लिंक की आईडी प्राप्त करता है। 4. फ़ंक्शन पृष्ठ के अंत में दिए गए लिंक की आईडी के साथ परिणाम पृष्ठ पर पृष्ठ को रीडायरेक्ट करता है 5. परिणाम पृष्ठ पुनः लोड होने के बाद, फ़ंक्शन परिणाम के बारे में अधिक जानकारी के साथ पृष्ठ पर पृष्ठ को रीडायरेक्ट करता है। क्या इसका मतलब है? मैं देख सकता हूं कि यह कैसे काम करता है, लेकिन परिणाम पृष्ठ को दो बार – VinkoCM

+0

पुन: लोड किए बिना अधिक प्रत्यक्ष तरीका ढूंढना अच्छा लगेगा हां, बिल्कुल। और हाँ, यह जटिल है। – Anirvan

+0

@ विंकोसीएम, एक पूर्ण पृष्ठ रीलोड आवश्यक नहीं होना चाहिए। एक ही पृष्ठ के टुकड़ों के बीच चलना अधिकांश ब्राउज़रों पर निकट-तात्कालिक होना चाहिए। – Anirvan

0

जवाब के पहले भाग आपके द्वारा उपयोग किया शीर्ष के अलावा कहीं और किसी पृष्ठ पर उतरने के लिए एंकर। तो अगर मैं अपने पृष्ठ के तल पर मेरी html में यह है:

<a name="f"></a> 

तो मैं उपयोगकर्ता भूमि वहाँ वह url के अंत में लंगर जोड़कर हो सकता है:

http://www.bullionvalues.com/glossary.aspx#f 

तो, यदि आप एएसपी.Net के बारे में बात कर रहे हैं तो आप पृष्ठ जानकारी पृष्ठ पर एक छिपे हुए क्षेत्र में एंकर लगा सकते हैं और फिर इसे खोज पृष्ठ से उपयोग करके पढ़ सकते हैं: पृष्ठ। पूर्वचित्र संपत्ति।

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Page.PreviousPage != null) 
    { 
     Object o = PreviousPage.FindControl("hfAnchor"); 
     if (o != null) 
     { 
      HiddenField hf = o as HiddenField; 
      Response.Redirect(Request.Url+"#"+hf.Value); 
     } 
    } 
} 
+0

दुर्भाग्यवश, मैं PHP का उपयोग कर रहा हूं और मुझे एएसपी.NET – VinkoCM

1

आप स्थिति के लिए स्क्रॉल करने के लिए स्टोर करने के लिए खिड़की और कुकीज़ के स्क्रॉल स्थिति निर्धारित करने के जावास्क्रिप्ट और jQuery का उपयोग कर सकते हैं।

var COOKIE_NAME = "scrollPosition"; 
$(document).ready(function() { 

    // Check to see if the user already has the cookie set to scroll 
    var scrollPosition = getCookie(COOKIE_NAME); 
    if (scrollPosition.length > 0) { 
     // Scroll to the position of the last link clicked 
     window.scrollTo(0, parseInt(scrollPosition, 10)); 
    } 

    // Attach an overriding click event for each link that has a class named "resultLink" so the 
    // saveScrollPosition function can be called before the user is redirected. 
    $("a.resultLink").each(function() { 
     $(this).click(function() { 
      saveScrollPosition($(this)); 
     }); 
    }); 

}); 

// Get the offset (height from top of page) of the link element 
// and save it in a cookie. 
function saveScrollPosition(link) { 
    var linkTop = link.offset().top; 
    setCookie(COOKIE_NAME, linkTop, 1); 
} 

// Boring cookie helper function 
function getCookie(name) { 
    if (document.cookie.length > 0) { 
     c_start = document.cookie.indexOf(name + "="); 
     if (c_start != -1) { 
      c_start = c_start + name.length + 1; 
      c_end = document.cookie.indexOf(";", c_start); 
      if (c_end ==- 1) c_end = document.cookie.length; 
      return unescape(document.cookie.substring(c_start, c_end)); 
     } 
    } 
    return ""; 
} 
// Another boring cookie helper function 
function setCookie(name, value, expiredays) { 
    var exdate = new Date(); 
    exdate.setDate(exdate.getDate() + expiredays); 
    document.cookie = name + "=" + escape(value) + 
     ((expiredays==null) ? "" : ";expires=" + exdate.toGMTString()); 
} 

यह मानती है कि आपके खोज परिणाम लिंक class="resultLink" है: खोज परिणामों के साथ पेज के जावास्क्रिप्ट में आप कुछ इस तरह हो सकता था।