ionic3在安卓下报错“Application Error - The connection to the server was unsuccessful”解决方案

  • Jason.z
  • 2018-08-06 16:02:05

问题描述

ionic打包好的app在有些安卓机器上运行的时候,会报一个这样的错误框:

Application Error - The connection to the server was unsuccessful

file

问题原因

加载资源超时导致的。

解决办法

在config.xml 里添加如下配置即可。

  <preference name="loadUrlTimeoutValue" value="100000" />

cordova backgroundmode 插件ios下闪退的解决方法

  • Jason.z
  • 2018-08-05 13:51:14

ionic在ios设备下启动闪退。日志报错:

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key _requiresUserActionForMediaPlayback.' *** First throw call stack: (0x18358d1b8 0x181fc455c 0x18358ce80 0x183fc18f0 0x100110980 0x1001b0d04 0x1001e4c90 0x1001e4394 0x1001e486c 0x1001e277c 0x1001015e0 0x189442924 0x1894424ec 0x189448c98 0x189446138 0x1894b868c 0x1001e6950 0x1001012fc 0x1894b46a4 0x1896c4a98 0x1896ca808 0x1896df104 0x1896c77ec 0x18516392c 0x185163798 0x185163b40 0x18353ab5c 0x18353a4a4 0x1835380a4 0x1834662b8 0x1894ad7b0 0x1894a8534 0x1001011ec 0x1824495b8) libc++abi.dylib: terminating with uncaught exception of type...

php截取字符串的处理html标签函数

  • Jason.z
  • 2018-08-05 08:06:09

如果用mb_substr截取字符串的时候,会出现html标签被截断的问题。

所以需要进行处理。

不重复造轮子了,直接参考别人的代码吧。


