Phonegap Build CLI-5.2.0从Web应用程序内下载并closures

我一直在打电话打开窗口,使用inappbrowser从我的应用程序内摔跤。 基本上,我使用phonegap作为包装来加载具有特殊应用程序function的移动皮肤CMS站点。

这是index.html。 我正在使用inappbrowser(位置设置为否)。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Emerald Test App</title> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="viewport" content="width=device-width" /> <script src="phonegap.js"></script> <script type='text/javascript'> var ref = null; function onLoad() { document.addEventListener("deviceready", onDeviceReady, false); } function onDeviceReady() { var url = 'https://my-cms-site.com/content.aspx?page_id=31&org_id=1&app=1'; var target = '_blank'; var options = "location=no" ref = cordova.InAppBrowser.open(url, target, options); } </script> </head> <body onload="onLoad()"> </body> </html> 

我正在做的是在系统浏览器中打开链接 – 从我的外部网站通过inappbrowser加载

我试过使用类似的文档和build议从类似的文章下载文件

 <script type="text/javascript"> window.open(url, '_system'); </script> 

和_blank,并添加“位置=否”等,但没有骰子。 这些是从我的远程站点加载的外部页面。

点击这些链接后,它们将在同一浏览器(inappbrowser或webview)中打开并接pipe浏览器。 我想要做的是在另一个系统浏览器(铬,狩猎,无论)中打开这些。 这将照顾我的下载问题(因为文件将有望在系统浏览器中打开,用户可以弄清楚如何处理它们)。

我试着添加一个事件监听器,执行脚本返回一个href的值。 然后使用该值window.open(href,'_ system'); 从index.html(而不是远程页面)。 因为在索引上,我仍然会对inappbrowser有所参考。

  ref.addEventListener( "loadstop", function() { ref.executeScript( { code: "var gbal = null; $('a').on('click', function() { gbal = $(this).attr('href'); }); (function runIt() { return gbal })();" }, function( values ) { if (values != null) { //alert( values[ 0 ] ); window.open(values[0],'_system'); } } ); }); } 

值[0]始终为空。 这似乎表明我没有在代码中正确地做一些事情:执行脚本的一部分 – 或$(这)是不是真的这个

所以,很大的问题 – 我怎样才能打开系统浏览器中的外部网站的链接。 window.open('whatever.htm','_XXXXX')在我的远程站点上调用时没有区别。 我通过使用事件侦听器在正确的轨道上?

Solutions Collecting From Web of "Phonegap Build CLI-5.2.0从Web应用程序内下载并closures"

在这里回答我自己的问题,以便面对类似情况的任何人都能得到一个坚实的答案。 我已经从其他职位,参考和文档拼凑在一起。

所以你想打开一个链接到外部浏览器,在InAppBrowser远程加载站点?

在远程站点上,您需要在cordova.js文件,cordova_plugins.js文件中包含脚本src,并包含插件文件夹。 这些文件必须托pipe在您的远程站点上。 我select加载我的条件,如果我知道这是“应用程序”。 加载的cordova文件会抛出一系列的警报,所以你不会想要加载这些,除非你知道这是应用程序。

在这里输入图像说明

你在哪里得到这些文件? 我安装了PhoneGap桌面,并使用了构build文件,但有一些参考错误。 我使用了Phonegap Build,并从APK中提取文件。 将appname.apk重命名为appname.apk.zip,并将所需的js文件提取/复制到我的服务器。 *平台差异有一些问题,cordova.js文件需要更改,并有条件地加载iOS / Android。

这些都是必要的,所以你有处理的inappbrowser(和我的情况下“closures应用程序”的要求 – 导航 )。

在我的远程(外部)站点(加载cordova / plugins之后),我现在可以通过简单的调用navigator.app.exitApp()来closures应用程序。

在inappbrowser中加载的远程(外部)网站的页面中,我现在可以通过执行如下操作在外部页面中打开链接:

 <a onclick="loadUrl('http://google.com'); return false;" href="#">Test link, don't click</a> <script type="text/javascript"> $('.closeapp').click(function() { navigator.app.exitApp(); //this only works on Android. iOS doesn't allow for programmatic exit }); function loadUrl(url){ navigator.app.loadUrl(url, { openExternal:true }); return false; } </script> 

我计划修改loadURL函数有点使用jQuery,点击处理,并寻找一个类。 就像是:

 $('.downloadable').click(function() { var url = $(this).attr('href'); navigator.app.loadUrl(url, { openExternal:true }); }); 

以上仅适用于Android。 尝试一个香草window.open(' http: //www.whatever.com','_system')不会打开我的外部网站在iOS的外部浏览器。 我想在我的外部网站使用另一个ref = cordova.inappbrowser.open()? 这是行不通的。 有人有主意吗?