Есть ли способ отключить правый щелчок для TWebBrowser в Delphi Firemonkey - PullRequest
0 голосов
/ 12 декабря 2018

Я использую TWebBrowser в своем приложении Delphi firemonkey и хочу отключить щелчок правой кнопкой мыши на странице.Есть ли способ для этого.

Ответы [ 2 ]

0 голосов
/ 23 декабря 2018

По умолчанию TWebBrowser для Firemonkey не делает это изначально с 10.3 Rio.Если вы не используете другой компонент браузера, лучше всего использовать Javascript.Если вы контролируете контент, который обслуживается, это довольно просто.См. Как отключить щелчок правой кнопкой мыши на моей веб-странице?

Если вы работаете с другим веб-сайтом, контент которого не контролируется, вы можете попробовать добавить Javascript с помощью TWebBrowser.EvaluateJavaScript ()

procedure TForm1.DisableRC;
var
  strJS: string;
begin
  strJS := 'document.addEventListener("contextmenu", function(e){ e.preventDefault();}, false);';
  webbrowser1.EvaluateJavaScript(strJS);
end;

Код работает, если вы вызываете DisableRC;Скажем, нажатием кнопки.Но если URL-адрес перезагружается или содержимое меняется, вам нужно будет вызвать его снова.

Я попытался выполнить вызов DisableRC () в событии TWebBrowser.OnDidFinishLoad, чтобы выполнить его после завершения навигации по странице, но событиев конечном итоге выстрелил тысячи раз в бесконечном цикле.Использование TThread.Queue не имеет значения.Возможно, это связано с тем, что при оценке Javascript событие снова запускается.

В результате работало размещение TTimer в форме, отключенной по умолчанию, со следующим кодом в OnTimer:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  DisableRC;
  Timer1.Enabled := false;
end;

И затем включение таймера в событии TWebBrowser.OnDidFinishLoad.

Это что-то вроде хака, но, надеюсь, полезно начать работу в своей реализации.

0 голосов
/ 14 декабря 2018

Я полагаю, что вы можете изменить этот код и перехватить сообщение WM_RBUTTONDOWN.Замените WM_LBUTTONDOWN в указанном коде на WM_RBUTTONDOWN.Я бы попробовал, но у меня установлен только C ++ Builder.

...