mirror of
https://github.com/salvadordf/CEF4Delphi.git
synced 2025-06-02 21:57:37 +02:00
Enable multiple tabs and popup windows in TinyBrowser2
This commit is contained in:
parent
97e967f893
commit
0206d90fb0
@ -20,8 +20,6 @@ type
|
|||||||
function GetClient : ICefClient;
|
function GetClient : ICefClient;
|
||||||
|
|
||||||
procedure Chromium_OnBeforeClose(Sender: TObject; const browser: ICefBrowser);
|
procedure Chromium_OnBeforeClose(Sender: TObject; const browser: ICefBrowser);
|
||||||
procedure Chromium_OnBeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; popup_id: Integer; const targetUrl, targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; const popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo; var client: ICefClient; var settings: TCefBrowserSettings; var extra_info: ICefDictionaryValue; var noJavascriptAccess: Boolean; var Result: Boolean);
|
|
||||||
procedure Chromium_OnOpenUrlFromTab(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; out Result: Boolean);
|
|
||||||
|
|
||||||
public
|
public
|
||||||
constructor Create;
|
constructor Create;
|
||||||
@ -112,8 +110,15 @@ begin
|
|||||||
FChromium := TChromiumCore.Create(nil);
|
FChromium := TChromiumCore.Create(nil);
|
||||||
FChromium.DefaultURL := 'https://www.google.com';
|
FChromium.DefaultURL := 'https://www.google.com';
|
||||||
FChromium.OnBeforeClose := Chromium_OnBeforeClose;
|
FChromium.OnBeforeClose := Chromium_OnBeforeClose;
|
||||||
FChromium.OnBeforePopup := Chromium_OnBeforePopup;
|
|
||||||
FChromium.OnOpenUrlFromTab := Chromium_OnOpenUrlFromTab;
|
// The MultiBrowserMode store all the browser references in TChromium.
|
||||||
|
// The first browser reference is the browser in the main form.
|
||||||
|
// When MiniBrowser allows CEF to create child popup browsers it will also
|
||||||
|
// store their reference inside TChromium and you can use all the TChromium's
|
||||||
|
// methods and properties to manipulate those browsers.
|
||||||
|
// To do that call TChromium.SelectBrowser with the browser ID that will be
|
||||||
|
// used when you call any method or property in TChromium.
|
||||||
|
FChromium.MultiBrowserMode := True;
|
||||||
|
|
||||||
InitializeWindowHandle(TempHandle);
|
InitializeWindowHandle(TempHandle);
|
||||||
FChromium.CreateBrowser(TempHandle, TempRect, 'Tiny Browser 2', nil, nil, True);
|
FChromium.CreateBrowser(TempHandle, TempRect, 'Tiny Browser 2', nil, nil, True);
|
||||||
@ -129,27 +134,9 @@ end;
|
|||||||
|
|
||||||
procedure TTinyBrowser2.Chromium_OnBeforeClose(Sender: TObject; const browser: ICefBrowser);
|
procedure TTinyBrowser2.Chromium_OnBeforeClose(Sender: TObject; const browser: ICefBrowser);
|
||||||
begin
|
begin
|
||||||
GlobalCEFApp.QuitMessageLoop;
|
// The main browser is being destroyed
|
||||||
end;
|
if (FChromium.BrowserId = 0) then
|
||||||
|
GlobalCEFApp.QuitMessageLoop;
|
||||||
procedure TTinyBrowser2.Chromium_OnBeforePopup(Sender: TObject; const browser: ICefBrowser;
|
|
||||||
const frame: ICefFrame; popup_id: Integer; const targetUrl, targetFrameName: ustring;
|
|
||||||
targetDisposition: TCefWindowOpenDisposition;
|
|
||||||
userGesture: Boolean; const popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo;
|
|
||||||
var client: ICefClient; var settings: TCefBrowserSettings; var extra_info: ICefDictionaryValue;
|
|
||||||
var noJavascriptAccess: Boolean; var Result: Boolean);
|
|
||||||
begin
|
|
||||||
// For simplicity, this demo blocks all popup windows and new tabs
|
|
||||||
Result := (targetDisposition in [CEF_WOD_NEW_FOREGROUND_TAB, CEF_WOD_NEW_BACKGROUND_TAB, CEF_WOD_NEW_POPUP, CEF_WOD_NEW_WINDOW]);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TTinyBrowser2.Chromium_OnOpenUrlFromTab(Sender: TObject;
|
|
||||||
const browser: ICefBrowser; const frame: ICefFrame;
|
|
||||||
const targetUrl: ustring; targetDisposition: TCefWindowOpenDisposition;
|
|
||||||
userGesture: Boolean; out Result: Boolean);
|
|
||||||
begin
|
|
||||||
// For simplicity, this demo blocks all popup windows and new tabs
|
|
||||||
Result := (targetDisposition in [CEF_WOD_NEW_FOREGROUND_TAB, CEF_WOD_NEW_BACKGROUND_TAB, CEF_WOD_NEW_POPUP, CEF_WOD_NEW_WINDOW]);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
@ -16,8 +16,6 @@ type
|
|||||||
function GetClient : ICefClient;
|
function GetClient : ICefClient;
|
||||||
|
|
||||||
procedure Chromium_OnBeforeClose(Sender: TObject; const browser: ICefBrowser);
|
procedure Chromium_OnBeforeClose(Sender: TObject; const browser: ICefBrowser);
|
||||||
procedure Chromium_OnBeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; popup_id: Integer; const targetUrl, targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; const popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo; var client: ICefClient; var settings: TCefBrowserSettings; var extra_info: ICefDictionaryValue; var noJavascriptAccess: Boolean; var Result: Boolean);
|
|
||||||
procedure Chromium_OnOpenUrlFromTab(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; out Result: Boolean);
|
|
||||||
|
|
||||||
public
|
public
|
||||||
constructor Create;
|
constructor Create;
|
||||||
@ -132,8 +130,15 @@ begin
|
|||||||
FChromium := TChromiumCore.Create(nil);
|
FChromium := TChromiumCore.Create(nil);
|
||||||
FChromium.DefaultURL := 'https://www.google.com';
|
FChromium.DefaultURL := 'https://www.google.com';
|
||||||
FChromium.OnBeforeClose := Chromium_OnBeforeClose;
|
FChromium.OnBeforeClose := Chromium_OnBeforeClose;
|
||||||
FChromium.OnBeforePopup := Chromium_OnBeforePopup;
|
|
||||||
FChromium.OnOpenUrlFromTab := Chromium_OnOpenUrlFromTab;
|
// The MultiBrowserMode store all the browser references in TChromium.
|
||||||
|
// The first browser reference is the browser in the main form.
|
||||||
|
// When MiniBrowser allows CEF to create child popup browsers it will also
|
||||||
|
// store their reference inside TChromium and you can use all the TChromium's
|
||||||
|
// methods and properties to manipulate those browsers.
|
||||||
|
// To do that call TChromium.SelectBrowser with the browser ID that will be
|
||||||
|
// used when you call any method or property in TChromium.
|
||||||
|
FChromium.MultiBrowserMode := True;
|
||||||
|
|
||||||
InitializeWindowHandle(TempHandle);
|
InitializeWindowHandle(TempHandle);
|
||||||
FChromium.CreateBrowser(TempHandle, TempRect, 'Tiny Browser 2', nil, nil, True);
|
FChromium.CreateBrowser(TempHandle, TempRect, 'Tiny Browser 2', nil, nil, True);
|
||||||
@ -150,28 +155,9 @@ end;
|
|||||||
procedure TTinyBrowser2.Chromium_OnBeforeClose(Sender: TObject;
|
procedure TTinyBrowser2.Chromium_OnBeforeClose(Sender: TObject;
|
||||||
const browser: ICefBrowser);
|
const browser: ICefBrowser);
|
||||||
begin
|
begin
|
||||||
GlobalCEFApp.QuitMessageLoop;
|
// The main browser is being destroyed
|
||||||
end;
|
if (FChromium.BrowserId = 0) then
|
||||||
|
GlobalCEFApp.QuitMessageLoop;
|
||||||
procedure TTinyBrowser2.Chromium_OnBeforePopup(Sender: TObject;
|
|
||||||
const browser: ICefBrowser; const frame: ICefFrame; popup_id: Integer;
|
|
||||||
const targetUrl, targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition;
|
|
||||||
userGesture: Boolean; const popupFeatures: TCefPopupFeatures;
|
|
||||||
var windowInfo: TCefWindowInfo; var client: ICefClient;
|
|
||||||
var settings: TCefBrowserSettings; var extra_info: ICefDictionaryValue;
|
|
||||||
var noJavascriptAccess: Boolean; var Result: Boolean);
|
|
||||||
begin
|
|
||||||
// For simplicity, this demo blocks all popup windows and new tabs
|
|
||||||
Result := (targetDisposition in [CEF_WOD_NEW_FOREGROUND_TAB, CEF_WOD_NEW_BACKGROUND_TAB, CEF_WOD_NEW_POPUP, CEF_WOD_NEW_WINDOW]);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TTinyBrowser2.Chromium_OnOpenUrlFromTab(Sender: TObject;
|
|
||||||
const browser: ICefBrowser; const frame: ICefFrame;
|
|
||||||
const targetUrl: ustring; targetDisposition: TCefWindowOpenDisposition;
|
|
||||||
userGesture: Boolean; out Result: Boolean);
|
|
||||||
begin
|
|
||||||
// For simplicity, this demo blocks all popup windows and new tabs
|
|
||||||
Result := (targetDisposition in [CEF_WOD_NEW_FOREGROUND_TAB, CEF_WOD_NEW_BACKGROUND_TAB, CEF_WOD_NEW_POPUP, CEF_WOD_NEW_WINDOW]);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
@ -16,8 +16,6 @@ type
|
|||||||
function GetClient : ICefClient;
|
function GetClient : ICefClient;
|
||||||
|
|
||||||
procedure Chromium_OnBeforeClose(Sender: TObject; const browser: ICefBrowser);
|
procedure Chromium_OnBeforeClose(Sender: TObject; const browser: ICefBrowser);
|
||||||
procedure Chromium_OnBeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; popup_id: Integer; const targetUrl, targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; const popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo; var client: ICefClient; var settings: TCefBrowserSettings; var extra_info: ICefDictionaryValue; var noJavascriptAccess: Boolean; var Result: Boolean);
|
|
||||||
procedure Chromium_OnOpenUrlFromTab(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; out Result: Boolean);
|
|
||||||
|
|
||||||
public
|
public
|
||||||
constructor Create;
|
constructor Create;
|
||||||
@ -112,8 +110,15 @@ begin
|
|||||||
FChromium := TChromiumCore.Create(nil);
|
FChromium := TChromiumCore.Create(nil);
|
||||||
FChromium.DefaultURL := 'https://www.google.com';
|
FChromium.DefaultURL := 'https://www.google.com';
|
||||||
FChromium.OnBeforeClose := Chromium_OnBeforeClose;
|
FChromium.OnBeforeClose := Chromium_OnBeforeClose;
|
||||||
FChromium.OnBeforePopup := Chromium_OnBeforePopup;
|
|
||||||
FChromium.OnOpenUrlFromTab := Chromium_OnOpenUrlFromTab;
|
// The MultiBrowserMode store all the browser references in TChromium.
|
||||||
|
// The first browser reference is the browser in the main form.
|
||||||
|
// When MiniBrowser allows CEF to create child popup browsers it will also
|
||||||
|
// store their reference inside TChromium and you can use all the TChromium's
|
||||||
|
// methods and properties to manipulate those browsers.
|
||||||
|
// To do that call TChromium.SelectBrowser with the browser ID that will be
|
||||||
|
// used when you call any method or property in TChromium.
|
||||||
|
FChromium.MultiBrowserMode := True;
|
||||||
|
|
||||||
InitializeWindowHandle(TempHandle);
|
InitializeWindowHandle(TempHandle);
|
||||||
FChromium.CreateBrowser(TempHandle, TempRect, 'Tiny Browser 2', nil, nil, True);
|
FChromium.CreateBrowser(TempHandle, TempRect, 'Tiny Browser 2', nil, nil, True);
|
||||||
@ -129,26 +134,9 @@ end;
|
|||||||
|
|
||||||
procedure TTinyBrowser2.Chromium_OnBeforeClose(Sender: TObject; const browser: ICefBrowser);
|
procedure TTinyBrowser2.Chromium_OnBeforeClose(Sender: TObject; const browser: ICefBrowser);
|
||||||
begin
|
begin
|
||||||
GlobalCEFApp.QuitMessageLoop;
|
// The main browser is being destroyed
|
||||||
end;
|
if (FChromium.BrowserId = 0) then
|
||||||
|
GlobalCEFApp.QuitMessageLoop;
|
||||||
procedure TTinyBrowser2.Chromium_OnBeforePopup(Sender: TObject; const browser: ICefBrowser;
|
|
||||||
const frame: ICefFrame; popup_id: Integer; const targetUrl, targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition;
|
|
||||||
userGesture: Boolean; const popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo;
|
|
||||||
var client: ICefClient; var settings: TCefBrowserSettings; var extra_info: ICefDictionaryValue;
|
|
||||||
var noJavascriptAccess: Boolean; var Result: Boolean);
|
|
||||||
begin
|
|
||||||
// For simplicity, this demo blocks all popup windows and new tabs
|
|
||||||
Result := (targetDisposition in [CEF_WOD_NEW_FOREGROUND_TAB, CEF_WOD_NEW_BACKGROUND_TAB, CEF_WOD_NEW_POPUP, CEF_WOD_NEW_WINDOW]);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TTinyBrowser2.Chromium_OnOpenUrlFromTab(Sender: TObject;
|
|
||||||
const browser: ICefBrowser; const frame: ICefFrame;
|
|
||||||
const targetUrl: ustring; targetDisposition: TCefWindowOpenDisposition;
|
|
||||||
userGesture: Boolean; out Result: Boolean);
|
|
||||||
begin
|
|
||||||
// For simplicity, this demo blocks all popup windows and new tabs
|
|
||||||
Result := (targetDisposition in [CEF_WOD_NEW_FOREGROUND_TAB, CEF_WOD_NEW_BACKGROUND_TAB, CEF_WOD_NEW_POPUP, CEF_WOD_NEW_WINDOW]);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"UpdateLazPackages" : [
|
"UpdateLazPackages" : [
|
||||||
{
|
{
|
||||||
"ForceNotify" : true,
|
"ForceNotify" : true,
|
||||||
"InternalVersion" : 708,
|
"InternalVersion" : 709,
|
||||||
"Name" : "cef4delphi_lazarus.lpk",
|
"Name" : "cef4delphi_lazarus.lpk",
|
||||||
"Version" : "133.4.5"
|
"Version" : "133.4.5"
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user