为什么WebBrowser控件在保存后不能正确显示HTML?

时间:2016-05-01 05:15:08

标签: javascript c# html

我已经阅读了很多相关的答案,但我仍然没有看到问题。我认为我的问题是我没有很好地掌握HTML和可能的javascript的基础知识。我在谈论它们是如何粘在一起运行的,而不是特定的语言语法。也许有人可以给我一个大概解释这里出了什么问题。

我正在使用简单的WebBrowser控件导航到网页。这导致一切正确显示。现在,我想在机器上本地保存HTML内容,稍后再打开它,然后在另一个WebBrowser控件中呈现它。到目前为止,这还没有奏效。页面呈现简短但没有图像和效果,然后我得到关于脚本的例外。所以我决定做一个非常简单的测试。我会从浏览器中获取HTML,然后立即将该文本读回浏览器。

成功导航到页面后,我得到HTML文本如下:

string html = myWebBrowser.DocumentText;

然后我立即将DocumentText属性设置为其原始值。

myWebBrowser.DocumentText = html;

这给了我相同的错误和效果,就像我的其他应用程序正在读取已保存的HTML一样。那么这里发生了什么?浏览器最初成功显示所有内容,但随后提取并重新加载HTML文本会破坏所有内容。我必须在这里错过一个非常明显和基本的概念。是WebBrowser控件的DocumentText属性实际上不返回原始HTML代码,而是修改后的版本?或者是设置该属性修改了什么?不是吗?感谢任何能够理解我们如何运作的人。

1 个答案:

答案 0 :(得分:0)

这是设计的。 HTML不是完全包容的文件。浏览器将解析html并从其他URL中提取资源,包括脚本,图像,样式等。如果只保存html,然后在浏览器中打开该文件,则由于它们依赖于html,因此无法找到许多资源从相对于html文件的位置加载它们。一旦文件在您的计算机上,任何与资源的相对链接都将无效,导致浏览器仅显示基本html和绝对路径引用的任何资源,而不是相对路径。