2013-12-04 1 views
2

ИТАК У меня есть простой PhoneGap 3.2 приложения и я открываю страницу с помощью inappbrowser плагин, внутри метода receivedEvent у меня есть:открытые внешние ссылки в мобильном сафари по ссылке внутри inappbrowser

var ref = window.open('urlxxxxx', '_blank', 'location=no,presentationstyle=fullscreen,toolbar=no'); 

нагруженная страница имеет несколько ссылок, то, что мне нужно сделать, это открыть эти ссылки не в inappbrowser, но в мобильном сафари, я уже попробовать:

<a href="http://yahoo.com" target="_system">link 7</a> 
<a href="http://yahoo.com" onclick="window.open(this.href,'_system'); return false;">link 3</a> 

, но все они открывают внутри inappbrowser, как я могу их открыть в сафари ?? спасибо за любую помощь

ой, а также я попытался изменить «_blank» на «_self» в функции window.open и ничего, тот же результат.

ответ

1

Попробуйте это. Это сработало для меня. Я использую Phonegap Build и jQuery Mobile.

* Примечание. Я попробовал несколько других способов добавления атрибутов непосредственно в теги привязки, например. <a href="http://externalsite.com target="_blank" data-rel="external" data-ajax="false"> также пробовал target="_system - но никто не работал, поэтому мне пришлось использовать javascript (всего 5 строк).

Это не слишком сложно, но я буду ходить вас через это ...

  1. Вы должны предотвратить поведение по умолчанию тега привязки. Так почему-то хватайтесь за те теги, о которых вы заботитесь. Я добавил класс под названием «внешний» ко всем привязным тегам, которые я хотел открыть извне. Довольно стандартный материал:

    $(document).on('click', ".external", function (e) { 
        e.preventDefault(); 
    }; 
    
  2. Затем возьмите значение href от якоря, который вы пытаетесь загрузить в сафари. Опять же, ничего слишком фантазии не было добавлено здесь:

    $(document).on('click', ".external", function (e) { 
        e.preventDefault(); 
    
        var targetURL = $(this).attr("href"); 
    }; 
    
  3. Это было немного, что потребовалось некоторое рытье - я думаю PhoneGap изменил свой метод на это с 2.3? Во всяком случае, откройте захваченный href в новом окне (вот где "_system" приходит):

    $(document).on('click', ".external", function (e) { 
        e.preventDefault(); 
        var targetURL = $(this).attr("href"); 
    
        window.open(targetURL, "_system"); 
    }); 
    

Вот и все. По крайней мере, это сработало для меня.

Удачи вам!

+2

Это не работает для меня, даже когда я добавляю ссылку на скрипт на cordova.js, чтобы получить поддержку window.open (..., '_system'). window.open просто не работает из InAppBrowser. –