Почему элемент управления WebBrowser не отображает HTML правильно после его сохранения?

Я прочитал много связанных ответов, но я все еще не вижу проблемы. Я думаю, что моя проблема в том, что у меня нет хорошего понимания основ HTML и потенциально javascript. Я говорю о том, как они склеены и работают, а не о синтаксисе конкретного языка. Возможно, кто-то мог бы дать мне общую картину того, что происходит здесь не так.

Я использую простой элемент управления WebBrowser для перехода на веб-страницу. Это приводит к тому, что все отображается правильно. Теперь я хотел бы сохранить это содержимое HTML локально на машине и открыть его снова позже, а затем отобразить его в другом элементе управления WebBrowser. Пока это не сработало. Страница визуализируется кратко, но без изображений и эффектов, затем я получаю исключение в отношении скриптов. Поэтому я решил сделать очень простой тест. Я получал HTML из браузера, а затем немедленно читал этот текст обратно в браузер.

После успешного перехода на страницу, Я получаю текст HTML следующим образом:

string html = myWebBrowser.DocumentText;

Затем я немедленно установил свойство DocumentText в исходное значение.

myWebBrowser.DocumentText = html;

Это дает мне ту же ошибку и эффект, как если бы мое другое приложение читало сохраненный HTML. Так что же здесь происходит? Браузер сначала показывает все содержимое успешно, но затем извлечение и перезагрузка HTML-текста нарушает все это. Я, должно быть, упускаю очень очевидную и основную концепцию. Является ли это, что свойство DocumentText элемента управления WebBrowser на самом деле не возвращает исходный HTML-код, а скорее измененную версию? Или это установка, что свойство изменяет что-то? Ни то, ни другое? Спасибо всем, кто может разобраться в моем понимании того, как все это работает.

1 ответ

  1. Это по замыслу. HTML не является полностью включающим файлом. Браузер будет анализировать html и извлекать ресурсы из других url, включая скрипты,изображения, стили и т.д. Если вы сохраните только html, а затем откроете этот файл в браузере, многие ресурсы не будут найдены, так как они полагаются на загрузку html из их местоположения относительно файла html. После того, как файл находится на вашем компьютере, любая относительная ссылка на ресурс будет недействительной, в результате чего браузер будет показывать только базовый html и любые ресурсы, на которые ссылаются абсолютные пути, а не относительные пути.