Итак, я работаю над редактором WYSIWYG с уже настроенной грамматикой и т. Д. Мне было поручено добавить функции копирования и вставки для кросс-программы. У меня есть код, который работает в Google Chrome в Ubuntu, Firefox в Ubuntu и Windows, но не в Chrome для Windows.
Я отследил проблему до чего-то простого. Когда команда вставки отправляется (через событие Ctrl + V), я немедленно изменяю фокус на скрытый, contenteditable, iframe и запускаю событие там. Затем я подожду, пока он всплывет, а затем обработаю разбор и вставку.
this.pasteOperation = function(event, controller) {
this._cutpastearea.getEditable().focus().trigger(event);
setTimeout(function() { controller.clipboardControl().handlePaste(); }, 1);
},
(где getEditable получает спорный раздел iframe)
Теперь, если я открою iframe и отключу установленное время ожидания, я обнаружу, что фокус был получен, но ничего не вставлено. Если я продолжу вставлять его вручную, а затем вызываю функцию, все работает.
Так почему же это не вызывает событие?
Редактировать: поднял проблему в Chromium Issues . Кажется, это проблема только iframe.