2012-10-17 21 views
7

ठीक है, मुझे फ़ोनगैप व्यू में एक बाहरी पृष्ठ लोड करने का सही तरीका मिला है (यानी सत्र खोने या डिवाइस ब्राउज़र खोलने के बिना) यहां बताया गया है : How can I load a webpage inside the phonegap webview? और यहाँ: PhoneGap for iPhone: problem loading external URLफोनगैप: ओपन बाहरी पेज और फिर ऐप पर वापस जाएं

अगला चरण है: के बाद मैं एक extarnal पेज खोल दिया है (यह मेरे द्वारा स्वामित्व में है और मैं इसे संशोधित कर सकते हैं) मैं कैसे वापस अपने स्थानीय आवेदन करने के लिए जा सकते हैं? मान लीजिए कि मेरे पास बाहरी पृष्ठ में एक लिंक है और मैं चाहता हूं कि उपयोगकर्ता को क्लिक पर फोनगैप एप्लिकेशन के अंदर स्थानीय HTML पृष्ठ (mypage.html) पर रीडायरेक्ट किया जाए।

लिंक के href विशेषता का यूआरएल क्या होना चाहिए? मैंने इसे "फ़ाइल: ///android_asset/www/mypage.html" पर सेट करने का प्रयास किया है, लेकिन

उत्तर

3

पर काम नहीं किया है आप बाहरी वेब पेज खोलने के लिए ChildBrowser प्लगइन का उपयोग करना चाहते हैं। फिर आप ChildBrowser.onLocationChange प्रॉपर्टी को अपने स्वयं के फ़ंक्शन पर सेट करना चाहते हैं। फिर जब व्यक्ति रिमोट पेज से दूर निकलता है तो आपको स्थान परिवर्तन की अधिसूचना दी जाएगी ताकि आप चाइल्डब्रोसर को बंद कर सकें और एक नए स्थानीय पृष्ठ पर जा सकें। आपको रिमोट एचटीएमएल पेज को छूने की भी आवश्यकता नहीं होगी।

तो जब उपयोगकर्ता को दूरस्थ पेज से चला ब्राउज़र बंद करने के:

cb.onLocationChange = function(loc){ 
    console.log("location = " + loc); 
    if (loc != "http://example.com") { 
     cb.close(); 
    } 
}; 
+0

आपको बहुत बहुत धन्यवाद। वैसे, चूंकि यह सिर्फ एक और समस्या के लिए कामकाज है, क्या बाहरी पृष्ठ से स्थानीय पृष्ठ पर वापस जाने का कोई तरीका है जिसे मैं संपादित नहीं कर सकता, लेकिन यह पैरामीटर के रूप में कॉलबैक यूआरएल प्राप्त कर सकता है? –

+0

हां, आप इसे कर सकते हैं। मैंने अभी अपने जवाब में कुछ कोड जोड़ा है। –

+0

बढ़िया, धन्यवाद! –

1

आपको क्या करना होगा अपने MainViewController.m में इस दिलकश आदमी है यह कॉर्डोबा 1.7.0 कॉर्डोबा 1.9.0 में मेरे लिए काम करता और कॉर्डोवा 2.1.0

- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request   navigationType:(UIWebViewNavigationType)navigationType 
{ 
NSURL *url = [request URL]; 

// Intercept the external http requests and forward to Safari.app 
// Otherwise forward to the PhoneGap WebView 
if ([[url scheme] isEqualToString:@"http"] || [[url scheme] isEqualToString:@"https"]) { 
[[UIApplication sharedApplication] openURL:url]; 
return NO; 
} 
else { 
return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ]; 
} 
    } 
+0

धन्यवाद। यह बहुत आईफोन से संबंधित लगता है मैं इसे एंड्रॉइड के लिए कॉर्डोवा पर भी देखूंगा। –

+0

हाँ यह आईफोन संबंधित है। आपको कॉर्डोवा-एंड्रॉइड के साथ कोई समस्या नहीं होनी चाहिए – iOSAndroidWindowsMobileAppsDev

1

यह फोनगैप/कॉर्डोवा 2.7 का उपयोग कर रहा है। अपने बाहरी ऐप के अंदर, एक लिंक जोड़ें जो "ऐप: // अनुक्रमणिका" को इंगित करता है।

अंदर onCreate जोड़ें:

this.appView.setWebViewClient(new CordovaWebViewClient(this, this.appView) { 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if(url.equalsIgnoreCase("app://index")) { 
      Log.d("DEBUG", url); 

      loadUrl(Config.getStartUrl()); 

      return true; 
     } else { 
      return super.shouldOverrideUrlLoading(view, url); 
     } 
    } 
}); 

इस कॉल अवरोधन और कॉन्फ़िगर शुरू यूआरएल के लिए उपयोगकर्ता अनुप्रेषित करेगा।

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