解决问题集锦

?cordova-plugin-inappbrowser插件 IOS 打开链接(jsp)loading不消失

ios-webview加载进度问题,debug看了下,正常情况应该是 webViewDidStartLoad –> self.spinner startAnimating –> webViewDidFinishLoad –> self.spinner stopAnimating

但是项目中有个链接,打开后有跳转,不会执行webViewDidFinishLoad,执行了didFailLoadWithError –> self.spinner stopAnimating又执行了webViewDidStartLoad –> self.spinner startAnimating然后没反应了。

经过排除,在jsp页面onload后再跳转即可解决loading不消失问题

?本地的.ipa 安装到苹果手机

用工具iTools Pro 然后点击 应用–安装–即可

?nvm 设置默认 node 版本

nvm alias default v5.0.0

?angularjs用div contenteditable 模拟输入框自动变化高度,ng-model双向数据绑定,附带placeholder效果

用textarea标签来做高度自适应输入功能有点麻烦,用div加个h5属性 contenteditable="true" 即可使用 ng-model 实现双向绑定,和高度自适应的功能。
注意:苹果手机不支持h5属性contenteditable="true",需添加样式-webkit-user-select:text

html:

<div placeholder="请输入" contenteditable="true" ng-model="model"></div>

CSS:

div{
-webkit-user-select:text; 
}
div:empty:before{
content: attr(placeholder);
color:#bbb;
}

directive:

.directive('contenteditable', function() {
return {
restrict: 'A',
require: '?ngModel',
link: function(scope, element, attrs,ngModel) {
if (!ngModel) {
return;
}
ngModel.$render = function() {
element.html(ngModel.$viewValue || '');
};
element.bind('keyup', function() {
scope.$apply(function() {
var html=element.html();
ngModel.$setViewValue(html);
});
});
}
};
});

有个问题是光标总是定位在开头,自行百度

?angular 页面滚动到指定位置

$location.hash('category');
$anchorScroll();

?Git Push 避免用户名和密码方法

http://www.cnblogs.com/ballwql/p/3462104.html

?div 包裹 input checkbox点击问题

<!-- 点击div即checkbox或者文字都可以实现是否同意的操作 -->
<!-- 结果点击checkbox无效 -->
<div ng-click="agree()">
<span><input type="checkbox" ng-model="isAgree" /></span>
<span>我同意并自愿作出以上承诺</span>
</div>

➣解决:

<!-- 点击div即checkbox或者文字都可以实现是否同意的操作 -->
<!-- 结果点击checkbox无效 -->
<div ng-click="agree()">
<span ng-click="checkboxAgree($event)">
<input type="checkbox" ng-model="isAgree" />
</span>
<span>我同意并自愿作出以上承诺</span>
</div>

停止事件冒泡,当点击的是checkbox时,就不执行父div的click

$scope.checkboxAgree = function(e) {
e.stopPropagation();
};

?mac 显示.git文件快捷键

Command + Shift + .

?$cordovaFileTransfer下载图片后系统相册无法显示图片

➣解决:
android 下载到 cordova.file.externalRootDirectory Download:

<!-- 插件地址:https://github.com/lotterfriends/refreshgallery -->
cordova plugin add cordova-plugin-refresh-gallery

<!-- 下载成功添加下面代码,相当于通知系统相册进行刷新 -->
refreshMedia.refresh(targetPath); // Refresh the image gallery

?You don’t have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

只需要在命令前加上sudo

例如:sudo gem install cocoapods

sudo是获取管理员权限,现在按照步骤输入管理员密码即可.

cordova-android@6.3.0编译遇到问题,可能需要要重新安装cordova-plugin-compat

What went wrong:
Execution failed for task ':transformClassesWithDexForDebug'.
>
com.android.build.api.transform.TransformException:
com.android.ide.common.process.ProcessException:
java.util.concurrent.ExecutionException: com.android.dex.DexException:
Multiple dex files define Lorg/apache/cordova/PermissionHelper;

➣解决:

cordova plugin rm cordova-plugin-compat --force

cordova plugin add cordova-plugin-compat@1.2

cordova platform rm android

cordova platform add android@6.3.0

?Android端视频播放集成预览插件

Android视频播放插件:Vitamio-Cordova-Plugin

直播发送图片预览插件:cordova-plugin-ImagePicker

报错: LOAD FFMPEG ERROR: dlopen failed: /data/data/xxx.xx.com.cn/libs/libffmpeg.so: has text relocations ….

➣解决:

需要配置AndroidManifest.xml targetSdk低于23

?IOS8用户无法升级和下载或者闪退

4.4.0以上不兼容ios8

ionic platform add ios@4.3.1

?IOS8兼容问题

transform、flex-wrap需要加-webkit-前缀

?Cordova升级打包后版本号versioncode由6位变为5位,导致升级后版本号低于之前版本不能安装

修改platforms>android>cordova>lib>prepare.js中function default_versionCode计算versionCode的代码

