Jquery - прекратить распространение на вкладки пользовательского интерфейса jQuery и перейти по ссылке

Приносим извинения, если этот вопрос задавали раньше - я искал и не нашел ничего, что точно соответствовало бы тому, что я вижу.

Вот ситуация: я использую вкладки jQuery UI для выбора изображений на странице. Для одной из вкладок желаемый результат - перейти по ссылке для этой вкладки, открыть ее на новой вкладке браузер (я постараюсь прямо здесь использовать слово «вкладка») и игнорировать остальную часть пользовательского интерфейса. Код вкладок. По сути, я хочу, чтобы вкладки создавали визуальную вкладку для выбора, но не выполняли обычную обработку jQuery, которая происходит при нажатии на эту конкретную вкладку. Для других вкладок поведение вкладок пользовательского интерфейса по умолчанию подходит.

Я решил, что могу присоединить событие к этой вкладке и вызвать event.stopPropagation (), который предотвратит всплытие кода пользовательского интерфейса, а затем позволит ему пропустить и принять ссылку (событие щелчка для вкладок находится на ' тег '). Я настроил его так, чтобы мой код события был первым в строке, он выполнялся перед кодом пользовательского интерфейса и предотвращал запуск кода пользовательского интерфейса.

Однако, если я сделаю это, я увижу в консоли следующее сообщение:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at [link] (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).

(Примечание: ссылка ведет на интерактивную страницу в другом домене, что является основной причиной, по которой я открываю новую вкладку браузер)

Новая вкладка браузера не открывается, и я остаюсь с выбранной вкладкой с пустым содержимым ниже.

Если я сделаю "window.open" для ссылки перед stopPropagation и добавлю event.preventDefault (), я получу результат открытия страницы в новой вкладке браузера, но все равно вижу сообщение об ошибке. Из-за некоторых толстых пальцев я также заметил, что если у меня есть неопределенная функция в коде события щелчка, она также имеет желаемую реакцию.

В любом случае, есть ли что-то глупое, чего я здесь не вижу? Должен ли я просто быть доволен решением, которое дает мне результирующее поведение, но с сообщением об ошибке?

Большое спасибо!

При дальнейшем рассмотрении обработчики событий пользовательского интерфейса jQuery запускаются - вот почему я выбрал именно эту вкладку. Ошибка перекрестного происхождения имеет смысл, поскольку тег «a» указывает за пределы моего домена. Поэтому, несмотря на то, что я вызвал stopPropagation и после этого isPropagationStopped имеет значение TRUE, код пользовательского интерфейса jQuery все еще выполняется.

Jasiu 10.04.2018 20:01
Стоит ли изучать 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 называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
99
1

Ответы 1

Итак, как я и подозревал, я все сделал неправильно. Отнесите это к новичку в jQuery UI.

Пользовательский интерфейс предоставляет событие beforeActivate (), которое делает именно то, что я хочу. Внутри функции я могу проверить, имеет ли предлагаемая новая вкладка класс, который я назначаю для обозначения «переход по ссылке», выполнить вызов окна для создания новой вкладки браузера, а затем вернуть false, чтобы пользовательский интерфейс знал, что я не делаю этого. Не хочу, чтобы вкладка была активирована. В противном случае функция возвращает истину.

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