JQuery AutoComplete форсирует ответ блокировщика всплывающих окон, когда ENTER используется для выбора - PullRequest
0 голосов
/ 23 июня 2018

Я использую автозаполнение пользовательского интерфейса jquery в надстройке Office, чтобы предоставить пользователю список потенциальных ссылок для нажатия.

Когда вы выбираете автозаполнение, он использует window.open для создания новой вкладки в браузере по умолчанию.

Работает нормально, если вы печатаете, а затем НАЖМИТЕ на результирующую опцию, отображаемую при автозаполнении.

Однако, если вы нажимаете на клавиатуре вверх / вниз, чтобы выделить разные результаты, а затем нажмите ENTER, чтобы выбрать один, появится сообщение о блокировке всплывающих окон. Microsoft не допустит такого поведения в надстройке. Я полагаю, это происходит из-за того, что javascript контролирует прямой ввод данных пользователем для запуска window.open.

Я экспериментирую с блокировкой клавиши ENTER, но это похоже на плохой ход для пользователей - они нажимают и ожидают каких-то действий, и ничего не произойдет.

Полагаю, я мог бы использовать dialogAPI для создания модального ... но я не хочу блокировать доступ пользователя к документу Word (в данном случае).

Я попытался создать скрытую кнопку, на которую я нажимаю программно, но она тоже не работает (понятно). Отображается сообщение о блокировке всплывающих окон.

Есть идеи о том, как обойти это для пользы пользователей?

1 Ответ

0 голосов
/ 24 июня 2018

Я понимаю, что примеры кода необходимы всем, кто не имеет непосредственного отношения к надстройкам Office.js, чтобы иметь возможность отвечать ...

Эта проблема характерна для Windows, поскольку надстройки Office.js застряли с помощью IE11 для запуска веб-приложений Office.js (MSFT должна поддерживать пользователей Windows 7, которые не могут запускать Edge). На Mac или Word Online эта проблема не так серьезна.

Основной причиной является попытка открыть новое окно (window.open) программно, а не по клику определенного пользователя. Таким образом, если ваша надстройка работает в Windows, и у вас есть кнопка с ссылкой, этот URL откроется в браузере по умолчанию, не беспокойтесь.

Но если ваш код должен создать ссылку, то IE11 / Windows будет жаловаться, думая, что вы рассылаете спам пользователю всплывающие окна (с IE11, установленным на безопасность по умолчанию). MSFT не передаст вашу надстройку с таким поведением.

Я добавил модал (настоящий - спасибо @RickKirkham), который на лету создает нажимаемую кнопку, которую пользователь может щелкнуть. Это модальное «Пожалуйста, подтвердите ваше желание открыть этот URL».

Я повторно отправил MSFT, но не знаю, будет ли это соответствовать их стилю и требованиям к пользовательскому опыту. Я не думаю, что есть какой-то другой способ обойти эту проблему, кроме блокировки использования клавиши ВВОД на входах автозаполнения пользовательского интерфейса jquery и т.п.

Я обновлю этот ответ, как только сделаю обзор MSFT.

...