2013-03-20 10 views
18

बाहरी यूआरएल मेरे फोनगैप एंड्रॉइड एप्लिकेशन में सिस्टम के ब्राउज़र में नहीं खुलता है। मैं फोनगैप बिल्ड 2.3.0 का उपयोग कर रहा हूं।फोनगैप बिल्ड: एंड्रॉइड पर डिवाइस ब्राउज़र में बाहरी यूआरएल कैसे खोलें?

Cordova documentation के अनुसार मैं लक्ष्य '_system' का प्रयोग किया:

window.open('http://www.myurl.nl', '_system'); 

मेरी config.xml में मेरे पास है:

<plugin name="InAppBrowser" value="org.apache.cordova.InAppBrowser" /> 
<access origin="*" browserOnly="true" /> 

लेकिन मेरी क्षुधा वेबव्यू में खुला अभी भी लिंक।

इसे कैसे हल करें?

+0

ऐसा लगता है कि यह डिफ़ॉल्ट रूप से एंड्रॉइड में ठीक काम करता है (लेकिन मैं क्रॉसवॉक प्लगइन का भी उपयोग कर रहा हूं ...)। वेबव्यू में '_self' खोलने के लिए मेरे 2015 के उत्तर की जांच करें, और बाहरी ब्राउज़र में '_blank': http://stackoverflow.com/questions/32208609/cordova-why-would-inappbrowser-plugin-be-required-to-open -लिंक्स-इन-सिस्टम-brows/32227524 –

उत्तर

15

यह जवाब जब आप PhoneGap का निर्माण का उपयोग कर रखना चाहते हैं नहीं है, लेकिन मैं अपने मशीन पर Cordova (PhoneGap) के लिए एक विकास के वातावरण की स्थापना और संकलन के द्वारा समस्या का समाधान स्थानीय रूप से ऐप। कॉर्डोवा 2.5.0 window.open('http://www.myurl.nl', '_system'); में सही काम करता है, यह सिस्टम के ब्राउज़र में लिंक खोल देगा।

तो मेरी सलाह PhoneGap निर्माण और स्थानीय स्तर पर अपने अनुप्रयोग संकलन शुरू का उपयोग बंद करने के लिए है। Here's how to set up your development environment for Cordova >>

+0

क्या आप स्थानीय संकलन और फोनगैप निर्माण से क्या अंतर हो सकते हैं? – realtebo

+1

अधिकतर अंतर सेटिंग्स में है। जब आप स्थानीय रूप से संकलित करते हैं, तो कुछ सेटिंग्स को बदलना आसान होता है। लेकिन क्योंकि फोनगैप बिल्ड पर कॉर्डोवा 2.5 स्थानीय स्तर पर स्थापित होने पर समान परिणाम नहीं देता है, कोर कोड में कुछ अंतर होना चाहिए, लेकिन इसका कोई विचार नहीं है। – Joan

+0

@ जोन वास्तव में मुझे यकीन नहीं है कि यह एक फोनगैप बिल्ड समस्या है। क्या आप वाकई उपयुक्त प्लगइन घोषणा का उपयोग करते हैं और प्लगइन प्रभावी ढंग से आपके ऐप में फोनगैप के साथ लोड हो जाता है? मैंने लोगों को 'प्लगइन' टैग के बजाय 'गैप: प्लगइन' का उपयोग करके देखा है, यह मेरे मामले में –

-1

उपयोग इस

window.open('http://www.myurl.nl', '_blank', 'location=yes');

+13

नहीं, काम नहीं करता है। – Joan

+0

आपने इस टिप्पणी को क्यों वोट दिया? यदि आप फोनगैप वेबसाइट पर चेक करते हैं, तो यह कमांड लाइन InAppBrowser इंस्टॉल गाइड का एसी/पी है ... https://github.com/apache/cordova-plugin-inappbrowser/blob/dev/doc/index.md आपके प्रोफाइल को भी – Dimitri

+0

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

7

यह सवाल अब एक छोटे से पुराना है, लेकिन मुझे लगा कि इसके लायक अद्यतन करने गया था। 2.9.0 के साथ उपयोग किए जाने पर यह अब फोनगैप बिल्ड के साथ ठीक काम करता है।

मैंने इसे एंड्रॉइड 4.3 और आईओएस 6.1.3 पर संकलित और परीक्षण किया है। कि के रूप में अनुप्रयोग में पृष्ठों को खोलने के बजाय स्थानीय ब्राउज़र उन्हें खोलने के कारण है मैं अपने अनुप्रयोग में InAppBrowser प्लगइन की जरूरत नहीं है, और मैं केवल पहुँच टैग के लिए निम्न:

<access origin="http://127.0.0.1*"/> 
<access origin="http://phonegap.com" subdomains="true" /> 
+0

कोशिश करने लायक है। धन्यवाद :) –

+0

फोनगैप 3.0 के साथ, एंड्रॉइड क्ली बिल्ड –

14

देर जवाब है, लेकिन हो सकता है कि यह किसी की मदद कर सके।

navigator.app.loadUrl('https://google.com/', { openExternal:true }); 

Cordova 3.3.1

+0

यह मेरे लिए काफी छोटी थी, मेरा ऐप कई टैब लोड करेगा, भले ही लिंक केवल एक बार क्लिक किया गया हो! –

+0

@ इयानजैमिसन ओह! किसी भी तरह से यह अब मेरे लिए काम कर रहा है – AtanuCSE

+0

मैं भी, मैं टैप घटनाओं को सुनने के लिए हैमर जेएस का उपयोग कर समाप्त हुआ, इसने लिंक को कई बार खोलने से रोका। एंड्रॉइड पर –

6

यह मेरे लिए काम किया। फोनगैप 3.1.0।

एचटीएमएल कोड:

<a id="ext-link" href="#">Google it</a> 

या

<button id="ext-link" href="#">Google it</button> 

जावास्क्रिप्ट (jQuery के साथ + कॉर्डोबा):

$("#ext-link").on("click"), function() { 
    if (typeof navigator !== "undefined" && navigator.app) { 
     // Mobile device. 
     navigator.app.loadUrl('http://www.google.com/', {openExternal: true}); 
    } else { 
     // Possible web browser 
     window.open("http://www.google.com/", "_blank"); 
    } 
}); 

आशा है कि मदद करता है।

+1

ने मेरी मदद नहीं की 04-11 11: 47: 48.186: ई/वेब कंसोल (22063): अनकॉटेड टाइप एरर: अपरिभाषित विधि 'loadUrl' को कॉल नहीं कर सकता: 88 – Dimitri

1

@George Siggouroglou: यह एक अच्छा विचार तत्वों के लिए एक आईडी है कि अंततः एक दस्तावेज़ में एक से अधिक समय में दिखाई देगा का उपयोग नहीं है। कोड को अधिक मॉड्यूलर बनाने के लिए इसके अच्छे अभ्यास के बजाए।

अगर इसकी भी एक अच्छा विकल्प की उम्मीद टच डिवाइस से पहले "नल" का उपयोग करने के "क्लिक" क्योंकि यह बहुत तेजी से और पहले आग एक क्लिक से। टच सक्षम सामानों की जांच करने के लिए मैं आधुनिकता का उपयोग करना पसंद करता हूं क्योंकि यह सुविधा को हवा का पता लगाता है।

The jQuery Mobile tap event triggers after a quick, complete touch event that occurs on a single target object. It is the gesture equivalent of a standard click event that is triggered on the release state of the touch gesture. https://api.jquerymobile.com/tap/

आशा व्यक्त की कि किसी

**html code:** 

<a class="ext-link" href="#">Google it</a> 

या

<button class="ext-link" href="#">Google it</button> 

(jQuery के साथ) जावास्क्रिप्ट मदद करता है:

//define tab or click event type on rool level (can be combined with modernizr) 
iaEvent = "click"; 
if (typeof navigator !== "undefined" && navigator.app) { 
    iaEvent = "tap"; 
} 
$('.ext-link').each.bind(iaEvent, function() { 
    if (typeof navigator !== "undefined" && navigator.app) { 
     // Mobile device. 
     var linktarget = this.attr("href"); 
     navigator.app.loadUrl(linktarget, {openExternal: true}); 
    } else { 
     // Possible web browser 
     window.open(linktarget, "_blank"); 
    } 
}); 
संबंधित मुद्दे