【问题标题】:iOS 10 upgrade causing keydown event errors with bluetooth scanneriOS 10 升级导致蓝牙扫描仪出现 keydown 事件错误
【发布时间】:2016-10-12 16:59:15
【问题描述】:

我们的商店有一个用于其 Web 应用程序的扫描仪设备,我们使用 jQuery keydown 事件处理设备的输入。除了现在所有较旧的 iPhone(4、5、6)似乎在升级时处理 keydown 事件时,这一直运行良好。我注意到的是 + 号,然后几乎同时触发了 enter 键,但大多数浏览器都正确处理了这个......

当用户按下 ENTER 键或 Scanner 按下 + 键时触发处理,即:

e.which = 13 || e.which = 187

当我单步执行 SAFARI 调试器时,jQuery 选择器的值为空。 When the val() of the selector has the actual scanned UPC barcode the iPhone passes the keydown events and the hotkey iOS keyboard is triggered.由于我们已经设置了 focusout 以触发处理,因此用户可以在他/她的 iPhone 上点击完成并将焦点放回选择器并扫描下一个项目。

这几乎不是一个可行的解决方案,因为我们的用户需要能够在他们的 iPhone 上连续扫描。有什么建议吗?

这是一个sn-p的代码:

$("input[name='SCAN']").on("keydown",function(e) {
         var processRegex = /^([0-9]{7,14}\+?)$/;
        //on SCAN (last character is a '+/=') field - reload detail section
         if (e.which == 13 || e.which == 187){
                scan_val = $.trim($("[name='SCAN']").val());
                if(processRegex.test(scan_val)){               
                  Handle_Scan(scan_val); //ajax processing function         
                }
                else
                    $("[name='SCAN']").val('').focus();

            return false;
        }

            return true;
    }); 

【问题讨论】:

    标签: jquery ios iphone bluetooth event-handling


    【解决方案1】:

    就好像 DOM 元素的值通过了 regX 但 keydown eventListener 过早地将值传回,就好像它没有赶上最后一个键捕获,可能引用了错误的内存地址。在 iOS 10 升级之前,这不是问题!我想知道这个 javascript 引擎与以前的版本有何不同?

    我必须用setTimeout(function(){ //handle_scan},250); 包装整个处理逻辑,以允许事件处理程序完成捕获最后一个keydown 事件并将控制权交还给DOM,以便调用者可以执行该函数。

    显然这不应该发生。所以让我感到困惑的是,似乎 javascript 引擎要么太快,要么事件侦听器太慢。

    我认为这可能与使用keydown 而不是keyup 有关,因为您可以通过按住键来连续触发事件处理程序,因为扫描仪会在几毫秒内执行此操作,但不管哪个我使用的处理程序。我选择了keydown,认为这样可以更快地将控制权交还给调用者,希望不需要解决方法。

    也许 javascript 引擎在事件侦听器轮询下一个硬件中断时读取该值?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-16
      • 1970-01-01
      • 2015-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多