想法很蛋疼,但是因为特殊需要..... private void Form1_Load(object sender, EventArgs e)
{
//webBrowser1.Url = new Uri("about:blank");
WebClient a = new WebClient();
string b = a.DownloadString("http://www.baidu.com");
a.Dispose();
webBrowser1.Document.Write(b);
} private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
e.Cancel = true;
WebClient a = new WebClient();
string b = a.DownloadString(e.Url.OriginalString);
a.Dispose();
webBrowser1.Document.OpenNew(true);
webBrowser1.Document.Write(b);
}上面的代码就是雏形了,但是Document.Write之后,外部的文件他不会自动下载,导致很多JS都出错,CSS也没了,这可怎么办呢?
{
//webBrowser1.Url = new Uri("about:blank");
WebClient a = new WebClient();
string b = a.DownloadString("http://www.baidu.com");
a.Dispose();
webBrowser1.Document.Write(b);
} private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
e.Cancel = true;
WebClient a = new WebClient();
string b = a.DownloadString(e.Url.OriginalString);
a.Dispose();
webBrowser1.Document.OpenNew(true);
webBrowser1.Document.Write(b);
}上面的代码就是雏形了,但是Document.Write之后,外部的文件他不会自动下载,导致很多JS都出错,CSS也没了,这可怎么办呢?
即使用也要知道 HttpWebRequest WebClient 的区别 我看你这么使用WebClient 实在感到困惑
private void Form1_Load(object sender, EventArgs e)
{
//webBrowser1.Url = new Uri("about:blank");
WebClient a = new WebClient();
string b = a.DownloadString("http://www.baidu.com");
a.Dispose();
webBrowser1.Document.Write(b);
webBrowser1.Url=new Uri("http://www.baidu.com"); //加上这一句就行,这样就使网页能找到下载CSS JS的路径 不过我上一句用的是:webBrowser1.DocumentText=b
}
这样和直接Navigate好像没区别了...
http://stackoverflow.com/questions/7075683/help-identifying-issue-in-relative-to-absolute-url-regex-replacement
"但是Document.Write之后,外部的文件他不会自动下载,导致很多JS都出错,CSS也没了"
这是什么原因呢?是因为,网页有些url是相对地址,所以你得换成绝对地址才行。
比如:
<link href="./web.css" rel="stylesheet" type="text/css" />webBrowser1.Document.Write(b);
url="about:blank"情况下,CSS就无效。
但如你如果改成:
<link href="http://www.baidu.com/web.css" rel="stylesheet" type="text/css" />
这样的绝对地址CSS就正常了。
js文件也一样。所以,用正则把html字符串里有关url相对地址的内容改为绝对地址,就行了。
你好,替换之后css和img都解决了,但是JS全都出错啊,这是怎么回事?
1 js用绝对路径了下载了?
2 你的网页js里可能有document.write写入非绝对路径的标签。那就比较麻烦了。
你可以试试呈现的时候就直接webbrowser.navigate就好了呗,然后你实在是需要处理网页源代码的话,另外重新下载一下,在后台代码中慢慢处理,这样应该也行吧?
貌似是没下载,因为错误显示的是某某函数未定义,怎么JS就不会自动下载了呢?CSS都实现了..
随便哪个有JS的网站,例如www.xunlei.com
document.domain = "xunlei.com" ;这类语句,“about:blank”下肯定不行的。用:
webbrowser1.ScriptErrorsSuppressed = true; 隐去不影响网页正常运行。“某某函数未定义”没发现啊。况且“www.xunlei.com”本身全部就是完整URL.
奇怪了,我怎么不行啊...
我的代码: private void Form1_Load(object sender, EventArgs e)
{
WebClient a = new WebClient();
a.Encoding = Encoding.UTF8;
string b = a.DownloadString("http://www.xunlei.com");
a.Dispose();
webBrowser1.Document.Write(b);
}出错信息:
属性"XXXX"的值为NULL,未定义或不是Function对象
转换方法。不用string了。直接http。不能在一棵树上呆死。