2012-04-19 24 views
8

मोबाइल डिवाइस की सफारी, जैसे आईफोन या आईपैड, <a href="#" onclick="return false"> डिफ़ॉल्ट व्यवहार को रोकता नहीं है, पृष्ठ अभी भी '#' पर रीडायरेक्ट किया गया था, क्यों ...? इन एचटीएमएल कोड की तरह:मोबाइल उपकरणों की सफारी में, <a href="#" onclick="return false"> काम नहीं करता है, क्यों?

<div style="height:1000px; width:100px"></div> 
<br />  
<a href="#" onclick="return false">click me</a> 

जब moblie उपकरणों 'सफारी में क्लिक करें, इसे वापस पृष्ठ के शीर्ष पर चला जाता है ...

+0

onclick = "जावास्क्रिप्ट: झूठी वापसी;" ? – adali

+0

क्या आपने जांच की कि डेस्कटॉप ब्राउज़र पर चीजें कैसे काम करती हैं? मुझे लगता है कि यह स्पर्श बनाम माउस घटनाओं के साथ कुछ करने के लिए है। –

+0

"ऑनक्लिक" के बजाय आप "ऑनकीप", "ऑनमूसअप" या "ऑनकीप्रेस" – Tobi

उत्तर

0

क्यों नहीं? मुझे लगता है, आपको एक फ़ंक्शन कॉल करना होगा और न केवल झूठी वापसी होगी ...

<a href="#" onclick="javascript:myFunction()" id="test_a">click me</a> 

function myFunction() { 
    var elem = document.getElementById('test_a'); 
    if (elem.addEventListener) { 
     elem.addEventListener('click', function() { 
      alert('clicked'); 
     }, false); 
    } else { 
     elem.attachEvent('onclick', function() { 
      alert('clicked'); 
     }); 
    } 

    return false; 
} 
+0

मैंने प्रश्न संपादित किया है, कृपया पहले जेएस कोड को अनदेखा करें। बस एचटीएमएल, लेकिन अभी भी काम नहीं करता है ... – skyworm

+1

'ऑनक्लिक' विशेषता यूआरएल की बजाय जावास्क्रिप्ट कोड की अपेक्षा करती है। इस प्रकार 'जावास्क्रिप्ट:' केवल अनावश्यक है (हालांकि कम से कम यह सिंटैक्स त्रुटि फेंक नहीं देगा क्योंकि यह वैध कोड है)। –

1

मुश्किल लगता है। मैं इस कोड के साथ परीक्षण किया:

<body> 
Hallo 
<br> 
<div style="height:2000px; width:100px"></div> 
<br />  
<a href="#" onclick="alert('click');return false;" 
      onmousedown="alert('down');return false;" 
      onmouseup="alert('up');return false;" 
      onmouseover="alert('over');return false;" 
      onmouseout="alert('out');return false;"> 

click me</a> 
</body> 

क्या होता है, यह है कि जब मैं iPhone पर पृष्ठ ताज़ा करें और पहली बार के लिए नल मैं:

  1. से अधिक नीचे
  2. अप
  3. क्लिक
  4. ऊपर स्क्रॉल

हर अगले नल मैं:

    नीचे
  1. अप
  2. क्लिक
  3. नहीं स्क्रॉल अप

अजीब पर्याप्त, यह केवल काम करता है, जब कोड अलर्ट । यदि कोड के अंदर कोई अलर्ट नहीं होता है, तो स्क्रॉलिंग हर बार होता है जब मैं टैप करता हूं ....

निश्चित रूप से मोबाइल सफारी में hrefs के साथ कुछ जादू है, जिसे आप देख सकते हैं, जब आप लिंक रखते हैं (उंगली उठाए बिना): An एक्शन शीट दिखाई देती है ("कॉपी", "ओपन", "ओपन इन ..." इत्यादि) से पहले घटनाओं में से एक को निकाल दिया जाता है। दूसरी बात यह है कि अगर पहले

$('a#test').click(function(event){ 
    event.preventDefault(); 
}); 

(:

1

मैं वास्तव में

<a href="javascript:void(0)" onclick="return false">click me</a> 

साथ की कोशिश की और यह अच्छी तरह से काम करता है सबसे पहले

0

, इस प्रयास करें:

<a href="#" id='test'>click me</a> 
js में

संस्करण काम नहीं करेगा):

<a href="#" id='test' onclick='return DummyFunction();'>click me</a> 
js में

:

function DummyFunction(){ 
    return false; 
} 

जहां तक ​​मुझे याद है, इन संस्करण में से एक ही समस्या, हल जब मैं यह किया था।क्योंकि आपको HTML और JavaScript

5

मैं एक ही समस्या थी मिश्रित नहीं होते

पहले संस्करण का काफी बेहतर है। यह पता चला है कि यह सफारी के आईओएस 5 संस्करण में एक बग है। नए या पुराने संस्करणों, या किसी अन्य ब्राउज़र या प्लेटफॉर्म में नहीं होता है।

मैं मौजूदा return false के अलावा ऑनक्लिक ईवेंट हैंडलर के लिए preventDefault जोड़ने, तो जैसे, द्वारा इसका समाधान नहीं:

<a href="#" onclick="event.preventDefault(); return false;">click me</a> 

आदर्श नहीं है, लेकिन यह समस्या का समाधान नहीं करता है।

+0

मेरे मामले में = "..." की आवश्यकता नहीं थी बस "ऑनक्लिक" ने अपना उद्देश्य दिया – MoshMage

2

मुझे बस मेरे लिंक के साथ एक ही समस्या थी जो मेरे दोस्त के आईफोन पर काम नहीं कर रहा था। मैंने अपने से href="#" हटा दिया और बटन पूरी तरह से ठीक काम करते हैं, सिवाय इसके कि मेरे पास जावास्क्रिप्ट के साथ आपके बटन थोड़ा अलग हैं।

तरह से मैं यह स्थापित किया है की तरह इस

$(document).ready(function() { 
    var buttons=$('#button01,#button02,#button03,#button04,#button05'); 

buttons.click(function(){ 
     $(this).removeClass('off-class').addClass('on-class'); 
     buttons.not(this).removeClass('on-class').addClass('off-class'); 


}) 

तब मैं फ्रेम मैं

if ($('#button01').hasClass('on-class')){ 
       $('#frame01').removeClass('hidden'); 
$('#frame02,#frame03,#frame04,#frame05').addClass('hidden'); 
       }else{ 
        $('#frame01').addClass('hidden'); 

साथ पॉप अप करना चाहते हैं को गति प्रदान है मैं नहीं जानता कि आप कैसे तुम्हारा की स्थापना की है , लेकिन इस सेट अप के साथ href="#" को हटाकर मेरा काम किया।

0

असल में, मैं एक समान समाधान के साथ गया, लेकिन कुछ सशर्त जांच के साथ थोड़ा और समर्थन किया ... यह jQuery आधारित है और साइटफिनिटी में लॉगिन के लिए उपयोग किया जाता है।

if ($.browser.safari) { 
    $('.sfSubmitBtn').attr('onclick', 'event.preventDefault(); return false;'); 
    } 

मुझे लगता है कि event.preventDefault का उपयोग कर() वजह से एक इसी तरह के मुद्दों IE के कुछ संस्करणों में होने वाली शुरू करने के लिए किया था।

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

  • कोई संबंधित समस्या नहीं^_^