2012-02-24 12 views
14

मैं ऐसे वातावरण में एक एप्लिकेशन बना रहा हूं जहां मैं स्थानीय फाइल सिस्टम और ब्राउज़र का उपयोग करने के लिए प्रतिबंधित हूं (यानी सर्वर चलाने का विकल्प नहीं है)। मेरे पास कई पेजों पर एक सामान्य 'वापस जाएं' लिंक है जो मुख्य रूप से केवल history.back() पर कॉल करता है। यह निम्न तरह दिखता है:क्या मैं फ़ाइल का उपयोग करते समय क्रोम में काम करने के लिए history.back() फ़ंक्शन प्राप्त कर सकता हूं: // प्रोटोकॉल?

function goBack(evt) { 
    // Check to see if override is needed here 

    // If no override needed, call history.back() 
    history.back(); 
} 

$('#my-back-button').click(goBack); 

इस कोड फ़ायरफ़ॉक्स और IE6 (मत पूछो) में ठीक काम करता है, लेकिन क्रोम में विफल रहता है। क्यों और/या संभव कामकाज के लिए कोई सुझाव?

मैंने history.go(-1); भी कोशिश की है जो या तो काम नहीं करता है।

function goBack(evt) { 
// Check to see if override is needed here 

// If no override needed, call history.back() 
history.go(-1); 
return false; 
} 
+0

पर "क्रोम वापस बटन काम नहीं कर रहा" कुछ गूगल खोज करो यह एक ब्राउज़र बग हो सकता है, अपने कोड ठीक है। मैं Google पर एक रिपोर्ट जमा करूंगा। –

+0

@ माइकल। टिप के लिए धन्यवाद, लेकिन इस मुद्दे को गुगल करने से अनुत्पादक साबित हुआ है। क्या यह पुष्टि करने का कोई तरीका है कि यह एक वास्तविक बग है? elements_ '$ .fn.forwardEvent = समारोह (घटना) { \t \t this.each (function() { \t \t \t अगर (this.dispatchEvent) { \t \t पर क्लिक ईवेंट ट्रिगर के लिए _chrome वैकल्पिक हल: –

उत्तर

21

क्रोम में किसी कारण के लिए, आप history.go बुला के बाद रिटर्न फाल्स जोड़ने के लिए (-1)

अपने कार्य करने के लिए परिवर्तित किया है:

<a href="#" onclick="javascript:history.go(-1);return false;" style="text-decoration:underline;">Back</a> 

केवल इस कोड काम करेंगे ..

मुझे आशा है कि इससे मदद मिलेगी ... हैप्पी कोडिंग .. :)

+0

धन्यवाद। वह काम किया। कोई विचार यह क्यों हो सकता है? –

+0

यह करने का सही तरीका है, इसलिए स्पष्ट रूप से Google आपको इसे सही तरीके से करने के लिए मजबूर करता है। –

2
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>Untitled Document</title> 
</head> 
<body> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script> 
$(document).ready(function() { 
    function goBack(evt) { 
    // Check to see if override is needed here 

    // If no override needed, call history.back() 
    history.back(); 
    $('#my-back-button').forwardEvent('click'); 
} 

$('#my-back-button').click(goBack); 

/** 
* chrome workaround for triggering click events 
* @param {event} event event 
* @return {undefined} Returns undefined 
*/ 
    $.fn.forwardEvent = function(event) { 
     this.each(function() { 
      if (this.dispatchEvent) { 
       if (event.originalEvent) { 
        event = event.originalEvent 
       } 
       try { 
        this.dispatchEvent(event); 
       } catch(error) { 
        $(this).trigger(event); 
       } 
      } 
      else { 
       $(this).trigger(event); 
      } 
     }); 
     return this; 
    }; 
}); 
</script> 
<input type="button" value="<<<<" id="my-back-button"> 
</body> 
</html> 
+0

हममम। मुझे खेद है, लेकिन ऐसा लगता है कि यह एक अनंत रिकर्सन बनता है। यह मुद्दा $ ('# my-back-button' नहीं है) क्लिक ईवेंट प्राप्त नहीं कर रहा है, बल्कि इसके बजाय history.back() कुछ भी नहीं करता है। –

+0

ठीक है, मैंने इसे क्रोम बनाम आपका मूल कोड में परीक्षण किया है, और यह काम करता है। "फ़ाइल: ///" प्रोटोकॉल इत्यादि के साथ आपके लिए काम नहीं किया? – heliogabal

+0

ठीक है, महाकाव्य यहां विफल रहता है, क्योंकि यह मेरे लिए किसी भी तरह से काम करता है, बिना ईवेंट अग्रेषण के ... क्या आप परीक्षण के लिए उपयोग किए गए पृष्ठ का सटीक कोड पेस्ट कर सकते हैं? निश्चित रूप से अनावश्यक सामान से पट्टी, न्यूनतम न्यूनतम। – heliogabal

0

क्रोम के लिए नीचे दिए गए कोड का उपयोग करें:

+0

सामान्य रूप से, ईवेंट हैंडलर सेट करने के लिए "ऑनक्लिक" (और इसी तरह) का उपयोग करना बुरा अभ्यास माना जाता है। देखें: अधिक जानकारी के लिए http://stackoverflow.com/questions/5871640/why-is-using-onclick-in-html-a-bad-practice। –

0

var referrer = document.referrer; window.location.replace (रेफरर);

उपयोग यह काम करेंगे

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

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