需求:如今須要一個簽名版,用戶能夠分屢次簽名字的姓和名。 屢次簽名平合成一個圖片 傳遞給後臺。html
現象:pc,安卓顯示均正確,但ios上 合成的圖片老是顯示不出來。ios
html:canvas
<div> <canvas id="single"></canvas> <img id="singleImg"> <canvas id="compose"></canvas> <img id="composeImg"> </div>
JS:使用了jSignature.js 插件跨域
var data = $('#single').jqSignature('getDataURL');//獲取單次簽名的base64 var img = document.getElementById("singleImg"); img .prop("src",data);//顯示給用戶 $('#single').jqSignature('clearCanvas'); var c = document.getElementById("compose"); var ctx = c.getContext("2d"); img.onload = function(){ ctx.drawImage(img,w,0,100,100); w+=100; var data2 = c.toDataURL(); $("#composeImg").prop("src",data2); };
查出問題所在的思路:spa
一開始並無將代碼寫在插件
img.onload 方法裏
===========================================================================
一開始上網查看有的說是跨域的問題,額。。。code
1. data2 沒有取到 alert出來是有的,base64的一大串htm
2. 既然src是有的,那就是合成時沒畫上去?blog
因而把data2的內容寫到頁面上,賦值出來,直接賦值到html的img src屬性上 哭~ 空白圖片
3. drawImage的問題? 把img 的src 寫到頁面上, 居然和2 的base64 字符串同樣, 空白~~~
4.好吧好吧,問題嘗試嘗試着就清晰了,把 img onload 的時候 打印出 img src 出來了~~~
問題的根源就是圖片尚未load 成功。