PhoneGap 3.0 + Sencha Touch 如何在设备浏览器中打开链接?

3

我正在使用Sencha Touch + Phonegap 3.0构建一个Android应用程序,需要在外部浏览器中打开一些URL。对于iOS,我使用Ext.device.Device.openURL(url),它可以正常工作。但是在Android上,当我点击链接时,它会在我的应用视图中打开。

我尝试过:

window.open(url, '_system', 'location=no'); // not worked still opens the in app view

window.open(alltaskurl,  '_blank', 'location=yes'); // not worked opens in app view 

然后我安装了InAppBrowserphoneGap插件并尝试更改我的config.xml文件

   <feature name="InAppBrowser">
        <param name="android-package" value="org.apache.cordova.InAppBrowser" />
    </feature>

window.open('http://apache.org', '_blank', 'location=yes'); // not worked as well 

我不知道该怎么处理这个问题,已经花费了很多时间来尝试解决它,请你帮助我。提前感谢!

3个回答

2

谢谢Dibish,你让我找到了正确的方向。 我正在使用一个库,它会自己生成一些href链接,所以为了避免影响这个库,我采取了以下做法:

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
}

编辑:使用window.open()代替Android特定的navigator.app.loadUrl()。 我还需要清除href="#"的情况。


2

一旦您安装了InAppBrowser,请使用以下方法:

window.open(url, '_system');

1
我用以下代码完成了这个操作。
 navigator.app.loadUrl(url, {openExternal: true});

我从其中一个Sencha论坛上得到了它


1
这种方法仅适用于Android而不适用于iOS,因此我建议使用跨平台的window.open(url,'_system')方法[来自此答案](https://dev59.com/nXnZa4cB1Zd3GeqPlhNT#19953383)。确保通过`cordova plugin add org.apache.cordova.inappbrowser`添加了InAppBrowser插件。 - Mobiletainment
window.open会导致应用程序崩溃(在Sencha Touch框架中测试过)。因此,navigator.app.loadurl是正确的选择。 - RED.Skull

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接