2010-01-27 76 views
3

假设我得到某个页面的源代码(例如http://example.com)。我现在想写这个源代码的web浏览器,使用类似:在WebBrowser中欺骗URL

myWebBrowser.Navigate("about:blank"); 
myWebBrowser.Document.Write(sourceCode); 

现在,让我们假装在Example.com的主页上,有一个相对URL,例如:

<img src="/logo.gif" /> 

WebBrowser将尝试从about:blank/logo.gif加载它。我想告诉WebBrowser“当前地址”是http://example.com,因此它使用http://example.com/logo.gif代替。

直接写入WebBrowser的Url属性将导致Navigate(),它将摆脱我写的任何文本。

我正在寻找一种可用于其他元素的解决方案,例如样式表,JavaScript(例如<script language="text/javascript" src="myscript.js">),链接等,而不仅仅是图像。

这可能吗?

回答

5

你可以尝试,并在头部插入一个<base>元素: http://www.w3.org/TR/html4/struct/links.html#edef-BASE

如何插入标签取决于您所使用的语言,但你的目标应该是在<head>打完直接获取基本标签所产生的来源如下:

<head><base href="http://example.com"/> 

当然,如果已经有文档中的<base>元素,你应该删除。

3

如果您尝试更改地址栏网址,浏览器将浏览该网址,并且您无能为力。

但是,在您的HTML中,可能会使用<BASE> tag来为您的资源“伪造”源URL。

我认为这是最接近你可以去。