生成的链接无法在浏览器中打开 - Phonegap build

时间:2014-07-01 09:03:36

标签: android jquery ios phonegap-build inappbrowser

我正在尝试强制我的应用中的链接在外部浏览器中打开。我正在使用jQuery mobile& Phonegap build。

我的应用有一个页面,其中包含已生成的联系详细信详细信息中包含该人员网站的链接:

row+='<div class="accWWW"> <a href="http://'+ data[i].website +'" onclick="openGenerated(this); return false;">'+ data[i].website +'</a></div>';

我在代码中定义了这两个函数。

//function which forces open in browser
function openBrowser(url){
    if(device.platform === 'Android') {
        navigator.app.loadUrl(url, {openExternal:true});
    } else {
        window.open(url, '_system');
    }
}

//opens generated URL's
function openGenerated(obj){
    var url = obj.getAttribute("href");
    console.log(url);
    openBrowser(url);
        return false;
}

我的index.html中还有一个简单的<div class="accWWW"> <a href="#" onclick="openBrowser('http://www.google.com');"> Google </a></div>设置

所以...这个链接到谷歌在iOS上完全打开(尚未在Android上测试,因为iOS是我最大的问题),但如果我没有添加openGenerated函数,生成的链接将无法执行任何操作。现在有一个动作,但它在应用程序内打开。

你知道为什么会这样吗?

同样在检查笔记本电脑时,我在控制台中收到这些错误( link 是我的开发网址):

Uncaught ReferenceError: device is not defined *link*:277 // makes sense probably, because I am not using a mobile device
Uncaught SecurityError: Blocked a frame with origin "http://www.test.com" from accessing a frame with origin "*link*". Protocols, domains, and ports must match.// what is this?

我想也许这是一个访问问题,但我在我的config.xml中添加了<access origin="*" browserOnly="true" />,所以这应该没有问题。

LATER EDIT:在Android上,Google链接根本不起作用,生成的链接在应用内打开...显然,device.platform始终为null,但设备插件已添加到我可以在phonegap中看到xml构建这个插件列表:

Installed Plugins

Apps will be built with the latest version of a plugin unless you lock the version in your config.xml (see below). -- Plugin installed as a dependency of another plugin

Third Party VERSION LATEST VERSION

com.phonegap.plugin.statusbar        1.1.0  1.1.0

PhoneGap Core

org.apache.cordova.device        0.2.8  0.2.8
org.apache.cordova.inappbrowser      0.3.3  0.3.3

稍后编辑:

Device.platform似乎没有用,所以我修改了我的功能,将Ved的建议添加到:

function openBrowser(url){

if(navigator.app)
        navigator.app.loadUrl(url, {openExternal:true});
    else {
        var ref = window.open(url, '_system', 'location=no');

    ref.addEventListener('loadstart', function(event) {

    });
    ref.addEventListener('loadstop', function(event) {
         console.log(event.type + ' - ' + event.url);

    });
    ref.addEventListener('exit', function(event) {

    });
    }

}

iOS上的

仍在应用内打开。对于Android,我认为它工作正常。

1 个答案:

答案 0 :(得分:0)

我解决了我的问题。

我在我的html中添加了cordova.js。显然这破坏了事情。