1. 程式人生 > >移動開發中一些bug及解決方案

移動開發中一些bug及解決方案

網頁開發要面對各種各樣的瀏覽器,讓人很頭疼,而移動開發中,你不但要面對瀏覽器,還要面對各種版本的手機,ios好一點,而安卓就五花八門了,你可能在開發中也被它們折磨過,或者正在被它們折磨,我在這裡說幾個我在開發中遇到的比較難纏問題,和解決方案,給其他朋友提個醒,因為一旦碰到了這些bug,雖然解決方法不難,但是你可能要花上幾個小時,幾天,甚至更長時間才能解決它們,遇到這些bug的話要注意,以後發現其他bug也會繼續補充,也希望你也可以把你遇到的bug或者解決方案回覆給我,我會一起補充到文章裡,幫助其他人一起解決問題

bug一:

現象:

android4.0以上一部分手機的webview中,當canvas小於螢幕大小時,繪圖時會出現重影,就是說一個圖只繪製了一遍,卻出現了兩個

解決方案:

canvas外層的div需要設定屬性style="overflow:visible;-webkit-transform: translateZ(0);

bug二:

現象:

Galaxy S4的webview中的canvas繪圖有嚴重bug,無論是fillRect還是drawImage,會把0,0開始的1個畫素,繪製到整個canvas,導致畫面無法顯示。注:此現象只出現在首次頁面載入,當第二次進入頁面後沒有此問題。

解決方案:

galaxy s4的webview顯示canvas的時候,有兩個條件必須滿足:
1,canvas外層的div需要設定屬性style="overflow:visible;-webkit-transform: translateZ(0);" 

2,頁面上不得含有img標籤

bug三:

現象:

android4.x中一部分手機,在改變canvas大小的時候有時會卡死。大家可能都知道,重新設定canvas的大小可以實現canvas的完全重新整理,但是也會導致一部分4.x手機卡死。

解決方案:

用clearRect重新整理canvas。

bug四:

現象:

WebView頁面引入iScroll框架後,會導致一部分android4.x的click事件發生兩次。這個其實是框架的bug,但是很多人在用,就在上週我還在群裡碰到一個朋友問到了這個問題。

解決方案:

遇到的朋友不用問google或百度了,因為官方沒有提供解決辦法,所以目前只能棄用iScroll

備註:感謝網友[Meathill]提供資訊,

可以設定click: false,不然iScroll會用代理的方式觸發一次click”,遇到問題的朋友可以試一下。


bug五:

現象:

使用HTML5的canvas進行繪圖,android4.0以上,有一大部分手機會經常出現clearRect無效的bug。

解決方案:

方案1:
canvas.width=canvas.width
來代替
canvas.clearRect().getContext("2d").clearRect()
但是,這樣做的後果,就是另有一小部分(比如國內的三星NOTE2和S4等)會出現瀏覽器卡死的情況。

方案2:

就是用不透明背景,對於每偵重繪的遊戲或應用來說,不透明背景就不會存在清屏的問題,當然這其實是選擇了繞行,對於需要將canvas背景設定成透明的情況還是沒有解決。

方案3:

canvas.clearRect(0, 0, w, h);
canvas.style.visibility = ‘hidden’; // Force a change in DOM
canvas.offsetHeight; // Cause a repaint to take play
canvas.style.visibility = ‘inherit’; // Make visible again

這個會導致延時。

方案4:

canvas.clearRect(0, 0, w, h);
canvas.style.display = ‘none’;// Detach from DOM
canvas.offsetHeight; // Force the detach
canvas.style.display = ‘inherit’; // Reattach to DOM

這個會產生鋸齒,但是我認為是目前最好的方案了。

方案3和方案4由網友 Codezz 提供,解決方案的出處為。


bug六:

現象:

android手機,微信6.1,qq瀏覽器x5核心,這三個條件存在的前提下,在彈出輸入框的時候,整個canvas畫面會被壓扁。希望微信以後升級能解決這個問題吧。

