Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Twebbrowser: Вы действительно хотите покинуть эту страницу ?  [new]
TREY
Member

Откуда: с интернета
Сообщений: 1650
Иногда при серфинге в Twebbrowser вылазит это окно . Как его программно подтвердить ?
инъекция JS скрипта помогает в 99,5% случаев .. но иногда окно таки всплывает ..
после этого программа замирает , пока не нажмешь руками на кнопку .
function ExJS(var wb: TWebBrowser; jStr: string): string;
var
  Doc: IHTMLDocument2;
  HTMLWindow: IHTMLWindow2;

begin
  try
    begin
      wb.Document.QueryInterface(IHTMLDocument2, Doc);
      HTMLWindow := Doc.parentWindow;

      HTMLWindow.execScript(jStr, 'JavaScript');
      result := (wb.Document as IHTMLDocument2).body.innerHTML;
    end;
  except
    on e: Exception do
       log(0,0,'ERR','ExJS:'+e.Message);
  end;

end;

//webBrowser1DocumentComplete
ExJS(w, '  setInterval(function(){window.onbeforeunload = null;},5); ');

//webBrowser1DownloadBegin   
ExJS(w, '  setInterval(function(){window.onbeforeunload = null;},5); ');


К сообщению приложен файл. Размер - 15Kb
3 дек 18, 16:13    [21752203]     Ответить | Цитировать Сообщить модератору
 Re: Twebbrowser: Вы действительно хотите покинуть эту страницу ?  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3934
WebBrowser1.Silent := True;
3 дек 18, 16:27    [21752211]     Ответить | Цитировать Сообщить модератору
 Re: Twebbrowser: Вы действительно хотите покинуть эту страницу ?  [new]
TREY
Member

Откуда: с интернета
Сообщений: 1650
JaDi,

установлено . это не простое диалоговое окно , оно типа системное , или хз как его назвать
3 дек 18, 16:30    [21752215]     Ответить | Цитировать Сообщить модератору
 Re: Twebbrowser: Вы действительно хотите покинуть эту страницу ?  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3934
TREY,

надо возвращать null:

window.onbeforeunload = function () { 
  return null; 
}
3 дек 18, 16:53    [21752254]     Ответить | Цитировать Сообщить модератору
 Re: Twebbrowser: Вы действительно хотите покинуть эту страницу ?  [new]
TREY
Member

Откуда: с интернета
Сообщений: 1650
JaDi,

я так и делаю , пример кода под катом
3 дек 18, 16:57    [21752259]     Ответить | Цитировать Сообщить модератору
 Re: Twebbrowser: Вы действительно хотите покинуть эту страницу ?  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6127
TREY
JaDi,

я так и делаю , пример кода под катом


return null где? Ты сбрасываешь обработчик OnBeforeUnload через 5 сек. Собственно функция что вернет?
3 дек 18, 17:27    [21752286]     Ответить | Цитировать Сообщить модератору
 Re: Twebbrowser: Вы действительно хотите покинуть эту страницу ?  [new]
TREY
Member

Откуда: с интернета
Сообщений: 1650
[quote DarkMaster]
TREY
JaDi,

я так и делаю , пример кода под катом


return null где? Ты сбрасываешь обработчик OnBeforeUnload через 5 сек. Собственно функция что вернет?pfxtv vyt зачем мне выводить 'null' перед загрузкой ?
если мне нужно ничего не выводить
3 дек 18, 17:39    [21752301]     Ответить | Цитировать Сообщить модератору
 Re: Twebbrowser: Вы действительно хотите покинуть эту страницу ?  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6127
TREY,

Что-то мне кажется, что ты натыкаешься на один из подводных камней.

https://javascript.info/settimeout-setinterval

И да setInterval() не гарантирует исполнения в нужные сроки - setTimeout() лучше.
3 дек 18, 18:01    [21752327]     Ответить | Цитировать Сообщить модератору
 Re: Twebbrowser: Вы действительно хотите покинуть эту страницу ?  [new]
TREY
Member

Откуда: с интернета
Сообщений: 1650
DarkMaster,

по нормальному там одного раза достаточно .. я завернул в таймер после того как оно не всегда срабатывало , но это тоже не помогло .. по этому ищу способ просто забить на js и кликать на кнопку при появлении .. или запретить окно в принципе ..
3 дек 18, 18:15    [21752339]     Ответить | Цитировать Сообщить модератору
 Re: Twebbrowser: Вы действительно хотите покинуть эту страницу ?  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6127
TREY,

Если идти твоим путем - попробуй погасить еще OnNavigate() / OnNavigating() event`ы. Если F12 нажать и посмотреть на EventListeners - там видно, что навешено на страницу.
3 дек 18, 18:28    [21752346]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить