小编Kev*_*Sol的帖子

Phonegap与2014年的原生iOS/Android开发相同

我是一名不熟悉移动应用程序开发的Web开发人员,需要尽快启动项目.尽管在过去几周进行了研究,(我已经列出了迄今为止我在这篇文章的最后部分所做的事情)但我仍然没有在Phonegap或原生(仅适用于iOS/Android)之间做出决定.谷歌搜索"Phonegap vs native"之类似乎给出了相当均匀分裂的结果,但毫无疑问,本机将提供更快/更好的最终结果,但代价是不得不在短时间内学习这么多新东西大体时间.

关于Phonegap的一个常见问题是运行缓慢 - 但我也读过,因为V3现在运行速度要快得多 - 是这样吗?

我需要构建的应用程序非常像移动静态站点(但客户坚持认为它必须是应用程序) - 只是文本和一些图像和一些PDF.将添加新内容,例如新闻,因此我考虑的不是为每个新项目发布新的应用程序版本,应用程序将从Web API(JSON或XML)获取新数据,最后需要推送通知.

无需访问摄像头,GPS或任何其他硬件(禁止文件系统缓存图像/ PDF).

我看过类似的应用程序(比赛),他们似乎都广泛使用网页浏览量,这可能表明它们是用Phonegap制作的(或者是它?).

所以我的问题是,考虑到我需要做的简单类型的应用程序,为本机生成会有很大的好处,或者Phonegap(最新版本)也能正常工作.或者另一方面,因为它是一个简单的应用程序,在原生中是否容易(即从零到两个应用商店在10周内)?

我有一个安装了ADT/Xcode的mac,因此这不是选择的因素.

我的研究到目前为止.

跟随Android开始到这里http://developer.android.com/training/basics/actionbar/styling.html然后迷失了标签

然后得到了一本书,SAMS在24小时内,大约6小时内自学了android

关注iOS到这里https://developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOS/ThirdTutorial.html#//apple_ref/doc/uid/TP40011343-CH10-SW1

几个Phonegap教程,如http://coenraets.org/blog/phonegap-tutorial/,但似乎都有问题让它们按原样运行.

android ios cordova

24
推荐指数
1
解决办法
2万
查看次数

CORS,Cordova,AngularJs $ http和file://混乱

我有一个AngularJS/Cordova应用程序,用于在远程服务器上轮询JSON服务:

$http({method: 'GET', url: 'http://example.com/index.php'})
Run Code Online (Sandbox Code Playgroud)

在浏览器中开发并运行我的Intranet apache服务器(http://dev)我得到"没有'Access-Control-Allow-Origin'标头存在"所以我通过添加以下内容来解决这个问题:

Header set Access-Control-Allow-Origin "http://dev"
Run Code Online (Sandbox Code Playgroud)

一切正常,我Origin:http://dev在Chrome开发工具中看到了.

因此,不得不首次考虑这个问题,我想知道当应用程序在Android/iOS网页浏览器中运行时,Origin会是什么.我决定在我的设备上进行构建和部署,并期望在远程调试中看到相同的错误(适用于iOS的Safari和适用于Android的Weinre),但令我惊讶的是它可以工作(不发送任何CORS标头)!我还发现,在两个设备中,应用程序在webview下以file://方案运行,而不是(我假设的)手机操作系统提供的某些类型的http服务器.

因此研究似乎表明文件不需要CORS:// - 这样的"网站"可以访问任何域上的任何XHR资源.但是,当我在桌面浏览器上测试时,我发现虽然Safari不需要CORS文件://但确实如此,FireFox可以在没有CORS的情况下工作

所以我的问题:

1)为什么我的应用程序在Android/iOS中没有CORS工作 - 是因为CORS不适用于file://,或者,Cordova是否正在做某些事情以使其在设备中运行?

我有<access origin="*"/>我的配置

2)如果,Q1的待定答案,我应该想要在安全的网站上并明确允许来自应用程序的请求,你为file://"hosts"提供了什么价值的Access-Control-Allow-Origin?在我的调试中,来自file的请求中没有Origin头://

3)除了阻止XHR请求到远程服务器,Chrome还阻止我的应用程序模板(我使用单独的文件),见下文.这是我的应用程序的潜在问题,还是我不需要担心的Chrome问题?

XMLHttpRequest cannot load file:///Volumes/projects/phonegap/www/templates/tabs.html. Cross origin requests are only supported for HTTP. 
Run Code Online (Sandbox Code Playgroud)

javascript ajax cors angularjs cordova

18
推荐指数
1
解决办法
2万
查看次数

iOS 7 webview和localStorage持久性

我正在使用PhoneGap/Cordova开发混合应用程序(仅适用于iOS和Android),并希望使用HTML5 localStorage存储内容以供离线访问.

http://caniuse.com/#search=localStorage说 - "在iOS 5和6中,localStorage数据存储在可能偶尔被操作系统清除的位置."

  1. iOS 7(及更高版本)webview的情况如何,localStorage在什么情况下会持续存在,或者被操作系统或用户清除?

  2. 该应用程序的更新是否会清除localStorage?

  3. 用户在Safari上清除浏览器历史记录怎么样?这也适用于webview吗?

  4. 我是否需要担心(或者我甚至可以控制)在fils系统上创建localStorage的位置.我知道它不应该在iCloud上备份.


我有一台设备(iPad)并检查文件系统我看到localStorage文件位于app沙箱中的〜/ Library/Caches中,见下图.

来自文档:

https://developer.apple.com/icloud/documentation/data-storage/index.html 可以再次下载或重新生成的数据应存储在/ Library/Caches目录中.您应该放在Caches目录中的文件示例包括数据库缓存文件和可下载内容,例如杂志,报纸和地图应用程序使用的内容.

我只是这样做来设置数据:

  localStorage.setItem('foo','this is the FOO value');
  localStorage.setItem('bar','and this is the BAR value');
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

iphone html5 local-storage ios cordova

15
推荐指数
1
解决办法
1万
查看次数

谷歌选择器身份验证弹出窗口被阻止

我有一个列出工作的移动网站,用户申请并上传他们的简历(简历) - 我希望他们能够从他们的Google云端硬盘中选择一个文件.

我在这里创建了Hello world示例 - https://developers.google.com/picker/docs/(为方便起见,此处转载的代码)

问题是,如果尚未登录到云端硬盘,则会启动登录弹出窗口.这在桌面上已经够糟了,但在手机上真的很糟糕.

我试过这个解决方案,但得到'TypeError:gapi.auth is undefined'

我还尝试从onclick事件启动选择器,而不是文档描述的onload.

function launchDrive()
    {
        gapi.load('auth', {'callback': onAuthApiLoad});
        gapi.load('picker', {'callback': onPickerApiLoad});
    }
<input type='button' value='Launch Drive' onclick='launchDrive();'>
Run Code Online (Sandbox Code Playgroud)

Google代码示例:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>Google Picker Example</title>

    <script type="text/javascript">

      var developerKey = 'xxxxxxxYYYYYYYY-12345678';
      var clientId = "1234567890-abcdefghijklmnopqrstuvwxyz.apps.googleusercontent.com"
      var scope = ['https://www.googleapis.com/auth/photos'];

      var pickerApiLoaded = false;
      var oauthToken;

      function onApiLoad() {
        gapi.load('auth', {'callback': onAuthApiLoad});
        gapi.load('picker', {'callback': onPickerApiLoad});
      }

      function onAuthApiLoad() {
        window.gapi.auth.authorize(
            {
              'client_id': clientId, …
Run Code Online (Sandbox Code Playgroud)

javascript oauth popup google-drive-api

9
推荐指数
1
解决办法
6761
查看次数

从手机上的OneDrive中选择一个文件 - 移动网站

编辑 - 标题以前

OneDrive Web选取器SDK(Javascript)无法在移动设备上选择/打开文件

来自SO的自动电子邮件建议我将奖金更改为赏金期限到期.

我已根据这些说明https://dev.onedrive.com/sdk/javascript-picker-saver.htm在移动设备友好的网站上创建了一个OneDrive选择器,它在Windows桌面上运行良好.

然而,在移动浏览器(Android 4.2上的Android浏览器和Chrome以及iOS 7上的Safari)中,选择器启动并将我登录,我可以看到文件,但是当我点击选择文件时,"打开"按钮仍然处于禁用状态.

编辑,只是为了澄清:我不想将文件上传到OneDrive.我想在我的OneDrive帐户中选择一个文件并将其URL传回页面.这样我就可以将该URL发送到我的服务器并让服务器获取文件

如果我长按我选择的文件,会出现一个内容(我的意思就像Windows中的右键菜单)菜单,带有"打开"选项 - 选择这个似乎只是让Onedrive重新加载.

我的代码是:

<script type="text/javascript" src="https://js.live.net/v5.0/OneDrive.js" id="onedrive-js" client-id="0000000011111111"></script>

    <script type="text/javascript">
        var pickerOptions = {
        success: function(files) {
        console.log(files);
        document.getElementById("cloud_cv_source_input").value = "onedrive" ;
        document.getElementById("cloud_cv_file_url_input").value = files.values[0].link ;                
        document.getElementById("cloud_cv_file_name_input").value = files.values[0].fileName;
        document.getElementById("cloud_cv_file_size_input").value = files.values[0].size;

  },

  cancel: function() {
      // handle when the user cancels picking a file
  },

  linkType: "downloadLink", // or "downloadLink",
  multiSelect: false // or true
}

    function launchOneDrive()
        {
        OneDrive.open(pickerOptions);
        }


    </script>
Run Code Online (Sandbox Code Playgroud)

我确实在文档的末尾看到了这个:

The OneDrive …
Run Code Online (Sandbox Code Playgroud)

javascript mobile onedrive

8
推荐指数
1
解决办法
882
查看次数

Google Drive Picker(JavaScript)不支持移动设备/响应式

2015年11月 - 仍在寻找解决方案.

我正在使用Google Picker API https://developers.google.com/picker/docs/#hiworld(显然!)让用户从其云端硬盘帐户中选择一个文件(选择要从云端硬盘下载的文件 - 不是将新文件上传到云端硬盘.这是在响应式网站上,而不是"应用程序"(本机或其他).

它在台式机和平板电脑上运行良好,但在手机上,Picker太大了.

https://developers.google.com/picker/docs/reference#Picker中,它说:

PickerBuilder.setSize() 设置首选对话框大小.该对话框将自动居中.它的最小尺寸为(566,350),最大尺寸为(1051,650).

所以它似乎不适合在手机上工作?我错过了什么,或者有解决方法,还是替代方案?当Dropbox等其他服务开箱即用时,Google会排除手机用户使用Picker的情况,这似乎很奇怪.

mobile android ios google-drive-api

8
推荐指数
1
解决办法
1010
查看次数

Bootstrap 4 - 打开模态A; 关闭模态A; 打开模态B - A未关闭

我有工作网站.用户填写表格并从PC中选择CV(简历)文件,点击发送按钮.这将调用ajaxSubmit()函数,该函数执行本地验证(从下面的代码中删除),如果正常,则上传AJAX文件.服务器端进行进一步验证,并在JSON中返回SUCCESS或ERROR(加上错误文本).

当用户点击发送按钮时,我打开一个模态#apply_working_modal,它只显示一个微调器图标.在ajax.done上,我关闭#apply_working_modal,如果有错误,将它们放在模态#apply_errors_modal的主体上并打开它.

我第一次尝试它,故意出错,它的工作原理如上所述.如果我再次尝试,错误仍然存​​在,#apply_working_modal会显示并且不会关闭,直到我手动点击X或远离它.

这似乎是一些时间问题,因为当您在发生错误后重新提交时,CV文件已经在服务器上,因此JSON会很快恢复.事实上,如果我扼杀网络,我可以使它工作.

我尝试过等待模态事件的变种,还有setTimeout()来延迟打开#apply_errors_modal

function ajaxSubmit(whichForm){

    $("#apply_working_modal").modal("show"); 
    console.log('showing apply_working_modal');

    var applyRequest =$.ajax({
        url: postUrl,
        etc: etc
    });


    applyRequest.done(function( data, textStatus, jqXHR ) {

        console.log(data);

        $("#apply_working_modal").modal("hide");

        console.log("hiding #apply_working_modal ");

        if (data.STATUS =='SUCCESS') {
            // validation OK at server
        }
        else {// validation error at server

            $('#apply_working_modal').on('hidden.bs.modal', function () {
                $("#apply_errors_modal_body").html(data.ErrorText); 
                $("#apply_errors_modal").modal("show");
                console.log("on hidden of #apply_working_modal");
            })
        }               
    });

}
Run Code Online (Sandbox Code Playgroud)

这是控制台输出的好/坏测试:

//Expected behaviour


15:58:45.981 myscript.js:179 showing apply_working_modal

// 10 seconds pass while server uploads file and returns errors in JSON
15:58:56.696 …
Run Code Online (Sandbox Code Playgroud)

jquery modal-dialog bootstrap-4

7
推荐指数
1
解决办法
559
查看次数

Bootstrap 4网格| 变量 - 固定变量| 宽度列,重叠在IE11上

具有一个固定宽度列的Bootstrap 4网格问题IE11

我有一个三列网格,其中中间列必须是固定宽度,左右列可以是变量/换行.

代码如下,使用我自己的类作为行包装器.Bootstrap是4.1.1

<div class='centered_content'>

      <div class="row">

        <div class="col-md">
           variable width content
        </div> 

        <div class="col-md m d-none d-md-block ">
            Fixed width content
        </div> 

        <div class="col-md l d-none d-md-block">
            variable width content
        </div> 

      </div> 

</div> 




.centered_content {
  max-width:1130px; 
  margin: auto;
}
Run Code Online (Sandbox Code Playgroud)

问题是在IE11(以及Android 4平板电脑上的"互联网"浏览器)中,当浏览器在最大宽度1100到大约800px之间(在小断点之前)调整大小时,右列与中间列重叠.在其他浏览器中,左右列收缩到足以允许中间保持其固定宽度.

下图说明了这一点.第一个展示了IE浏览器(以及所有其他浏览器)最大化浏览效果,第二张图片显示了宽度减小的Chrome(所需行为),最后一张图片显示IE宽度减小

我知道IE不完全支持flex所以猜测可能是问题.Edge适用于Chrome.任何解决方法?

浏览器与所有浏览器完全一致

镀铬宽度减小

IE11减少了显示问题

css internet-explorer flexbox bootstrap-4

5
推荐指数
1
解决办法
459
查看次数

PhoneGap,PhoneGap Build和iOS - Mac需要吗?

首先,我回顾了以前的类似问题,但是他们的答案中有旧的或相互矛盾的,所以我问的是当前(2014年5月)构建/测试/部署iPhone/iPad应用程序的要求是什么?

更长的版本 - 客户已经要求我为iOS/Android开发应用程序,因为我对此我是全新的,我希望使用PhoneGap来使用我现有的网络技能来开发应用程序.我目前只拥有一部Android手机,因此安装了Android SDK和PhoneGap到Ubuntu(本周所有下载的内容都是Ubuntu所有当前版本)并最终获得了PhoneGap"hello world"示例,可以在模拟器和实际手机上运行(不是通过播放)商店,只是APK文件的本地副本)

我在这里和其他地方找到了许多指南,详细说明了如何使用PC(或我假设的Ubuntu)发布到App Store - 主要是谈论证书等等.但是,从我设置工具的经验来构建我的第一个hello world app ,PhoneGap需要针对您定位的每个设备的SDK,因此需要Apple SDK才能运行模拟器吗?或者你可以在Ubuntu上模拟iPhone吗?

所以在我看来,即使你认为你可以在没有Mac的情况下部署到App Store,你需要在开发过程中运行模拟器 - 这是正确的还是我错过了什么?

提前致谢!

ubuntu ios cordova

4
推荐指数
1
解决办法
3148
查看次数

Bootstrap 4 网格 - 左侧 3 个堆叠列,右侧 1 个

我一直在尝试获得如下所示的 Bootstrap 4 布局:

在此处输入图片说明

在大型设备上,我需要搜索表单、CTA 和按钮广告进入垂直列 4 宽,而内容将占据右侧的所有空间(内容可变且能够根据需要向下增长)。

对于小型设备,我希望搜索表单、CTA、内容和按钮广告按该顺序显示,占据屏幕宽度的 100%。

我将使用网格排序类来改变正常流程。但是现在,我被困住了,无法为大型设备提供所需的布局。我试过的代码如下所示,但内容总是在其他项目的下面而不是在它旁边。

这个问题 似乎解决了这个问题,但是推/拉类现在消失了?

我的代码(2 次尝试)

<div class="row align-items-start">

  <div class="col-md-4">
    <div style="height:50px;width:100%;background-color: red;"></div>
  </div> 

  <div class="w-100"></div>

  <div class="col-md-4">
    <div style="height:50px;width:100%;background-color: blue;"></div>
  </div> 

  <div class="w-100"></div>

  <div class="col-md-4">
    <div style="height:50px;width:100%;background-color: green;"></div>
  </div> 

  <div class="w-100"></div>

  <div  class="col-md-8 offset-md-4">
    <div style="height:50px;width:100%;background-color: yellow;"></div>
  </div> 

</div> 






<div class="row ">

  <div class="col-md-4">
    <div style="height:50px;width:100%;background-color: red;"></div>
  </div> 

  <div class="col-md-4">
    <div style="height:50px;width:100%;background-color: blue;"></div>
  </div> 

  <div class="col-md-4">
    <div style="height:50px;width:100%;background-color: green;"></div>
  </div> 

  <div style='float:right;' class="col-md-8 offset-md-4">
    <div style="height:50px;width:100%;background-color: yellow;"></div>
  </div> …
Run Code Online (Sandbox Code Playgroud)

html css bootstrap-4

3
推荐指数
1
解决办法
2938
查看次数

Ionic/Angular ui-router -a href返回错误的URL /内容

我有一个Ionic选项卡菜单,显示4项(下面的代码和codepen只有2项清晰度)和一个"更多"项目,导致进一步的菜单选项显示为离子内容列表.它使用Angular ui-router.我有两个可能相关的问题.

问题1:首先应用程序似乎工作正常,但是当您开始浏览几个链接时(通常在访问"更多"之后,选项卡将开始返回错误的URL.例如:

说明新闻>联系>更多>体育>联系人>新闻>更多 - 在这里打破,我看到联系人内容而不是更多内容.

我已经在每个控制器和Chrome开发工具控制台中添加了一个console.log,我可以看到每个标签点击似乎都是额外的事件,例如点击新闻标签意味着"新闻"在控制台中出现两次.此外,在上面的导航示例中,控制台显示我单击"更多"时启动了联系人控制器.

总而言之,在对应用程序进行一些点击后,href目标似乎将我发送到了错误的位置,就好像在运行时编辑了代码一样.

问题2:直到如上所述导航中断的点,后退按钮对于从选项卡启动的页面正常工作,但对于从"更多"页面(即从列表)启动的页面,没有后退按钮.

对不起,所有这些初学者的问题!

Codepen:http://codepen.io/anon/pen/hBpfa

index.html的:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
    <title></title>

    <link href="lib/ionic/css/ionic.css" rel="stylesheet">
    <link href="css/style.css" rel="stylesheet">


    <script src="lib/ionic/js/ionic.bundle.js"></script>
    <script src="js/app.js"></script>
    </head>
  <body ng-app="schoolApp"  animation="slide-left-right-ios7">

    <ion-nav-bar class="bar-stable nav-title-slide-ios7 bar-positive">
      <ion-nav-back-button class="button-icon icon  ion-ios7-arrow-back">
        Back
      </ion-nav-back-button>
    </ion-nav-bar>

    <ion-nav-view></ion-nav-view>

  <script id="tabs.html" type="text/ng-template">
  <ion-tabs class="tabs-icon-top">

    <ion-tab title="News" icon="icon ion-ios7-paper-outline SS-tab-icon" href="#/tab/news">
      <ion-nav-view></ion-nav-view>
    </ion-tab>

    <ion-tab title="Contact" icon="icon ion-ios7-telephone SS-tab-icon" href="#/tab/contact">
      <ion-nav-view></ion-nav-view>
    </ion-tab>

    <ion-tab title="More" icon="icon …
Run Code Online (Sandbox Code Playgroud)

javascript mobile angularjs angular-ui ionic-framework

2
推荐指数
1
解决办法
8087
查看次数

MySQL - 计数和分组 - 将所有结果显示在一行中

我认为这应该很简单,但我无法弄明白或在这里找到解决方案.

我有一个表ITEM_PROPERTIES

item_ID int
property_name char(20)
property_value char(20)
Run Code Online (Sandbox Code Playgroud)

样本数据

5   Colour  Black
5   Size    M   
6   Colour  Blue
6   Size    L   
7   Colour  Purple
7   Size    M   
8   Colour  Blue
8   Size    S   
9   Colour  Wine
9   Size    M   
Run Code Online (Sandbox Code Playgroud)

如果我做:

SELECT property_value, count(property_value) 
FROM ITEM_PROPERTIES where property_name='Colour'
group by property_value
Run Code Online (Sandbox Code Playgroud)

我明白了:

Black   1
Blue    2
Purple  1
Wine    1
Run Code Online (Sandbox Code Playgroud)

我如何在一行中得到这样的:

Black 1, Blue 2, Purple 1, Wine 1
Run Code Online (Sandbox Code Playgroud)

我试过了 :

SELECT group_concat(property_value, count(property_value)) 
FROM ITEM_PROPERTIES where property_name='Colour'
group by property_value …
Run Code Online (Sandbox Code Playgroud)

mysql sql database

2
推荐指数
1
解决办法
196
查看次数

新手谷歌驱动API(PHP)混乱 - 使用什么指南/库?

我有一个移动网站m.example.com - 我希望访问者从手机中选择Google云端硬盘中的文件,并将其发送到托管m.example.com的服务器.基本上仿真<input type="file">桌面上的简单文件上传.

据我所知,工作流程如下:

1)用户选择带有Picker的文件,该文件将所选文件的元数据发送到我的网站客户端(即手机/平板电脑上运行的HTML/Javascript)

2)我通过ajax或只是一个表单隐藏字段将它发送到我的服务器

3)我的服务器向Google API请求获取文件,然后将其存储在服务器的文件系统中

