通过inappbrowser中的链接打开移动safari中的外部链接

时间:2013-12-04 18:07:29

标签: javascript cordova safari cordova-3

好的所以我有简单的phonegap 3.2应用程序,我正在使用inappbrowser插件打开一个页面,在receivedEvent方法中我有:

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

加载的页面有一些链接,我需要做的是打开那些不在inappbrowser中的链接,但在移动safari中,我已经尝试过了:

<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中打开,我怎么能在safari中打开它们?谢谢你的帮助

哦,我也试过在window.open函数中将'_blank'更改为'_self'而没有,同样的结果。

1 个答案:

答案 0 :(得分:2)

试试这个。它对我有用。我正在使用Phonegap Build和jQuery Mobile。

*注意 - 我尝试了几种直接向锚标签添加属性的方法,例如<a href="http://externalsite.com target="_blank" data-rel="external" data-ajax="false">也尝试了target="_system - 但没有一个有效,所以我不得不使用javascript(虽然只有5行)。

这不是太复杂,但我会引导你完成它......

  1. 您需要阻止锚标记的默认行为。所以不知怎的抓住你关心的标签。我在外部打开的所有锚标签中添加了一个名为“external”的类。非常标准的东西:

    $(document).on('click', ".external", function (e) {
        e.preventDefault();
    };
    
  2. 然后从您尝试在Safari中加载的锚点中获取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");
    });
    
  4. 就是这样。至少这对我有用。

    祝你好运!