function default_versionCode (version) {
var nums = version.split('-')[0].split('.');
var versionCode = 0;
if (+nums[0]) {
versionCode += +nums[0] * 100000;
}
if (+nums[1]) {
versionCode += +nums[1] * 100;
}
if (+nums[2]) {
versionCode += +nums[2] * 10;
}
events.emit('verbose', 'android-versionCode not found in config.xml. Generating a code based on version in config.xml (' + version + '): ' + versionCode);
return versionCode;
}

?angular5 使用angular-cli搭建项目ng build后,failed to load resource 文件路径问题

打包时执行:

ng build --base-href ./
//--base-href后面为打包后的base路径

或者,在package.json文件的scripts中添加命令:

"build":"ng build --base-href ./"
//--base-href后面为打包后的base路径

打包的时候,执行npm run build 即可

?把指定的dist文件提交到gh-pages分支上

git subtree push --prefix=dist origin gh-pages

?MAC升级Nodejs和Npm到最新版

可以用nvm

?cordova 监听后台运行切换

后台运行 pause

前台运行 resume

?a href tel和sms ios失效问题

document.location.href = ‘tel:’ + mobile;

config.xml
<access launch-external="yes" origin="tel:*" />
<access launch-external="yes" origin="sms:*" />
ios添加
<allow-navigation href="sms:*" />
<allow-navigation href="tel:*" />

?js使用正则实现ReplaceAll全部替换的方法

JS 字符串有replace() 方法。但这个方法只会对匹配到的第一个字串替换

1. str.replace(/oldString/g,newString)
str.replace(/word/g,"Excel")
g 的意义是:执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)

2. str.replace(new RegExp(oldString,"gm"),newString)
str.replace(new RegExp("word","gm"),"Excel")

3. 增加String 对象原型方法 replaceAll
String.prototype.replaceAll = function(s1,s2){
return this.replace(new RegExp(s1,"gm"),s2);
}

?手机号验证正则

var myreg = /^1[34578]{1}\d{9}/;

if (!myreg.test($scope.feedback.mobile)) {
alert("请输入正确的手机号码");
}

?runSequence 不管用

安装了,也按语法写了,就是执行两句,然后不动了
[15:17:56] Using gulpfile D:\workspace\MobileLearn\gulpfile.js
[15:17:56] Starting 'default'...
[15:17:56] Starting 'sass'...

问题应该出现在 sass task上

//scss编译成css(gulp-sass)
gulp.task('sass', function(done) {
gulp.src('./www/scss/style.scss')
.pipe(plugins.sass())
.pipe(gulp.dest('./www/css/'));
});

解决:
1.把那个done去掉
2.加上done();

原因gulp是异步的,按顺序执行(用插件或者用依赖)的时候,在先执行的或者说被依赖的任务,加入一个提示,来告知什么时候它会完成:可以再完成时候返回一个 callback,或者返回一个 promisestream,不然的话系统会一直等待它完成

详读官网文档描述:http://www.gulpjs.com.cn/docs/api/

?Sublime text 中格式化Html的快捷键更改

Ctrl+Alt+F快捷键跟我的160WiFi的什么快捷键冲突了,更改如下:

[Preferences]->[Key Bindings-User]中,添加如下:

{ "keys": ["ctrl+shift+f"], "command": "reindent" }

?Could not create the Java Virtual Machine

alt text

大概原因,就是java堆内存不足以运行JVM,需要增加内存。
现在给出一个全局的java虚拟机修改内存的方法。在WIN XP,WIN 7,WIN8都可以。

解决方案:增加一个系统环境变量

变量名:_JAVA_OPTIONS

变量值:-Xmx512M

alt text

保存后,重新打开命令行工具,再执行

?Android SDK Manager国内无法更新的解决方案

1.Android SDK Manager——>Tools——>Options

HTTP Proxy Server:mirrors.neusoft.edu.cn
HTTP Proxy Port:80
选中Force https://... sources to be fetched using http://...复选框

2.访问站长工具网站(http://tool.chinaz.com/ ),选择 其他工具/超级PING ,把域名dl-ssl.google.com粘贴进去,然后勾选海外的,点击查询,会列出一些可以ping通的IP地址。
使用cmd命令行ping 对应的ip地址,修改系统的host文件,具体位置在(C:\Windows\System32\drivers\etc),在最后一行增加域名解析记录。然后重新打开Android SDK Manager,试一下。如果不行,就换一个ip,重新修改host,总有可以的

?Chrome跨域设置

在Chrome快捷方式,目标里如下设置

"your path\chrome.exe" --disable-web-security

?网页左上角小图标

<link rel="shortcut icon" href="路径/图片.ico"/> //(图片16*16)

?SublimeText3批量查找替换文件夹中多个文件包含的字符

  • 右击文件夹,Find in folder…
  • 底部出现的对话框,分别输入查找和替换的内容,点击右下角的Replace
  • 弹出Confirm提示,点击Replace后,会弹出很多改动的文件
  • File –> Save All

?iPhone 微信中mp3 文件播放不了(没遇到过,仅备份)

播放音频需在WeixinJSBridgeReady里将audio 进行load

评论