以前實習作的一個移動端的頁面 須要的功能有圖片上傳 點擊客戶端的返回按鈕 有提示(即與客戶端有交互) 遇到很多的坑 總結一下問題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
這個可能和不少人的實際開發有點出入 可是本身再修修改改仍是能用的