Фрагмент (номер привязки) в .NET 4 WebBrowser Control теряется с помощью Adobe PDF Reader и файла: // - PullRequest
2 голосов
/ 17 февраля 2011

Я создаю URI с фрагментом (он же якорь #).

UriBuilder ub = new UriBuilder("file://path/doc.pdf");
ub.Fragment = "chapterX";

URL-адрес корректно отображается в отладчике (ub -> file://path/doc.pdf#chapterX).Но когда я назначаю его элементу управления WebBrowser, часть фрагмента теряется (причину для фрагмента см. Параметр открытия PDF ).

this._myWebBrowser.Url = ub.Uri;
// Alternative this._myWebBrowser.Navigate("file://path/doc.pdf#chapterX");

Когда я проверяю this._myWebBrowser.Url, он отображает file://path/doc.pdf.this._myWebBrowser.Url.Fragment пусто - также доступно только для чтения и не может быть назначено.

Как показано ниже C.Haas, концепция работает в целом, по некоторым причинам она терпит неудачу, когда ресурс представляет собой ЛОКАЛЬНЫЙ (!) Pdf-файл.

Сводка:

  1. Работает, если протокол http
  2. Работает, если ресурс .htm / .html - даже если протокол является файлом: //
  3. Работает, если файл .pdf и протокол http (такой же, как 1).
  4. Сбой, если ссылается на локальный файл PDF, фрагмент теряется

Есть ли обходной путь для этого?


Редакции:

  1. 20110219 - Обновление благодаря C.Haas.Как показывает Крис, ОК с ".htm", но не с ".pdf" и только в том случае, если он ссылается на локальный ресурс.
  2. 20110218 - Некоторые находки благодаря Абатищеву: если я использую Navigate, это делаетне работает, но Navigate предлагает предоставить имя кадра.В этом случае всплывает внешний IE (потому что на странице элемента управления нет фрейма), а затем корректно отображается URL с фрагментом.Это не то, что я хочу, но оно показывает, что сам URL-адрес правильный, и ошибка, по-видимому, находится внутри элемента управления.

1 Ответ

1 голос
/ 18 февраля 2011

Как насчет

wb.Navigate("http://example.com#chapterX");

...