2015-07-27 5 views
0

Когда пользователь начинает вводить текст, пока элемент <input> не сфокусирован, я хотел бы, чтобы пользовательский вход попал в элемент ввода текста. Я достигаю этого, вызывая $input.select() в обработчике keydown, если вход еще не сфокусирован.Захват японского ввода в несфорированном элементе ввода в Chrome

Это работает на английском языке, но поведение ввода в Японии отличается между Chrome 44 и Firefox 39 (в OSX, я не тестировался в Windows). Моя цель - добиться поведения Firefox в Chrome.

Репро шаги

  1. Добавить японский источник входного сигнала в клавиатуре префов, а затем переключить клавиатуру хирагана
  2. Убедитесь, что вход не сосредоточены
  3. Тип еягo

Ожидаемое(работает в Firefox, но не Chrome)

значение входа "え い ご", что позволило мне тогда выбрать "英語" из выпадающего меню.

Наблюдаемые

значение входа "е い ご"

$(function() { 
 
    var $input = $('input:first'); 
 

 
    $(window).on('keydown', function(e) { 
 
     if ($input.is(':focus')) { 
 
      return; 
 
     } 
 
     $input.select(); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" />

ответ

1

Ответ: Это ошибка в хроме;

Похоже, что это связано с этой ошибкой хрома: https://code.google.com/p/chromium/issues/detail?can=2&start=0&num=100&q=ime&colspec=ID%20Pri%20M%20Stars%20ReleaseBlock%20Cr%20Status%20Owner%20Summary%20OS%20Modified&groupby=&sort=&id=551716.

Существует проект W3c draft API http://www.w3.org/TR/ime-api/, который может помочь, но, глядя на http://caniuse.com/#search=inputmethod, кажется маловероятным, что решение может быть построено какое-то время.

Смежные вопросы