是否可以在Delphi Chromium Embedded中禁用查看源选项?
我还未发现任何适合的属性/方法列表。如何在Chromium Embedded中禁用查看源选项?
6
A
回答
12
没有直接设置或事件允许隐藏Chromium弹出式菜单项。但是你至少有几个选项如何继续,例如你可以:
的查看源代码的选项是被禁止的,并拒绝采取行动
你可以决定什么样的行动1.告诉用户你会允许或拒绝OnMenuAction
事件处理程序,其中如果将True分配给Result
参数,则操作将被拒绝。已经执行查看源代码的动作,如果是这样,拒绝动作和显示信息消息下面的代码检查:自定义通过更改菜单项的标题与
type
TCefMenuId = TCefHandlerMenuId;
procedure TForm1.Chromium1MenuAction(Sender: TObject;
const browser: ICefBrowser; menuId: TCefMenuId; out Result: Boolean);
begin
if menuId = MENU_ID_VIEWSOURCE then
begin
Result := True;
ShowMessage('View page source is not allowed!');
end;
end;
2.假菜单项的东西了动作
您可以通过更改菜单项的标题并执行一些自定义操作来利用其他菜单项。下面的示例代码演示了如何更改视图源菜单项到约箱菜单项:
type
TCefMenuId = TCefHandlerMenuId;
procedure TForm1.Chromium1GetMenuLabel(Sender: TObject;
const browser: ICefBrowser; menuId: TCefMenuId; var caption: ustring;
out Result: Boolean);
begin
if menuId = MENU_ID_VIEWSOURCE then
caption := 'About my application...';
end;
procedure TForm1.Chromium1MenuAction(Sender: TObject;
const browser: ICefBrowser; menuId: TCefMenuId; out Result: Boolean);
begin
if menuId = MENU_ID_VIEWSOURCE then
begin
Result := True;
ShowMessage('About box...!');
end;
end;
3.创建你自己的自定义页面(帧)弹出菜单
您可以创建你自己的弹出式菜单,但是你需要考虑到这个菜单是相当硬编码的,所以如果你需要使用每个新版本的Delphi Chromium包装,那么你需要维护它。下面是代码如何在不查看源代码菜单项中创建的页面菜单:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, cefvcl, ceflib;
type
PCefMenuInfo = PCefHandlerMenuInfo;
type
TForm1 = class(TForm)
Chromium1: TChromium;
procedure FormCreate(Sender: TObject);
procedure Chromium1BeforeMenu(Sender: TObject; const browser: ICefBrowser;
const menuInfo: PCefMenuInfo; out Result: Boolean);
private
PageMenu: TPopupMenu;
procedure OnNavigateBackMenuItemClick(Sender: TObject);
procedure OnNavigateForwardMenuItemClick(Sender: TObject);
procedure OnPrintMenuItemClick(Sender: TObject);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.OnNavigateBackMenuItemClick(Sender: TObject);
begin
Chromium1.Browser.GoBack;
end;
procedure TForm1.OnNavigateForwardMenuItemClick(Sender: TObject);
begin
Chromium1.Browser.GoForward;
end;
procedure TForm1.OnPrintMenuItemClick(Sender: TObject);
begin
Chromium1.Browser.GetFocusedFrame.Print;
end;
procedure TForm1.Chromium1BeforeMenu(Sender: TObject;
const browser: ICefBrowser; const menuInfo: PCefMenuInfo;
out Result: Boolean);
begin
if menuInfo.typeFlags = MENUTYPE_PAGE then
begin
Result := True;
PageMenu.Items[0].Enabled := browser.CanGoBack;
PageMenu.Items[1].Enabled := browser.CanGoForward;
PageMenu.Popup(menuInfo^.x, menuInfo^.y);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
MenuItem: TMenuItem;
begin
PageMenu := TPopupMenu.Create(Self);
MenuItem := TMenuItem.Create(PageMenu);
MenuItem.Caption := 'Back';
MenuItem.OnClick := OnNavigateBackMenuItemClick;
PageMenu.Items.Add(MenuItem);
MenuItem := TMenuItem.Create(PageMenu);
MenuItem.Caption := 'Forward';
MenuItem.OnClick := OnNavigateForwardMenuItemClick;
PageMenu.Items.Add(MenuItem);
MenuItem := TMenuItem.Create(PageMenu);
MenuItem.Caption := '-';
PageMenu.Items.Add(MenuItem);
MenuItem := TMenuItem.Create(PageMenu);
MenuItem.Caption := 'Print';
MenuItem.OnClick := OnPrintMenuItemClick;
PageMenu.Items.Add(MenuItem);
Chromium1.Load('www.stackoverflow.com');
end;
end.
脚注
类型定义的所有代码样本中使用的那里,因为我注意到,一些版本Delphi Chromium的错误事件处理程序定义。
1
也许事情改变了多年,今天的直接方法存在:
uses
ceflib;
[..]
implementation
procedure TForm1.Chromium1BeforeContextMenu(Sender: TObject;
const browser: ICefBrowser; const frame: ICefFrame;
const params: ICefContextMenuParams; const model: ICefMenuModel);
begin
//model.Clear;
model.Remove(Integer(MENU_ID_VIEW_SOURCE));
end;
您可以使用model.Clear
,如果你想彻底摆脱弹出菜单。
相关问题
- 1. 如何在eclipse中为插件禁用快速查看选项?
- 2. 如何在HTA应用程序中禁用查看源
- 3. 如何在Delphi Chromium Embedded(再次)中按名称获取元素?
- 4. 如何在网站中隐藏“查看源代码”选项
- 5. Delphi Chromium Embedded - 使用F5刷新页面
- 6. 在Windows上使用Chromium查看PDF
- 7. 使用libcef_static.lib静态编译Chromium-Embedded 3项目
- 8. 在pdf查看器中禁用复制和打印选项
- 9. 如何查看RCurl选项
- 10. Delphi Chromium Embedded(vers。1)卸载资源后的内存释放
- 11. 在C#中安全使用Chromium Embedded Framework(CEF)和CefSharp吗?
- 12. 在Chromium Embedded Framework中使用打印设置3
- 13. 如何禁用查看源代码并检查元素
- 14. Delphi Chromium Embedded - 清除浏览器缓存
- 15. 如何在rails中禁用select选项?
- 16. 如何在Bash中禁用shopt选项?
- 17. 如何在CEF(Chromium Embedded Framework)中拖动图标时在鼠标光标上添加禁止标志?
- 18. android honeycomb - 如何使选项菜单项看起来被禁用?
- 19. 如何禁用调整在查看
- 20. 如何防止按钮启用或禁用查看源
- 21. 如何从url查看pdf(在android应用程序中查看选项)?
- 22. Chromium Embedded:如何扩大网站以应对更高的DPI(CEF3)
- 23. NetBeans - 如何使用netbeans打开Chromium开源项目?
- 24. 如何在sitecore项目中禁用数据源的浏览选项
- 25. 如何禁用UNSAFE_CAST选项?
- 26. 如何在Spry选项卡式面板中禁用选项卡
- 27. 为birt报告禁用查看器选项J2EE(Eclispe)
- 28. Chromium源代码
- 29. 如何禁止查看
- 30. 如何取消选中查看列表中选中的项目?
好的。非常感谢你 ! – henry60
很高兴帮助;-) – TLama
谢谢你的帮助;) – Beny