在系统浏览器上打开任何现有链接

时间:2013-07-16 15:28:06

标签: android cordova

我有一个应用程序,它从REST API中检索json,其中包含我在HTMl小部件上显示的一些HTML内容,我需要检索所有这些链接在系统浏览器上的应用程序外部打开,主要是因为内部应用程序非常慢打开,我的应用程序被锁定为肖像,并且应该在横向上查看链接。

我的应用程序从REST API检索数据,并显示HTML内容,但我无法控制此HTML检索的链接,以

在某些窗口中,我有一些使用带有_system参数的window.open的按钮,它的工作方式就像魅力,但我们需要的解决方案是指定应该在应用程序外部打开所有链接的方法,因为我们没有控制检索到的HTML内容的链接。

问候。

2 个答案:

答案 0 :(得分:0)

除非我误解了这个问题,否则这不是默认的Android行为?我的印象是链接将在系统默认浏览器(而不是您的应用程序)中打开,除非您明确告诉应用程序处理此类活动。

答案 1 :(得分:0)

我对类似问题的回答在这里更合适,所以我会重复一遍: 我们的想法是拦截点击并对以“http”开头的任何链接采取行动。

window.onclick = clickEvent;

function clickEvent(e){
    e = e || window.event;
    var t = e.target || e.srcElement
    if ( t.name || t.href ){
       if( typeof t.href == "string" && t.href.substr(0,4) == 'http' ){
           if( t.attributes.href.value !== "#" ){
               window.open(t.href, '_system', 'location=yes');
           }
           return false; // no further action for this click
       }
    }
    return true; // process click as normal
}

我希望Cordova能够解决一些问题,而较旧的技术(target =“_ system”)就足够了,在这种情况下你可能只需要使用<base target="_system">来设置默认值。 3.0之前的非白名单链接很好。现在,上述内容对我来说都很有用。