我在Android中遇到了一個bug,如果您使用css定位在原生Android瀏覽器(WebKit 534.4)上定位canvas元素position:absolute; top:10px; left:100px;
重複的畫布(顯然android使用一個GPU加速)呈現給瀏覽器忽略定位。Webkit瀏覽器<535(Android本機/ ios5 safari)HTML5畫布點擊錯誤
所以,如果我有top:100px; left:100px;
位置我有我的理想位置帆布畫布,但GPU accleration畫布會忽略它,並會在左上角坐(見圖片來自我剛纔的問題
Android Native Browser duplicating HTML5 canvas (fine in chrome)
我找到了解決辦法,這是使用CSS轉換,而不是像這樣transform: translate(100px, 100px);
現在這個固定的GPU accleration畫布在同一個地方呈現的問題(所以它不出現重複的)....
但是現在我開始敲門有一個點擊錯誤。
當IM以畫布爲中心時,當窗口寬度小於設備寬度時,X位置將爲負值,當發生此情況時,畫布唯一可點擊的區域是沒有定位的情況下將顯示的內容。
這是很難解釋,但希望這個形象將使其更清晰
我認爲這是與瀏覽器本身,因爲即使一個問題,當我有這個代碼的一半警報犯規火屏幕
canvas.addEventListener('click', function(e) { alert('click'; });
我猜CSS位置上方和左側第使用e CPU移動畫布以便GPU生成一個錯誤位置,但CSS翻譯使用GPU移動畫布,以便GPU生成一個正確定位但CPU正在讀取沒有此偏移的鼠標事件..... ... AHHHHH!
編輯:在更多的設備測試後,我可以證實,這似乎是一個問題,使用的瀏覽器WebKit版本的535在大多數Android原生瀏覽器和Safari瀏覽器上出現的iOS5