Форум: "Сети";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];
Внизvar-параметры в событии OnBeforeNavigate2 TWebBrowser a Найти похожие ветки
← →
x-AL (2004-04-21 21:43) [0]Пишу так:
WebBrowser.Navigate("http://origin.url/");
При этом обработчик события такой:
procedure TForm1.WebBrowserBeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
begin
URL := "http://other.url/";
end;
Однако браузер всё равно пытается перейти к origin.url,
хотя в справке явно сказано, что можно изменить значение URL, чтоб перенаправить браузер по другому адресу.
Или я что-то делаю не так ?..
← →
Piter © (2004-04-21 22:36) [1]хм, мне тоже интересно... сказано четко
"URL is the Uniform Resource Locator of the resource the Web browser is looking up. Change this value to redirect the navigation operation to a different resource"
← →
nikkie © (2004-04-21 23:00) [2]это вы неправильную справку читаете
...
URL
[in] URL to be navigated to.
...
Cancel
[out] Address of a cancel flag. An application can set this parameter to TRUE to cancel the navigation operation, or to FALSE to allow it to proceed.
← →
Piter © (2004-04-21 23:34) [3]Не понял... приведи лучше приме перенаправления в событии OnBeforeNavigate2.
Ты хочешь сказать, что в нем нельзя перенаправлять? Но ведь сказано
"URL is the Uniform Resource Locator of the resource the Web browser is looking up. Change this value to redirect the navigation operation to a different resource"
← →
easy © (2004-04-22 09:55) [4]
var Test : boolean;
procedure TForm1.Button1Click(Sender: TObject);
begin
Test := false;
WebBrowser1.Navigate("http://www.microsoft.com");
end;
procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
begin
if not Test then
begin
Test := True;
Cancel := True;
WebBrowser1.Stop;
WebBrowser1.Navigate( "http://www.borland.com");
end;
end;
← →
Piter © (2004-04-22 17:34) [5]Согласен, возможна и такая трактовка.
А зачем тогда URL по ссылке передается?
← →
SergP © (2004-04-22 20:18) [6]
> easy © (22.04.04 09:55) [4]
> WebBrowser1.Stop;
> WebBrowser1.Navigate( "http://www.borland.com");
А если на страничке несколько фреймов, то получится что если мы хотим заменить один из фреймов, то новая фигня загрузится не в виде фрейма....
← →
x-AL (2004-04-22 20:26) [7]Пути МелкоМягких неисповедимы... :)
Да еще самодеятельность Бормана...
← →
Piter © (2004-04-23 23:08) [8]Никто не знает?
>А зачем тогда URL по ссылке передается?
← →
SergP © (2004-04-24 00:16) [9]Piter © (23.04.04 23:08)
А зачем тогда URL по ссылке передается?
Ну для того чтобы ты мог его юзать хотя бы для read
Например очень удобно вырубать ненужные фреймы...
типа if URL="..." then cancel:=true;
x-AL (21.04.04 21:43)
Юзай TEmbeddedWB. Там есть возможность изменять УРЛ, только не в OnBeforeNavigate2, а там для этого есть другой event. Да и на ихнем сайте есть примеры как его юзать...
← →
Piter © (2004-04-24 00:32) [10]SergP (24.04.04 00:16) [9]
>А зачем тогда URL по ссылке передается?
Ну для того чтобы ты мог его юзать хотя бы для read
Чего? Ты о чем? Я говорю - почему передается по ссылке, а не по значения параметр URL?
SergP (24.04.04 00:16) [9]
Юзай TEmbeddedWB. Там есть возможность изменять УРЛ, только не в OnBeforeNavigate2, а там для этого есть другой event
ага, можно и ручками. Реализовать IDocHostUIHandler... в общем, http://www.compress.ru/Article.asp?id=1127
← →
x-AL (2004-04-24 00:36) [11]А где можно взять TEmbeddedWB ?
← →
SergP © (2004-04-24 07:02) [12]>Чего? Ты о чем? Я говорю - почему передается по ссылке, а не по значения параметр URL?
М-да. Я как-то не въехал в вопрос и хмурню написал...
Кстати до сих пор не могу в него въехать...
>А где можно взять TEmbeddedWB ?
http://euromind.com/iedelphi/
← →
Piter © (2004-04-24 10:47) [13]SergP (24.04.04 07:02) [12]
Видишь в обработчике стоит "var Cancel" - значит, этот параметр передается по ссылке, а не по значению. Ты знаешь разницу между этими понятиями?
Посмотри в справке, раздел "procedure calls", там выберешь "Calling procedures and functions", ткнешь на "Topic Groups", там увидишь "Value and variable parameters"
← →
Piter © (2004-04-24 10:49) [14]Почему Cancel по ссылку передается - очевидно. А вот зачем URL? Если его изменение ни к чемун е ведет...
← →
SergP © (2004-04-24 13:38) [15]Piter © (24.04.04 10:47) [13]
Блин. Понял.. Просто почемуто слово "Ссылка" у меня первоначально асоциировалась с URL...
:-)))
Так иногда бывает...
← →
nikkie © (2004-04-25 16:09) [16]>Piter
>Но ведь сказано
в справке по TWebBrowser.OnBeforeNavigate2 написана лажа. почему - не знаю, спроси у Borland-а. я приводил цитату из MSDN из справки по DWebBrowserEvents2::BeforeNavigate2.
>А зачем тогда URL по ссылке передается?
наверное, такова специфика COM Automation. параметры передаются универсально как VARIANT, а определить какие параметры можно изменять - либо по документации, либо в run-time по наличию флага VT_BYREF в поле vt (в дельфийском синтаксисе TVarData(URL).VType).
если посмотреть в C++-декларации, то URL, Flags объявлены как VARIANT *. дельфийский import type library логично объявляет их как var OleVariant.
← →
213123 (2004-05-04 16:12) [17]Урл может передаваться и для того, чтобы выборочно отменять загрузку....
Только если имзенение ни к чему не ведет, почему он передается как var?
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.037 c