解決方案:

目前還沒有找到完美的解決方案,如果有人知道,請一定告訴我。

感覺現在最好的辦法就是將canvas頁面和有輸入框的頁面分離開。

還有一種方法只能解決一部分手機的問題,就是在canvas的上一層的div中,設定style.width和style.height分別等於canvas的style.width和style.height,但是經過測試,這樣只能解決一部分手機。


另外,下面是Android4.0中使用iframe時的限制或者是bug,

iframe中的bug我只遇到了一部分,然後稍微查了一下,發現原來還有很多,我就全列出來了

1,<a>標籤中即使設定display:block,也會變成display:inline。
2,屬性為position:fixed的元素無法點選。(另外Android的Chrome的話,如果iframe中有元素的position屬性被指定為fixed或者absolute時將無法使用下拉條。)
3,document.body.scrollTop無法獲取。
4,-webkit-tap-hightlight-color指定無效。
5,Anchor link無效
6,頁面最下面的<a>超連結可點選,但是點選無效,頁面不會跳轉。
7,z-index重疊的元素,pointer-events指定無效。

--------------------

以下部分開始,由網友提供,感謝其他網友一起分享

--------------------

一,

完美小盒子]:使用絕對定位的輸入框,有時會無法輸入東西,涉及IOS和Android所有版本的預設瀏覽器。 暫時沒有完美的解決辦法, 只有個很笨的辦法,就是在onload里加上 input.value = " "; 這樣改變輸入框的值後,就可以正常輸入了。


相關推薦

移動開發一些bug解決方案

網頁開發要面對各種各樣的瀏覽器,讓人很頭疼,而移動開發中,你不但要面對瀏覽器,還要面對各種版本的手機,ios好一點,而安卓就五花八門了,你可能在開發中也被它們折磨過,或者正在被它們折磨,我在這裡說幾個我在開發中遇到的比較難纏問題,和解決方案,給其他朋友提個醒,因為一旦碰到了這

Android開發常見問題解決方案

1、介面對接中的關鍵字解析 在日常介面對接中,經常會出現介面返回的資料節點是java中的關鍵字(類似介面返回 extends 節點),會導致解析異常。針對這種情況有以下的解決方案:1、fastjson 解析的情況下可以使用以下註解如:public class DataBean

