Я создаю небольшое приложение для браузера с использованием веб-браузера Android и использую window.getSelection()
в javascript, чтобы получить характер любого текста, выбранного пользователем, и показать настраиваемое контекстное меню, основанное на типе выбора, т.е. будь то диапазон, карат, является ли это в contenteditable и т.д.
Это работает нормально, если только выбор не находится в iframe, тогда меры безопасности браузера активируют меня и не позволяют мне прослушивать то, что было выбрано с помощью window.getSelection()
. Как я могу обойти это?
В идеале мне нужен способ получить лучшую информацию о том, что было выбрано из веб-просмотра, или, если это невозможно, мне нужен способ узнать, произошел ли выбор в iframe, чтобы я мог отключить свою логику пользовательского контекстного меню и вернуться к контекстное меню Android по умолчанию.
ОБНОВЛЕНИЕ / ДАЛЬНЕЙШАЯ РАЗЪЯСНЕНИЕ 07/05/2019:
Кажется, я не был достаточно ясен в своем первоначальном описании ...
Моя цель - создать визуально и функционально пользовательское меню при выборе контента в веб-просмотре, который можно вырезать / копировать / вставить, как стандартное контекстное меню в любой части страницы / фреймах и т. Д., Например
Я осознал, что мой оригинальный подход с использованием javascript для определения типа выделения и выполнения вырезания / копирования / вставки был неправильным, поскольку он будет заблокирован из-за перекрестной безопасности источников в фреймах.
Мне нужен нативный подход на основе Android / WebView. Я обнаружил, что могу определить тип выделения в веб-просмотре, просматривая элементы в mode.getMenu()
в onActionModeStarted
. Это позволит мне отображать правильные кнопки в моем пользовательском интерфейсе меню, но я не смог вручную вызвать ту же логику, которая вызывается при нажатии кнопки вырезать / копировать / вставить. Мне показалось, что я нашел решение с помощью webView.performAccessibilityAction(AccessibilityNodeInfo.ACTION_CUT, null);
, но по какой-то причине это не сработало, поэтому я думаю, что мой вопрос действительно заключается в том, как вручную вызвать вырезание / копирование / вставку выделенного текста из веб-просмотра без использования JavaScript? или любой другой подход, который позволит мне иметь пользовательское меню выбора с большим количеством опций, основанных на том, что было выбрано, не нарушая ограничения безопасности браузера?