Я пытаюсь поймать «Control + Click», чтобы открыть новые окна/вкладки в клиентском приложении winfs CefSharp.Обнаружение привязки ссылки в CefSharp
Наиболее очевидный способ использует OnBeforeBrowse
на IRequestHandler
, так что я сделал что-то вроде этого (фактическая функция является более сложной, но никогда не забывайте, что):
public bool OnBeforeBrowse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, bool isRedirect)
{
if (Control.ModifierKeys.HasFlag(Keys.Control) && request.TransitionType == TransitionType.LinkClicked)
{
MainForm.OpenChildWindow(new Uri(request.Url));
return true;
}
return false;
}
Это определенно работает для «нормальной» ссылки щелчки. Но тогда, когда вы нажимаете на ссылку якорный (что делает некоторые AJAX загрузку через Javascript или любой другой), две вещи:
- Если ссылка такая же, как в настоящее время загружен один или ссылку якорь в другой URL , он действительно вызовет
OnBeforeBrowse
, и он будет работать правильно (открытие нового окна в моем случае). - Если ссылка является привязкой к одному и тому же URL-адресу, но другой якорь, то не выдается
OnBeforeBrowse
, поэтому я не могу контролировать загрузку таким образом.
Я попытался с помощью OnBeforeResourceLoad
, но TransitionType
является LinkClicked
для любого ресурса, он загружает в течение АЯКС вызова (и GET
), и я просто не могу найти что-нибудь другое в параметрах для OnBeforeResourceLoad
на самом деле щелкнул ссылку и остальная часть загруженных ресурсов.
Любые идеи о том, как я могу достичь этого?
PS: Не пытайтесь сделать это «проблемой XY», актуальная проблема (несмотря на заголовок вопроса) Я пытаюсь решить, как я уже сказал, открыть новую вкладку/окна на ctrl + click (или средний клик), поэтому, если есть какой-либо другой способ сделать это, все в порядке.