2012-07-23 4 views
7

यहाँ सब कोड मैं कोशिश की है है:window.open() मोबाइल सफारी वेब एप्लिकेशन होम स्क्रीन को जोड़ा गया में काम नहीं करता

select:function(event, ui) { 
    window.open(ui.item.value, "_blank"); 
} 

select:function(event, ui) { 
    window.location.href = ui.item.value; 
} 

जब वेब अनुप्रयोग मोड में, स्क्रीन केवल ताज़ा, यह स्थान पर नहीं जाता है। मोबाइल सफारी में, यह इरादे के रूप में काम करता है।

क्या यह आईफोन पर वेब ऐप्स के साथ सीमित है? क्या इसके आसपास कोई रास्ता है?

<script> 
$(document).ready(function() { 
    var cct = $('input[name=csrf_token]').val();  
    var searchInput = $('input[name=search]'); 

    function loadEventsData(onSuccess){ 
     $.ajax({ 
     type: 'POST', 
     url: '<?php echo site_url('ajax_frontend/getEventsSearch'); ?>', 
     dataType: 'json', 
     success: onSuccess, 
     error: function(XMLHttpRequest, textStatus, errorThrown) { alert(errorThrown); } 
     }); 
    } 

    function initializeEventsAutocomplete(data){ 
     searchInput.addClass('loaded').autocomplete({ 
     source:data, 
     appendTo: '.search_autocomplete', 
     minLength:2, 
     delay:0, 
     selectFirst:false, 
     open: function(event, ui) { 
     $('ul.events').hide(); 
     $('.ui-autocomplete').removeAttr('style'); 
     $('.icon-search').hide(); 
     $('.icon-close').show(); 
     }, 
     close: function(event, ui) { 
     val = searchInput.val(); 
     searchInput.autocomplete("search", val); 
     searchInput.focus(); 
     return false; 
     }, 
     select:function(event, ui) { 
     window.location.href = ui.item.value; 
     return false; 
     } 
     }); 
    } 

    $('form').submit(function(e) { 
     e.preventDefault(); 
     searchInput.blur(); 
    }); 

    searchInput.keyup(function(){ 
    if($(this).is(".loaded")) return; 
    loadEventsData(initializeEventsAutocomplete); 
    }); 

    $('.icon-close').click(function(e) { 
     e.preventDefault(); 

     $(this).hide(); 
     $('.icon-search').show(); 
     searchInput.autocomplete('close'); 
     $('ul.events').show(); 
     searchInput.val(''); 
    }); 
}); 
</script> 

और यहाँ है JSON (इसके बारे में कुछ):

[{"value":"http:\/\/events.dev\/index.php\/event\/canada-day","label":"Canada Day"},{"value":"http:\/\/events.dev\/index.php\/event\/triathlon-festival","label":"Triathlon Festival"}] 
+0

आप यकीन है कि यह साथ एक समस्या नहीं है कर रहे हैं 'का चयन करें: function' ही कहते हैं? यदि आप खिड़की के बजाए जावास्क्रिप्ट का एक और बिट खोलते हैं, तो क्या यह काम करता है? – ceejayoz

+0

ऐसा लगता है कि आप सही हैं। मैंने इसे 'चयन: फ़ंक्शन' के बाहर रखा है और यह काम करता है। लेकिन दुर्भाग्यवश, मुझे अभी भी इसकी ज़रूरत है। मैं jQuery यूआई स्वत: पूर्ण का उपयोग कर रहा हूँ। कोई विचार क्या हो सकता है और इसे कैसे दूर किया जा सकता है? – dallen

+0

क्या आप स्वत: पूर्ण कॉल की संपूर्णता दिखा सकते हैं? मुझे लगता है कि यह कुछ आसान है जिसे आप याद करते हैं लेकिन कोड के बिना जो निश्चित रूप से कहना मुश्किल है। – ceejayoz

उत्तर

1

मैं इस लगा बाहर

यहाँ पूरा कोड है। मैं सफारी में खोलने से वेब अनुप्रयोग में लिंक को रोकने के लिए निम्नलिखित कोड का उपयोग कर रहा:

https://gist.github.com/1042026

यह कुछ अवांछित दुष्प्रभाव पैदा कर रहा था। इसे ठीक करने के लिए, मैंने जोड़ा:

event.stopPropagation();

मेरे selection:function क्षेत्र में और यह कार्य करता है जैसा कि यह करना चाहिए।

1

प्रोग्रामेटिकली (जावास्क्रिप्ट) मोबाइल सफारी में एक लिंक खोलता है। आदर्श यदि आप एक मानक एचटीएमएल लिंक का उपयोग नहीं कर सकते हैं, लेकिन आप जावास्क्रिप्ट का उपयोग करना चाहिए:

var a = document.createElement("a"); 
a.setAttribute('href', facebook); 
a.setAttribute('target', '_blank'); 
a.click(); 

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

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