公司APP使用cordova框架進行開發,在一些功能升級后, 掃碼突然報錯:scan is already in progress。
項目之前使用沒有發現這個問題,百度了一翻發現這類問題較少,仔細想了想不應該是cordova本身的問題。應該是本次系統升級造成的,極有可能是同時調用多次才會有這樣的提示。頁面元素是JS動態生成,重點:頁面上的“掃描條碼”按鈕,是采用$this.delegate('.lr-btn-outlined', 'tap'這類動態綁定方法,將點擊事件動態綁定上去的。
研究一翻終於找到了症結所在,原來是動態生成這個button的時候給了一個固定的ID,造成點擊一次可能會有多個按鈕響應,所以在這里每次動態生成button的的時候給一個不同的ID,問題就解決了。
如下:ID命名使用_item.field + _index,即可生成不同的ID。
問題完美解決!
case 'scanbutton': _compontHtml = '<div class="lr-edit-grid-row" ><label>' + _item.name + '</label><button type="button" class="lr-btn-outlined lr-btn-success" id="' + _item.field + _index + '">掃描' + _item.name + '</button ></div>'; $html.append(_compontHtml);