function truncate($text, $length = 100, $ending = '...', $exact = false, $considerHtml = true) {
    if ($considerHtml) {
      // if the plain text is shorter than the maximum length, return the whole text
      if (strlen(preg_replace('/<.*?>/', '', $text)) <= $length) {
        return $text;
      }
      // splits all html-tags to scanable lines
      preg_match_all('/(<.+?>)?([^<>]*)/s', $text, $lines, PREG_SET_ORDER);
      $total_length = strlen($ending);
      $open_tags = array();
      $truncate = '';
      foreach ($lines as $line_matchings) {
        // if there is any html-tag in this line, handle it...

Ionic2/3禁止内容滚动的方法

  • Jason.z
  • 2018-08-04 15:48:29

在ionic1 我们可以通过使用scroll="false"来达到禁用内容滚动的目的。

<ion-content scroll="false">

那么在ionic2/3中如何实现呢?我们可以使用 no-bounce 这个属性.

<ion-content no-bounce>

当然,我们也可以通过自定义css也能达到同样的效果:

.no-scroll .scroll-content{
     overflow: hidden;
}
<ion-content class="no-scroll">

Simplemde支持图片拖拽和粘贴上传

  • Jason.z
  • 2018-08-04 15:13:07

simpleMde是一款非常不错的 Markdown 文本编辑器。

但是默认并不支持图片的拖拽和上传,这点儿不是很方便。

为了实现这一功能,我们可以借助另外一款插件 InlineAttachment

InlineAttachment 可以实现对 textarea 的图片拖拽和上传。

所以接下来的工作就是把 simplemdeInlineAttachment 结合使用了。

如何实现

1、引入 InlineAttachment

先后引入 inline-attachment.min.js 和 codemirror-4.inline-attachment.min.js两个文件。

2、使用 InlineAttachment

var inlineAttachmentConfig = {
    uploadUrl: '/upload/image',
    extraHeaders: {
        //'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
    }
};

$("textarea.simplemde").each(function(_element){
    var simplemde = new SimpleMDE({
       ...

Google API 提示 Not valid origin for the client 错误的解决方法

  • Jason.z
  • 2018-08-04 14:55:46

问题描述

使用 Google Api的时候报了以下错误:

Not a valid origin for the client: http://www.jason-z.com has not been whitelisted for client ID xxx

如图所示:

file

根据错误提示,应该是当前网址没有加入到白名单里导致的权限错误。

解决办法

1、登录到google api 控制台。https://console.developers.google.com/

file

2、在对应的api下的 Credentials 目录下找到对应的 Clientid ,点击后面的 编辑 图标

file

3、在Authorized JavaScript origins 这一栏加入你的网址,保存即可,可添加多条。

file

Ionic4显示Waiting for connectivity with ionic-app-scripts错误的解决方案

  • Jason.z
  • 2018-08-02 12:52:31

最近有不少同学升级到了ionic4,当使用ionic serve命令的时候,会提示以下错误:

Waiting for connectivity with ionic-app-scripts

如图所示

首先尝试升级到ionic-app-scritps 到最新版

npm install @ionic/app-scripts@latest --save-dev

然而升级到最新版3.11.1也并没有效果。

后来在官方Issue上看到这个bug

官方提示在ionic 4.0.3上已经修复了这个问题。

于是尝试更新到本地CLI 为4.0.3版本,仍然报错。

后来看了具体的bug原因,可能是解析 0.0.0.0:8100 这个地址的时候出错了,既然如此,那么我就在 ionic serve 命令上指定 address 就行了

ionic serve --address 127.0.0.1

当然也可以借助npm命令来绕过ionic cli 运行,

npm run...

Codeigniter 2.1.x版本下mssql limit方法的修正

  • Jason.z
  • 2018-08-02 12:28:29

codeigniter 2.1.x 版本在mssql下limit方法返回的数值有问题。 这个问题在2.2.x 以及以上版本已经修复。

如果你的返回有问题,可以尝试以下代码修复:

解决办法

替换 system/database/drivers/mssql/mssql_driver.phpsystem/database/drivers/sqlsrv/sqlsrv _driver.php 下的 _limit 方法


 function _limit($sql, $limit, $offset) {

    // $i = $limit + $offset;

    // return preg_replace ( '/(^\SELECT (DISTINCT)?)/i', '\\1 TOP ' . $i . ' ', $sql );

    $orderby = ' ORDER BY getdate()';

    if (! empty ( $this->ar_orderby )) {

        $p = strrpos ( $sql, 'order by' );

        if ($p) {

            $sql = trim ( substr ( $sql, 0, $p ) );

        }

        $orderby = ' ORDER BY ' . implode ( ', ', $this->ar_orderby );

    }

    if (!...

Node提示dyld: Library not loaded 的解决方案

  • Jason.z
  • 2018-07-30 18:16:27

安装了ffmpeg之后,使用 node 命令报错

dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.58.dylib Referenced from: /usr/local/bin/node Reason: image not found [1] 88879 abort npm install

解决办法:

brew uninstall --force node&nbsp;

brew uninstall icu4c && brew install icu4c // 这行执行有错误或警告提示,先不管

brew unlink icu4c && brew link icu4c &ndash;force // 这行执行有错误或警告提示,先不管

brew install node

node -v

Ionic3界面数据不更新或者不刷新的处理方法

  • Jason.z
  • 2018-07-30 15:27:07

在ionic3开发中经常会出现一个"奇怪"的现象(实际上其他开发也有这种情况):

后台的数据值已经更新了,但是界面上却没有变化。

怎么处理这个问题呢?我经常使用下面2种方法:

第一种 延时更新

利用 setTimeout 就可以实现

setTimeout(() => {
  //更新界面数据`
  data = 'xxx';
},1000);

第二种 变化检查

利用ngzone

1、首先引用ngzone模块

import { NgZone} from '@angular/core';

2、创建ngzone实例

this.zone = new NgZone({enableLongStackTrace: false});

也可以写在constructor构造函数里

constructor(private zone:NgZone)

3、最后是把代码封装到this.zone.run()方法里

this.zone.run(() => {
  //更新界面数据
  data = 'xxxx';
`});