APP開發的問題解決方案(持續更新

一,使自己建立的Activity無TitleBar:    情況:    當自己建立的Activity繼承AppCompatActivity時,在setContentView方法之前呼叫    requestWindowFeature(Window.FEATURE_NO_TI

Winform開發的困境解決方案

在我們開發各種應用的時候,都會碰到很多不同的問題,這些問題涉及架構、模組組合、介面處理、共同部分抽象等方面,我們這裡以Winform開發為例,從系統模組化、介面元件選擇、業務模組場景劃分、介面基類和輔助類處理、程式碼生成工具輔助開發等方面介紹在實際專案開發過程中碰到的困境和相關的解決方案,以便分析其中是如何逐

開發遇到的bug解決方案(一)

該異常表示不能新增視窗,通常是所要依附的view已經不存在導致的。[解決方案]:Dialog&AlertDialog,WindowManager不能正確使用時,經常會報出該異常,原因比較多,幾個常見的場景如下:1.上一個頁面沒有destroy的時候,之前的Activity已經接收到了廣播。如果此時之前

android開發遇到的一些問題解決方案

相信大家在打包也遇到過這樣的問題把,打包失敗。以下是昨天我昨天開發時遇到的一些問題,經過查詢資料,順利解決。不過多贅述,問題如下: 問題一:Messages報錯如下: Errors while building APK. You can find the e

Prometheus配置過程出現的bug解決方案

一、簡介 Node exporter,Promenade和Alertmanager在安裝配置後,在除錯Prometheus執行中出現了不少bug,針對這些bug進行了解決。本部落格主要蒐集總結這些bug和解決方案,進行記錄。 Prometheus執行命令參考如下: docker ru

網頁製作遇到的一些問題解決方案

1、重複定義:在css中前面定義了<a>標籤的字型顏色之後,如果後面要修改某個<a>標籤的字型顏色,css中該怎麼寫?(未解答) 2、自己在做的頁面中,對於頁碼的實現,需要有跳轉的頁碼框,當瀏覽器顯示的頁面中頁碼框不能輸入時,該怎麼做:提升父級層級,

python遇到的一些問題解決方案

不可避免經常會碰到一些小問題,但會耽誤自己很長時間,希望對大家有所幫助。 1. SyntaxError: Non-UTF-8 code starting with '\xd7' in file 0807_multiprocessing例項.py on line 7,

程式設計遇到的一些問題解決方案

(1)在程式中執行SQL語句,但資料庫中的表沒有得到程式輸出的資料 答:是因為事物沒有提交,要設定setAutoCommit 或者執行完後con.commit() (2)log4j:WARN No appenders could be found for

關於load runner錄製指令碼遇到的一些問題解決方案

最近在學習使用load runner,使用的是load runner8.1,ie 7 。在錄製指令碼時遇到了點“錄製”之後,IE開啟之後又自動關閉的情況。上網收集了一下解決方法,有如下幾種說法: 1. IE--internet屬性--高階--把"啟用第三方瀏覽器擴充套件"前面

Java學習,所遇到的一些問題解決方案

1、在使用BigDecimal資料型別做除法運算的時候,彈出如下異常: public static void main(String[] args){ BigDecimal a =

ionic android 編譯打包過程遇到的一些問題解決方案

操作環境 ionic framework 3.9.2、 cordova (Cordova CLI) 8.1.2、ionic (Io

第三篇:開發的問題解決方式

.text cat 彈窗 ret 如何 配置 中項 新的 顯示 1.texarea 如何保存空格、換行? 答:var content1= $("#content").val(); var content =content1.replace(/\n|\r\n/g,"&

近期遇到的一些問題解決方案or待解決方案

installer mx2 解決方法 style 業務 spa bat log 內存 最近沒有接觸太多新的內容遇到幾個小問題解決方法 1.Jmeter指令行跑的時候內存不足 修改jmeter.bat: set HEAP=-Xms256m -Xmx256m set NE

ios系統web(微信公眾號)開發遇到的問題解決方案

編輯 doc pretty ram body abs 系統 stc 大神 1.1. 頁面滾動不流暢(2017-09-25) 現象: 網頁豎向滾動或橫向滾動不流暢。 解決方案: 為滾動元素添加css樣式: -webkit-overflow-scrolling: tou

今日筆記(高階控制元件&介面卡&我遇到的一些bug解決辦法)

1.高階控制元件與低階空間的區別 是否使用了介面卡 2.今天所學習的三個高階控制元件 AutoCompleteTextView(自動提示文字框 單次) MultiAutoCompleteTextView(自動提示文字框 多次) Spinner(下

java遇到的一些問題解決方案(持續更新)

問題1:  錯誤:編碼GBK的不可對映字元 解決辦法:(修改編碼) 輸入javac  -encoding utf-8  檔名.java  2、問題public static void main(String[] args)解釋 這裡要

8u111-jdk-alpine在java開發的NullPointerException錯誤解決方案

問題描述 在部署一個驗證碼服務的容器服務時遇到了一個空指標錯誤,錯誤程式碼為: java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion(FontConfiguration.jav

Android匯入三方SDK時遇到的一些異常解決方案

在AndroidStudio中匯入三方SDK時,按照整合文件一步一步來,整合之後開始執行,可能會遇到一些問題,下面我就列舉一下我遇到的三個問題,希望能對大家有所幫助:  第一個:執行之後沒有反應,這時候點開Android Manitor,觀察上面出現的提示: ; 這時候可