@Romanson

Почему выкидывает с приложения при выполнении OnBeforePopup на TChromium в делфи?

Здравствуйте Господа! Еще один вопрос:
Пытаюсь добиться предотвращения перехода по ссылкам с созданием внешних окон в браузере, и реализовывать открывая их в текущей странице таким кодом:

procedure TForm6.ChromeTabs1ButtonAddClick(Sender: TObject;
var Handled: Boolean);
var
T: TTabSheet;
web: TChromium;

begin
PageControl1.ActivePageIndex := ChromeTabs1.ActiveTabIndex;

T := TTabSheet.Create(self);
T.PageControl := PageControl1;
T.Caption := 'Общая';
PageControl1.ActivePage := T;
// t.TabVisible:=false;

web := TChromium.Create(T);
web := TChromium.Create(self);
TWinControl(web).Name := 'NewWebBrowser' + inttostr(random(999666111));
TWinControl(web).Parent := T;

web.Align := alClient;

web.Load('ya.ru');
web.OnBeforePopup := mybeforepopup;
end;

procedure Tform6.myBeforePopup(Sender: TObject; const browser: ICefBrowser;
const frame: ICefFrame; const targetUrl, targetFrameName: ustring;
targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean;

var popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo;
var client: ICefClient; var settings: TCefBrowserSettings;
var noJavascriptAccess: Boolean; out Result: Boolean);
var
web: TChromium;
begin
// prevent popup

web.Load(targetUrl);
Result := True;
end;


при выполнении этого кода вылетает с приложения с ошибкой 7627c48eec324842aa8a86c297f5eba2.png

Грешу на web.Load(targetUrl); - но как по другому не догоняю
  • Вопрос задан
  • 288 просмотров
Решения вопроса 1
@kalapanga
У Вас похоже элементарная путаница в переменных. Ваш создаваемый браузер web: TChromium; - это локальная переменная процедуры TForm6.ChromeTabs1ButtonAddClick, вне её не известная. Внутри Tform6.myBeforePopup объявляется ещё какая-то переменная web, которая к предыдущей отношения не имеет, да ещё и используется, как уже написали, без Create. Разберитесь в этом и всё заработает.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
streetflush
@streetflush
Вы не создаете web в myBeforePopup
Ответ написан
@Romanson Автор вопроса
Выяснил при тестах что в загруженной странице после динамического создания компонента Chromium переход по сайту яндекса во вкладки Маркет, Новости и т.д. доступен. При поиске других сатов и перехода по сылкам поиска выдает эту ошибку.

Проверял тоже самое без динамического создания а на прямую через компонент на форме Chromium1 все работает ошибок нет
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы