2013-02-17 52 views
9

मैं अपने फोनगैप एप्लिकेशन में लॉगआउट बटन लागू करने जा रहा हूं, जो उपयोगकर्ता को प्रमाणीकरण पृष्ठ (साफ़ फ़ील्ड के साथ) में वापस कर देगा। बटन के लिए मैं ऑनक्लिक ईवेंट के साथ लंगर का उपयोग कर रहा:क्या यह संभव है onclick = "history.clear();"

<script type="text/javascript"> 
function doLogout() { 
    var backlen = history.length; 
    history.go(-backlen); 
    window.location.replace("index.html"); 
} 
</script> 

<a data-role="none" href="#" onclick="doLogout"></a> 

लेकिन यह काम करता है नहीं है, अर्थात यह सिर्फ मुझे पहले से ही भरा फ़ील्ड के साथ कि प्रमाणीकरण पृष्ठ पर लौटकर है, बस एक एक कदम वापस की तरह लगता है। मैं, history.clear() के लिए यकीन नहीं है क्योंकि googling यह मुझे कुछ नहीं दिया:

<a data-role="none" href="index.html" onclick="javascript:history.clear();"></a> 

किसी को भी मुझे सलाह कर सकते हैं, जहां मेरी समस्या है? यदि फोनगैप में लॉगआउट ईवेंट को संभालने का कोई अन्य समाधान है तो मैं इसका अनुसरण करूंगा। धन्यवाद

उत्तर

13

history.go पर कॉल को अनदेखा कर दिया जाएगा, क्योंकि आप इतिहास में वस्तुओं की तुलना में एक और कदम वापस जा रहे हैं। length संपत्ति में मौजूदा आइटम सहित आइटमों की संख्या है, इसलिए अगर इतिहास में चार आइटम उदाहरण हैं, तो आप केवल तीन चरणों पर जा सकते हैं।

वापस पहला कदम के लिए जाने के लिए, आप लंबाई से एक घटाना होगा:

history.go(-(history.length - 1)); 

हालांकि, कि केवल आप ही वापस अपने प्रारंभिक पेज के लिए ले करता है, तो आप उस पृष्ठ के लिए विशेष रूप से एक नई विंडो खोला जाएगा। अन्यथा यह उपयोगकर्ता को उस पृष्ठ पर वापस ले जाने वाले पहले पृष्ठ पर ले जाएगा।


history वस्तु के लिए कोई clear विधि नहीं है।

रेफरी: https://developer.mozilla.org/en-US/docs/DOM/window.history

ब्राउज़र इतिहास उपयोगकर्ता के अंतर्गत आता है, तो आप इसे से कुछ भी नहीं निकाल सकते।

+0

स्पष्ट स्पष्टीकरण – Dozent

+0

आह के लिए धन्यवाद, लेकिन जब उपयोगकर्ता वापस क्लिक करता है और आप इस कोड को चलाते हैं तो क्या होता है? बैक क्लिक होने पर 'history.length' नहीं बदलता है, लेकिन उस कोड को चलाने से इतिहास को खत्म कर दिया जाएगा। ऐसा लगता है कि एक आंतरिक सूचक है कि हम इसका मूल्य नहीं प्राप्त कर सकते हैं :( –

+0

@ जैक: अच्छा बिंदु। आपके पास ब्राउज़र इतिहास पर अधिक नियंत्रण नहीं है, इसलिए ऐसा कोई समाधान नहीं लगता है जो काम करता है सभी मामलों। – Guffa

1

यदि आप onclick विशेषता का उपयोग करते हैं, तो उद्धरणों में जो भी होता है वह एक वास्तविक विवरण है, न केवल फ़ंक्शन का नाम। तो:

<a data-role="none" href="#" onclick="doLogout();"></a> 
<!-- Note the(); ----------------------------^^^ --> 

भी ध्यान रखें कि क्योंकि आप लिंक का पालन की डिफ़ॉल्ट गतिविधि को रोकता कुछ भी नहीं कर रहे हैं, ब्राउज़र href है, जो किया जा रहा है # वर्तमान पेज के शीर्ष पर ले जाता है का पालन करेंगे। आपको लगता है कि रोका जा सकता है (यदि आप चाहें) एक return false; जोड़कर:

<a data-role="none" href="#" onclick="doLogout(); return false;"></a> 

मैं अपने प्रश्न के दूसरे भाग का पालन नहीं कर सकता है, लेकिन मैं तो बस ध्यान दें जाएगा कि आप की जरूरत नहीं है या javascript: पर चाहते हैं आपके दूसरे उदाहरण में onclick विशेषता। आप केवल उस छद्म प्रोटोकॉल का उपयोग करते हैं जहां एक यूआरआई अपेक्षित है (उदाहरण के लिए, एंकर के href)। onXYZ विशेषताओं की सामग्री हमेशा एक कोड है, न कि यूआरआई।

अंत में: जब तक आप स्टाइल के साथ कुछ नहीं कर रहे हैं, तो उन दोनों लिंक को क्लिक करने के लिए बहुत मुश्किल होने जा रहे हैं, खाली होने के साथ क्या। :-)

+0

स्पिप – Dozent

4

मैंने कभी भी फोनगैप विकसित नहीं किया है, लेकिन वेब अनुप्रयोगों में आप नीचे दिए गए कोड का उपयोग कर सकते हैं।

window.location.replace(url);

वहाँ पुनर्निर्देशन के बाद पिछले पृष्ठ जाने के लिए कोई रास्ता नहीं है की कोशिश करो।