所以我需要帮助:

a)上述步骤是否正确,还有其他方法可以做到这一点,甚至是我可以使用的服务,这将允许我的网站用户从几个云存储提供商之一中选择他们的文件?

a)假设我的步骤是正确的,这是唯一的方法,我被困在3)部分 - 服务器与API谈话.

到目前为止,我已经停止了这里的选择器 - Google picker auth popup被阻止并获得了文件URL.我还没有完成2)但是,我现在只是手动将文件URL放入我的下载脚本中.

我正在使用PHP,我想要下载到我的服务器的文件可以是公共的或私有的,这取决于最终用户.

我迷失在API文档中(如在手册页中,而不是谷歌文档),并且与https://developers.google.com/api-client-library/php/start/get_started(调用此API文档)相混淆和https://developers.google.com/drive/web/quickstart/quickstart-php(调用此Drive文档) - 这两个不同的API?

我按照API文档中的链接从这里安装了客户端:https://github.com/google/google-api-php-client,但在Drive docs上尝试"第3步:设置示例"时得到很多错误,例如找不到的文件,类不是fount等等,所以这让我觉得这里有两个不同的API /客户端 - 有人可以指点我正确的方向开始吗?

UPDATE

我已经从这个https://developers.google.com/api-client-library/php/start/get_started链接的github安装了PHP客户端

这看起来像:

在此输入图像描述

我在examples目录中运行了simplefileupload.php - 第一次工作,只需要输入我的项目详细信息

所以转到https://developers.google.com/drive/web/quickstart/quickstart-php#step_3_set_up_the_sample并在google-api的根目录中创建了drive_rest_api_step_3.php(如屏幕抓取所示)

拿到 Fatal error: require_once(): Failed opening required 'src/Google_Client.php' (include_path='.:/usr/local/lib/php') in /path/to/google-api/drive_rest_api_step_3.php on line 5

没有Google_Client.php库,但为src /谷歌/ Client.php所以我编辑放在require_once使用的.

现在得到Failed opening required 'src/contrib/Google_DriveService.php' - 再次搜索该文件yeilds没有结果,但有一个src/Google/Service/Drive.php, …

php api google-drive-api

1
推荐指数
1
解决办法
3377
查看次数