以前实习作的一个移动端的页面 须要的功能有图片上传 点击客户端的返回按钮 有提示(即与客户端有交互) 遇到很多的坑 总结一下问题html
暂时遇到的坑前端
详情 看github的提问 https://github.com/fex-team/webuploader/issues/594ios
详情可看 https://github.com/fex-team/webuploader/issues/476git
文中做者有说到 这个须要和后台配合实现 由于若是在前端实现 会增长负担github
(遇到这状况 就多多拜托后台哥哥吧web
这个是我发现最大的坑 可能也不关这个插件的事 由于不用fastclick的状况 是能够正常使用的app
但在网上找了不少文章 都没有找到解决方法 最后 只能使用最蠢的方式来解决框架
正常状况 激活fastclick最直接粗暴的方式是函数
window.addEventListener('load', function() { FastClick.attach(document.body); }, false);
问题就出如今 fastclick激活的区域是整个body 那么尝试一下工具
不绑定webuploader的上传按钮 会如何呢?
https://github.com/ftlabs/fastclick
fastclick的github上有一处 是忽略激活的
但我给尝试了以后 发现并无做用
最后用最蠢的方式是 获取各个须要清除300ms的元素 而后再一一激活fastclick
(这实在是太蠢了 但目前我是想不出好方法 只能这样将就用着了
webuploader 在安卓机子上使用上传图片的时候 不能一次性选择多张图片(可能须要安卓客户端那边帮忙 暂未找到解决方法
ios 上 点击上传图片按钮 会有300ms延迟 (就算以前使用了fastclick激活整个body也会存在)
PS:其实最可怕的状况是 webuploader的git 很久没更新了 (好可怕。。
由于这个页面是嵌在APP里面打开的
有个功能是 用户输入了内容的时候 点击APP左上角的返回按钮 跳出一个提示框来提示用户是否返回
使用的工具是 webviewJavascriptBridge
附上github地址 https://github.com/marcuswestin/WebViewJavascriptBridge
写好一个function 而后客户端调用
而后与客户端交互的方式是经过修改 document.location 来告知客户端 而后客户端来进行判断 (这方法有点蠢 求大神告知更好的方法
到这里就会出现一个问题了
(弹窗用的是系统自带的alert和confirm弹窗 缘由是若是用div模拟的弹窗 能控制的范围只有在页面部位
例如 div的模拟弹窗 后面再用一个遮罩层 阻挡用户的其余操做 能阻挡的只有页面范围内
但头顶的原生app按钮 并不能阻挡 无奈使用系统的alert弹窗)
例如
解决方法 (去除移动端alert confirm的网址(url))http://blog.5ibc.net/p/21287.html
好了 网址不显示了 可是! 我用的返回框是confirm弹窗啊!
有肯定 和 取消 两个按钮 而后根据用户点击哪一个做出操做啊!
可是这个方法的弹窗 是用iframe 点击完以后就消失! 根本不能判断
因此 我又本身修改了一下confirm的写法
红色为本身添加
由于这个重写的confirm是在一个框架里面的 反应后就马上取消
因此不能经过它来判断
须要在里面添加判断
var wConfirm = window.confirm; window.confirm = function (message,trueFn,flaseFn) { try { var iframe = document.createElement("IFRAME"); iframe.style.display = "none"; iframe.setAttribute("src", 'data:text/plain,'); document.documentElement.appendChild(iframe); var alertFrame = window.frames[0]; var iwindow = alertFrame.window; if (iwindow == undefined) { iwindow = alertFrame.contentWindow; } var result = iwindow.confirm(message); if(result){ trueFn(); } else{ flaseFn(); } iframe.parentNode.removeChild(iframe); } catch (exc) { return wConfirm(message); } }
项目中遇到
例如 作个整屏的页面(就是高度是整个手机屏幕 没有滚动的)
底部有一系列的工具栏(通常的作法是用绝对定位固定到底部)
若是这时候 页面有input输入框 在部分手机上 软键盘弹出来后
固定到底部的元素会忽然冒上来
从网上随便找的两张图片
形成的缘由 我猜测是 软键盘弹出来后 页面的高度就瞬间被减去了软键盘的高度 致使以body定位的元素 出现差错
解决方法!!!!
进入页面以后 设置body的高度为整个手机高度
那么弹出软键盘后 也不会被减去高度了
策划要求弄个能够上下滑动的选择框
例如这样
单纯select确定是知足不了的 要临时本身写一个?可是又太难写不出来?
推荐一个 https://github.com/tianxiangbing/mobile-select-area
这个可能和不少人的实际开发有点出入 可是本身再修修改改仍是能用的