2009-11-30 9 views
5

मैं अजाक्स में इतिहास को नियंत्रित करने और लिंक/पेज बुक-मार्क करने योग्य बनाने के लिए jQuery में यूआरएल हैश का उपयोग करने पर एक संभाल पाने की कोशिश कर रहा हूं। मैंने वहां लगभग हर प्लग-इन की कोशिश की है, और मुझे लगता है कि कोई भी ठीक से काम नहीं कर रहा है, इसलिए मेरे पास वास्तव में कोई कोड उदाहरण नहीं है। लेकिन मैं किसी भी सुझाव, सूचना, ट्यूटोरियल इत्यादि के लिए खुला हूंjQuery + अजाक्स हैश/इतिहास और अधिक

उन पृष्ठों में से एक पर अंतर जो मैं इसे शामिल करने की कोशिश कर रहा हूं, यह है कि मेरे पास एक jQuery एनीमेशन संचालित स्पलैश/लोडिंग पेज है, जो भी वही है पृष्ठ कि सभी सामग्री को लोड किया जाएगा।

.. और इस लिंक पर, मैं सभी स्पलैश/लोडिंग एनीमेशन को पास-पास करना चाहता हूं और हैश मान/स्ट्रिंग (इस मामले में, #home) के आधार पर सामग्री को सीधे लोड करना चाहता हूं।

मैं थोड़ी देर के लिए इसे एक को समझने की कोशिश कर रहा हूं, किसी भी मदद की बहुत सराहना की है, धन्यवाद!

उत्तर

12

तो आपको किस समस्या का सामना करना पड़ रहा है? हैश टैग सेट करना या हैश के परिवर्तन को संभालना?

निश्चित रूप से हैश सेट करना हैश को लिंक में डालने का सवाल है, उदाहरण के लिए <a href="www.voidsync.com/2010/#page">Link</a> लेकिन मुझे लगता है कि यह आपकी समस्या नहीं है।

वास्तव में हैश के साथ कुछ करने के लिए, आपके पास श्रोता फ़ंक्शन होना चाहिए जो उदाहरण के लिए जांचता है कि प्रत्येक 100ms में हैश बदल गया है और तदनुसार कार्य करता है। एक साधारण समारोह इस तरह जा सकते हैं:

$(function() { 
    var current_hash = false; 
    setInterval(function() { 
     if(window.location.hash != current_hash) { 
      current_hash = window.location.hash; 
      $('#content').load("content.php?page="+current_hash); 
     }   
    }, 100);  
}); 

कि (untested) समारोह हर 100ms की जाँच करेगा अगर हैश बदल गया है, और अगर यह है, तो अजाक्स के माध्यम से पेज अद्यतन करता है।

यह फ़ंक्शन पृष्ठ लोड पर भी काम करता है, इसलिए यदि उपयोगकर्ता www.voidsync.com/2010/#images जैसे लिंक पर पृष्ठ पर उतरता है, तो फ़ंक्शन पृष्ठ 'छवियों' को स्वचालित रूप से लोड करेगा। तो इतिहास और बुकमार्किंग काम करता है।

आशा है कि मदद करता है, बस पूछें कि क्या आप कुछ और मतलब चाहते हैं।

+0

थोड़ा पुनः शब्दलेखन किया और इसे काम करने के लिए मिला, यह भी हर हालिया ब्राउज़र में काम करता है और मैं स्प्लैश लोडिंग, चीयर्स को रीसेट करने के लिए इसे ट्विक करने में कामयाब रहा! – abysslogic

+0

वास्तव में, लिंक को बुकमार्क करने योग्य बनाने के लिए कुछ और पुनर्लेखन करना है और हैश सेट होने पर डिफ़ॉल्ट स्पलैश पृष्ठ को बाईपास करना है, लेकिन लोडिंग एनिमेशन काम नहीं कर रहे हैं। – abysslogic

+1

मन पुनः लिखना abysslogic पोस्ट? – rideon88

1

तात्तु के जवाब के आधार पर, मैंने अभी यह काम करने के लिए कुछ चीजें बदल दी हैं। यह एक इतिहास रखता है, इसलिए पीछे और आगे बटन अच्छा काम करते हैं। यहाँ, मैं क्या है है

$(function() { 
var current_hash = false; 
setInterval(function() { 
    if(window.location.hash != current_hash) { 
     current_hash = window.location.hash; 
      if(current_hash=='#home'){ 
       var month = '9'; 
       var year ='2011';  
       $.ajax({ 
        type: "POST", 
        url: "/home.php", 
        data: "data+here", 
        success: function(msg){ 
         $('#div').html(msg); 
        }  
       });      
      } 
      else if(current_hash=='#edit'){ 
       $.ajax({ 
        type: "POST", 
        url: "/edit.php", 
        data: "data+here", 
        success: function(msg){ 
         $('#div').html(msg); 
        }  
       });    
      } 
    }   
}, 100); 

तो बस कुछ हैश लिंक href विशेषता के आवंटित;

    <li><a href="#home">Home Page</a></li> 
       <li><a href="#edit">Edit Page</a></li> 

यह पूरी तरह से फिर से लिखना नहीं है, केवल मूल रूप से कुछ चीजों को बयान दिया गया है, लेकिन यह किसी की मदद कर सकता है।

संबंधित मुद्दे