Cordova PhoneGap и Google Maps v3 javascript api: как добавить функциональность кнопки при нажатии на ссылку лицензии или логотип карт Google

Фон: Приложение Cordova phonegap 2.2, работающее на Android, позволяет прослушивать событие Backbutton

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

Google Maps api V3 создает карту с логотипом Google, который ссылается на веб-страницу карт Google в левом нижнем углу, и кликабельной ссылкой на лицензию в правом нижнем углу. У логотипа или условий предоставления услуг нет конкретного идентификатора / селектора.

проблема При нажатии на одну из ссылок веб-страница перенаправляется на веб-страницу Google с: target: _blank, после чего веб-сайт открывается в том же окне, что и приложение Cordava, но функциональность кнопки «Назад» теряется, поскольку веб-страница содержит свой собственный Javascript.

Можно ли ввести какой-то код при загрузке веб-страницы?

Одним из решений может быть открытие внешних ссылок с помощью:

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

но опять же, существует проблема нехватки селекторов.

Обновление: при нажатии кнопки на странице лицензии или на картах Google появляется следующее сообщение об ошибке в logcat: 11-13 16: 20: 30.500: E / Web Console (31508): Uncaught ReferenceError: cordova не определено: 1

Ответы на вопрос(3)

$(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 - контейнер карт Google

Работа как для Android и IOS.

Решение Вопроса

Предполагая, что у вас есть jquery, вы можете включить этот метод в ваш скрипт:

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});
  });
}

Затем вы можете направить клики в API телефонного промежутка следующими строками:

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

..9 и устарел в Zepto v1.0rc1, поэтому здесь 'пересмотренная версия кваалеОтвет, который должен хорошо работать с последними фреймворками.

Эта версия также использует PhoneGap / Cordova 's Код InAppBrowser, позволяющий открывать ссылки в InAppBrowser (используя_blank») или системный веб-браузер (используя '_System»).

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
    });
}

Затем вставьте следующий код в ваш$(document).ready() функция ...

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

Если вы хотите обнаружить все "HREF " ссылки (не только для карт Google), используйте следующий код ...

directUrlToExternalBrowser("http://");  
directUrlToExternalBrowser("https://");      

Ваш ответ на вопрос