2012-12-28 22 views
14

में खुला लिंक का उपयोग मैं phonegap (कॉर्डोबा 2,2)phonegap - ब्राउज़र

मैं इस तरह लिंक है:

<a href="http://twitter.com/foobar" target="_blank">twitter</a> 

iOS पर - यह ब्राउज़र में लिंक खोलता है (सफारी)

लेकिन पर एंड्रॉइड - यह वेबव्यू के अंदर खुलता है (मेरे फोनगैप ऐप के अंदर)

क्या एंड्रॉइड को आईओएस के समान काम करने का कोई तरीका है?

उत्तर

27

यह मैं इसे कैसे Cordova का उपयोग कर काम कर रहे हो गया है 2.2 और एंड्रॉइड पर jQuery मोबाइल

जावास्क्रिप्ट:

$('.link').live('tap', function() { 
    url = $(this).attr("rel"); 
    loadURL(url); 
}); 

function loadURL(url){ 
    navigator.app.loadUrl(url, { openExternal:true }); 
    return false; 
} 

एचटीएमएल:

<a href='#' class='link' rel='http://www.someurl.com'>Go Somewhere</a> 
+1

यह जानना बहुत अच्छा है .. यह मेरे लिए कॉर्डोवा 2.3, एंड्रॉइड पर jQuery मोबाइल का उपयोग कर काम करता है। –

+0

लाइव बहिष्कृत है। नरक, मैंने सोचा कि इसे जेक्यू के हाल के संस्करणों में हटा दिया गया था। मैं प्रतिनिधि या विधि पर लेकिन प्रतिनिधिमंडल शैली का उपयोग करने के साथ जाऊंगा। असल में, प्रतिनिधि भी है, लेकिन हाल ही में। –

+0

@ एरिक रिपेन - यह एक बहुत पुराना उत्तर है .. – someuser

6

एंड्रॉयड के लिए इस प्रयास करें:

function loadURL(url){ 
    navigator.app.loadUrl(url, { openExternal:true }); 
    return false; 
} 

एचटीएमएल:

<a click="loadURL('http://twitter.com/foobar')">twitter</a> 

तुम भी इस कोशिश कर सकते हैं अपने config.xml:

<access origin="*twitter.com" browserOnly="true"/> 
+0

धन्यवाद काम कर! मेरे लिए काम करता है –

+0

क्लिक के बजाय ऑनक्लिक के साथ मेरे लिए काम किया। संपत्ति क्लिक मौजूद नहीं है, या करता है? –

1

मैं एक सामान्य नियम के रूप में इस का उपयोग करें:

$('a').live('tap',function(e){ 
    // if external link then open a browser 
    if(String($(this).attr('href')).substring(0,4)=='http' || String($(this).attr('href')).substring(0,5)=='https'){ 
     navigator.app.loadUrl($(this).attr('href'), { openExternal:true }); 
     e.stopPropagation(); 
     return false; 
    } 
}); 
+0

एफवाईआई, आपकी https तुलना अनावश्यक है, यह हमेशा पहली अभिव्यक्ति में सत्य का मूल्यांकन करेगी। :) –

+0

वास्तव में, यह पता लगाने के लिए है कि यह एक बाहरी लिंक है या नहीं। लेकिन हाँ, तुम सही हो। :) – thedjaney

3

आप target="_blank" विशेषताओं के साथ, iOS संस्करण में के रूप में उपयोग करना चाहते हैं:

$(document).on('tap', 'a[target="_blank"]', function(e){ 
    navigator.app.loadUrl(e.target.href, { openExternal: true }); 
    return false; 
}); 
1

मुझे एक ही सटीक समस्या थी और मैंने देखा कि अधिकांश उत्तर अलग-अलग प्लेटफॉम्स के लिए मिश्रित होते हैं। समाधान काम करता है मेरे लिए Detail Explanation for different platforms

+0

कृपया अपना उत्तर संपादित करें ताकि यह यहां सभी प्रासंगिक पाठ प्रदान करे और लिंक को अधिक विस्तृत बैकअप जानकारी प्रदान करें। यह जवाब भी उपयोगी रहता है भले ही वह लिंक अमान्य हो जाएं – Anthon

0

है यह ios पर मेरे लिए काम किया

    $("a[target='_blank']").on('tap touch click',function(e){ 
         e.stopPropagation(); 
         e.preventDefault(); 
         window.open($(this).attr('href'), "_system"); 
         return false; 
        }); 
4

user1879822 द्वारा प्रदान की लिंक वास्तव में मेरे लिए सबसे अधिक उपयोगी एक था: https://build.phonegap.com/blog/access-tags

संक्षेप में, PhoneGap एक श्वेत सूची है इसकी config.xml के भीतर यूआरएल की अनुमति है। इसका मतलब यह है अगर यह इस तरह एक प्रविष्टि है ...

<access origin="*" /> 

... यह अपने आप ही वेबव्यू अंदर सभी लिंक को खोलने के लिए प्रयास करेंगे। हालांकि यदि आप अपने श्वेतसूची को केवल विशिष्ट यूआरएल में बाध्य करते हैं, तो उस सूची में यूआरएल पर कोई भी लिंक स्वचालित रूप से बाहरी ब्राउज़र में नहीं खुल जाएगा, न कि आपके स्थानीय वेबव्यू में। उदाहरण के लिए यदि आप इसे केवल इस के लिए विवश करता है, तो ...

<access origin="http://127.0.0.1*" /> 

... तो चहचहाना लिंक मूल प्रश्न में उल्लेख किया है एक नया बाहरी ब्राउज़र में खुलना चाहिए।

1

यहां तक ​​कि अगर इस सवाल का कुछ समय पहले कहा गया था मैं निम्नलिखित blod प्रविष्टि जो मुझे मदद की बाहर के बारे में सूचित करना चाहता था:

https://build.phonegap.com/blog/access-tags

सब मैं करना पड़ा एंड्रॉयड में मेरी निर्दिष्ट डोमेन unwhitelist लिए किया गया था करने के लिए । तो मेरी config.xml में मेरे पास कोई भी नहीं है।

0

फोनगैप कार्यों के लिए नेविगेटर!

handler: function (btn, evt) { 
loadURL('http://www.google.com'); 
} 

...

function loadURL(url){ 
navigator.app.loadUrl(url, { openExternal:true }); 
return false; 
} 
-1

PhoneGap 3,5

<a href="javascript:loadURL('http://www.lavidaenbinario.com');" class="link ">Example</a> 

function loadURL(url){ 
    navigator.app.loadUrl(url, { openExternal:true }); 
    return false; 
} 
का उपयोग कर
संबंधित मुद्दे