2015-08-19 3 views
1

Я пытаюсь поймать «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 или любой другой), две вещи:

  1. Если ссылка такая же, как в настоящее время загружен один или ссылку якорь в другой URL , он действительно вызовет OnBeforeBrowse, и он будет работать правильно (открытие нового окна в моем случае).
  2. Если ссылка является привязкой к одному и тому же URL-адресу, но другой якорь, то не выдается OnBeforeBrowse, поэтому я не могу контролировать загрузку таким образом.

Я попытался с помощью OnBeforeResourceLoad, но TransitionType является LinkClicked для любого ресурса, он загружает в течение АЯКС вызова (и GET), и я просто не могу найти что-нибудь другое в параметрах для OnBeforeResourceLoad на самом деле щелкнул ссылку и остальная часть загруженных ресурсов.

Любые идеи о том, как я могу достичь этого?

PS: Не пытайтесь сделать это «проблемой XY», актуальная проблема (несмотря на заголовок вопроса) Я пытаюсь решить, как я уже сказал, открыть новую вкладку/окна на ctrl + click (или средний клик), поэтому, если есть какой-либо другой способ сделать это, все в порядке.

ответ

1

Получив ответ на этот вопрос от Alex Maitland (главный вклад CefSharp), кажется, что обратный вызов для этого был добавлен в последние Cef (и CefSharp), который теперь находится на последней ветке CefSharp.

Ответ был использован OnOpenUrlFromTab на IRequestHandler (он не был доступен для версии, которую я использовал) и проверки WindowOpenDisposition.

Смежные вопросы