2012-11-13 5 views
5

Geçmiş: Android'de çalışan Cordova PhoneGap 2.2 uygulama backbutton olayı dinleme sağlar Cordova PhoneGap ve Google Maps v3 javascript api: Lisans bağlantısını veya Google haritaları logosunu ya tıklandığında backbutton işlevselliğini nasıl eklenir

document.addEventListener("backbutton", function(e){ history.back();} 

Google Maps API V3, Google logosunun sol alt köşesinde bir Google haritaları web sayfasına ve sağ alt köşedeki tıklanabilir bir lisans bağlantısına bağlanan haritayı oluşturur. Logo veya hizmet bağlantılarının şartları belirli bir kimlik/seçici içermez.

Sorun web sayfası içeren bir Google web sayfasına yönlendirilir bağlantılardan birine tıkladığınızda: hedefin: _blank, web sitesi sonra Cordava uygulaması olarak aynı pencerede açılır, fakat geri düğmesi işlevi nedeniyle kaybolur Web sayfası kendi Javascript'ini içerir.

Web sayfası yüklendikten sonra bazı kodlar enjekte edilebilir mi?

bir çözüm muhtemelen ile dışarıdan bağlantıları açmak için olabilir:

navigator.app.loadUrl([href here], { openExternal:true }); 

ama sonra tekrar yine seçicileri eksikliği sorunu vardır.

Güncelleme: Lisans sayfasında veya Google haritalarındayken düğmesine tıklarken logcat'te şu hata mesajını alıyorum: 11-13 16: 20: 30.500: E/Web Konsolu (31508): Yakalanmamış ReferenceError: cordova tanımlı değil: 1

cevap

0

İşte google maps bağlantılarını kesiştirmenin bir yoludur.

function directUrlToExternalBrowser(urlPattern) { 
    var pattern = "a[href^='"+urlPattern+"']";//all urls startting with urlPattern 
    $(pattern).live('click', function(e){ 
     e.preventDefault(); 
     navigator.app.loadUrl($(pattern).attr("href"), {openExternal: true}); 
    }); 
} 

Sonra aşağıdaki çizgilerle PhoneGap api'sine tıklama yönlendirebilir:

directUrlToExternalBrowser("http://maps.google.com/maps"); 
directUrlToExternalBrowser("http://www.google.com/intl"); 
2

.live kullanılabilir jquery sahip varsayarsak

, kendi komut bu yöntemi içerebilir() jQuery v1.9 sürümünde kaldırıldı ve Zepto v1.0rc1'de kullanımdan kaldırıldı. Bu nedenle, kvaale'nin en yeni çerçevelerle iyi çalışması gereken cevabın gözden geçirilmiş bir sürümü.

Bu sürümde, InAppBrowser ('_blank' kullanarak) veya sistem web tarayıcısında ('_system' kullanılarak) bağlantıları açmanızı sağlayan PhoneGap/Cordova'nın InAppBrowser kodu da kullanılır.

function directUrlToExternalBrowser(urlPattern){ 
    var pattern = "a[href^='"+urlPattern+"']";  // detect all urls starting with urlPattern 

    $(document).on('click', pattern, function(e){ 
     e.preventDefault(); 
     var ref = window.open($(pattern).attr("href"), '_system', '');  // '_system' will open the system web browser, '_blank' will open the InAppBrowser 
    }); 
} 

Sonra
directUrlToExternalBrowser("http://maps.google.com/maps"); 
directUrlToExternalBrowser("http://www.google.com/intl"); 

tüm (sadece Google Maps için olanlar) "a href" bağlantılarını saptamak istiyorsanız

, aşağıdaki kodu kullanabilirsiniz ... sizin $(document).ready() işlevi aşağıdaki kodu koymak Bunun yerine ...

directUrlToExternalBrowser("http://"); 
directUrlToExternalBrowser("https://");  
1
$(document).on('click', '#map a[target="_blank"]', function(e){ 
    e.preventDefault(); 
    var url = $(this).attr('href'); 

    if(/Android/.test(navigator.appVersion)){ 
     navigator.app.loadUrl(url, { openExternal:true }); 
    }else{ 
     window.open(url, '_system'); 
    } 
}); 

#map - haritalar kabı

google

Hem android hem de ios için çalışın.

İlgili konular