android – Phonegap Build CLI-5.2.0从Web应用程序中下载并关闭

前端之家收集整理的这篇文章主要介绍了android – Phonegap Build CLI-5.2.0从Web应用程序中下载并关闭前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在摔跤,打开窗口打开,使用inappbrowser从我的应用程序.基本上,我正在使用phonegap作为一个包装,加载一个移动皮肤的CMS站点与特殊的应用程序功能.

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

<!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加载的外部站点

我已经尝试使用类似的文档和文章中的帖子下载文件

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

和_blank,并添加’location = no’等,但没有骰子.这些是从我的远程站点加载的外部页面.

点击这些链接后,它们将在同一浏览器(inappbrowser或webview)中打开并接管浏览器.我想要做的是在另一个系统浏览器(chrome,safari,无论如何)中打开这些.这将照顾我的下载问题(因为文件将希望在系统浏览器中打开,用户可以知道如何处理它们).

我试图添加一个事件监听器,并执行脚本来返回一个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]始终为空.这似乎表明我没有正确地在代码中执行某些操作:执行脚本的一部分 – 或者$(this)并不是这样的

所以,大问题 – 如何在系统浏览器中打开外部站点链接.在我的远程站点调用时,window.open(‘whatever.htm’,’_XXXXX’)没有区别.我使用事件侦听器在正确的轨道上吗?

解决方法

在这里回答我自己的问题,所有面对类似情况的人都可以得到一个坚实的答案.我从其他职位,参考资料和文件中拼出来.

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

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

你在哪里得到这些文件?我安装了Phonegap Desktop并使用了构建文件,但是有一些引用错误.我改为使用Phonegap Build,并从APK中提取文件.将appname.apk重命名为appname.apk.zip并将需要的js文件解压缩/复制到我的服务器. *平台差异有一些问题,而cordova.js文件需要修改并有条件地加载iOS / Android.

这些是必要的,因此您可以对inappbrowser进行处理(在我的“关闭应用程序”要求 – 导航器)的情况下.

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

在我的远程(外部)网站载入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>

我打算使用jquery修改loadURL函数,点击并处理一个类.就像是:

$('.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()那不行.任何人都有什么想法?

猜你在找的Android相关文章