Где установлен OnInputEnteredDisposition?

В документе Chrome и документе Mozilla ясно указано, что такое OnInputEnteredDisposition при написании обратного вызова для прослушивателя событий omnibox.onInputEntered. У последнего даже есть пример, как его обрабатывать - но где он установлен?

Что я имею в виду под «где оно установлено»:

Передаётся прослушиватель для omnibox.onInputEntered:

  • выбор пользователя

  • omnibox.OnInputEnteredDisposition: используйте это, чтобы определить, открывать ли новую страницу на текущей вкладке, на новом переднем плане. или на новой фоновой вкладке.

source: MDN, omnibox.onInputEntered

На странице MDN omnibox.OnInputEnteredDisposition указано только, что

Он передается в прослушиватель событий omnibox.onInputEntered вместе с самим выбором.

Причина, по которой я смущен, заключается в том, что ни один из методов расширения, которые я видел до сих пор, не может установить omnibox.OnInputEnteredDisposition — они могут только слушать его. В официальном репозитории chrome-extensions-samples я выполнил поиск, но это единственные варианты использования, которые я смог найти:

  1. В omnibox/simple-example, но всякий раз, когда я его тестировал, он всегда был установлен на currentTab (по крайней мере, я не мог найти способ изменить это)

  2. Остальные 3 места в архивных WebView примерах, где он на самом деле установлен с использованием атрибута windowOpenDisposition, но этот API устарел с 2020 года. Там написано, что «он будет поддерживаться для корпоративных и образовательных клиентов ChromeOS как минимум до января 2025 года», так что, я думаю, это только для обратной совместимости?


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

Я предполагаю, что это происходит, когда Chrome отображает существующую вкладку в предложениях, поэтому ее выбор переключается на вкладку.

woxxom 26.08.2024 21:25

Я заметил, что вы обновили вопрос, поэтому мой ответ обновился. Пожалуйста, проверьте.

Kendrick Li 28.08.2024 05:16
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

omnibox.OnInputEnteredDisposition просто помогает вам прослушать 3 сценария: открыть выделение на текущей вкладке, новой вкладке переднего плана или новой вкладке фона. Вы можете выбрать что-то сделать для каждого сценария, как в примере с MDN:

switch (disposition) {
    case "currentTab":
      browser.tabs.update({ url });
      break;
    case "newForegroundTab":
      browser.tabs.create({ url });
      break;
    case "newBackgroundTab":
      browser.tabs.create({ url, active: false });
      break;   }

Если вы отметите chrome.omnibox.OnInputEnteredDisposition в инструментах разработчика: Боюсь, вы не сможете его изменить, да и не нужно его менять.

В omnibox/simple-example, но всякий раз, когда я его тестировал, для него всегда было установлено значение currentTab (по крайней мере, я не мог найти способ его изменить)

В этой демонстрации щелкните левой кнопкой мыши -> currentTab, щелкните средней кнопкой мыши -> newBackgroundTab, Alt+Enter -> newForegroundTab (это соответствует дизайну браузера). Это помогает расширению справляться со всеми этими тремя возможными действиями, которые могут предпринять пользователи. Вы даже можете принудительно открыть вкладку на переднем плане независимо от того, как пользователь решит открыть вкладку. Хотя я не вижу смысла их менять.

О, так его ценность зависит от взаимодействия с пользователем? Спасибо! (Я не мог понять, как использовать среднюю кнопку мыши и левую кнопку мыши в омнибоксе, но ALT+ENTER сработало, как и ожидалось.)

toraritte 28.08.2024 13:17

Другие вопросы по теме