CHtmlView::Navigate2
От: sobolev811  
Дата: 09.02.02 09:54
Оценка:
Здравствуйте!

Я использую CHtmlView для отображения html-документов.
html-документы содержать метки и я хочу загрузить страницу примерно так:

1. Navigate2(_T("http://1.1.1.111/Unit/KA/264.htm#Автоматический выбор бумаги"));
2. Navigate2(_T("http://1.1.1.111/Unit/KA/264.htm#Редакторский планшет"));
3. Navigate2(_T("http://1.1.1.111/Unit/KA/264.htm#Дуплекс"));

Но почему-то работает правильно только строка 3
т.е. если метка содержить больше одного слова, то переходить на нее браузер отказываеться.
Интересно что присмотре страницы в IE все ссылки работают.

Сергей.
Re: CHtmlView::Navigate2
От: Alex Fedotov США  
Дата: 09.02.02 19:54
Оценка:
Здравствуйте sobolev811, Вы писали:

S>Я использую CHtmlView для отображения html-документов.

S>html-документы содержать метки и я хочу загрузить страницу примерно так:

S>1. Navigate2(_T("http://1.1.1.111/Unit/KA/264.htm#Автоматический выбор бумаги"));

S>2. Navigate2(_T("http://1.1.1.111/Unit/KA/264.htm#Редакторский планшет"));
S>3. Navigate2(_T("http://1.1.1.111/Unit/KA/264.htm#Дуплекс"));

S>Но почему-то работает правильно только строка 3

S>т.е. если метка содержить больше одного слова, то переходить на нее браузер отказываеться.
S>Интересно что присмотре страницы в IE все ссылки работают.

А URL encode не пробовал?

1. Navigate2(_T("http://1.1.1.111/Unit/KA/264.htm#Автоматический%20выбор%20бумаги"));
2. Navigate2(_T("http://1.1.1.111/Unit/KA/264.htm#Редакторский%20планшет"));
-- Alex Fedotov
Re[2]: CHtmlView::Navigate2
От: Аноним  
Дата: 11.02.02 04:12
Оценка:
Здравствуйте Alex Fedotov, Вы писали:

AF>Здравствуйте sobolev811, Вы писали:


S>>Я использую CHtmlView для отображения html-документов.

S>>html-документы содержать метки и я хочу загрузить страницу примерно так:

S>>1. Navigate2(_T("http://1.1.1.111/Unit/KA/264.htm#Автоматический выбор бумаги"));

S>>2. Navigate2(_T("http://1.1.1.111/Unit/KA/264.htm#Редакторский планшет"));
S>>3. Navigate2(_T("http://1.1.1.111/Unit/KA/264.htm#Дуплекс"));

S>>Но почему-то работает правильно только строка 3

S>>т.е. если метка содержить больше одного слова, то переходить на нее браузер отказываеться.
S>>Интересно что присмотре страницы в IE все ссылки работают.

AF>А URL encode не пробовал?


AF>1. Navigate2(_T("http://1.1.1.111/Unit/KA/264.htm#Автоматический%20выбор%20бумаги"));

AF>2. Navigate2(_T("http://1.1.1.111/Unit/KA/264.htm#Редакторский%20планшет"));

пробовал — не помогает
:crash:
Re[3]: CHtmlView::Navigate2
От: Alex Fedotov США  
Дата: 11.02.02 10:23
Оценка:
Здравствуйте Аноним, Вы писали:

S>>>1. Navigate2(_T("http://1.1.1.111/Unit/KA/264.htm#Автоматический выбор бумаги"));

S>>>2. Navigate2(_T("http://1.1.1.111/Unit/KA/264.htm#Редакторский планшет"));
S>>>3. Navigate2(_T("http://1.1.1.111/Unit/KA/264.htm#Дуплекс"));

S>>>Но почему-то работает правильно только строка 3

S>>>т.е. если метка содержить больше одного слова, то переходить на нее браузер отказываеться.
S>>>Интересно что присмотре страницы в IE все ссылки работают.

Попробуй открыть такую ссылку в новом окне и посмотри, что будет написано в адресной строке браузера.
-- Alex Fedotov
Re[4]: CHtmlView::Navigate2
От: sobolev811  
Дата: 11.02.02 11:06
Оценка:
Здравствуйте Alex Fedotov, Вы писали:

AF>Здравствуйте Аноним, Вы писали:


S>>>>1. Navigate2(_T("http://1.1.1.111/Unit/KA/264.htm#Автоматический выбор бумаги"));

S>>>>2. Navigate2(_T("http://1.1.1.111/Unit/KA/264.htm#Редакторский планшет"));
S>>>>3. Navigate2(_T("http://1.1.1.111/Unit/KA/264.htm#Дуплекс"));

S>>>>Но почему-то работает правильно только строка 3

S>>>>т.е. если метка содержить больше одного слова, то переходить на нее браузер отказываеться.
S>>>>Интересно что присмотре страницы в IE все ссылки работают.

AF>Попробуй открыть такую ссылку в новом окне и посмотри, что будет написано в адресной строке браузера.


Я уже понял в чем проблема, но не знаю как решить...
Проблема в том, что когда я передаю ссылку через IWebBrowser2::Navigate2, он ее кодирует (вставляет вместо пробела код пробела "%20") и потом ищет в документе метку в точности соответствующую закодированной строке (например, "Редакторский%20планшет"). Я поправил метки в html-файле ( "Редакторский планшет" заменил на "Редакторский%20планшет" ) и теперь Navigate работает правильно!
Но! Когда я открываю документ "http://1.1.1.111/Unit/KA/264.htm" в IE и кликаю на локальную ссылку, то он метку не кодирует и в адресной строке появляеться строка "http://1.1.1.111/Unit/KA/264.htm#Автоматический выбор бумаги".
В документе IE будет метку "Автоматический выбор бумаги", т.е так как она записана в теге <a>
А если я сразу в адресной строке IE указу URL в месте с меткой ("http://1.1.1.111/Unit/KA/264.htm#Автоматический выбор бумаги"), то после того документ загрузиться, IE обновить адресную строку и URL будет иметь кодированный вид "http://1.1.1.111/Unit/KA/264.htm#Автоматический%20выбор%20бумаги".
Теперь IE будет искать в документе метку "Автоматический%20выбор%20бумаги".
Вот так!
Как быть, господа?
Удалять пробелы из меток?
Или есть другой способ перехода на локальную метку отличный от Navigate, принимает локальную метку и не кодирует ее?

Сергей.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.