问题描述
用webBrower载入页面,包含名为w_top、w_main的两个frame
然后在w_main下又包含w_code、w_lms_content的两个framew_code用于显示目录,w_lms_content用于显示内容,问题出来了
显示内容的w_lms_content中有计时的HtmlElement "sce_timer_0",需要截获这个时间作为判断条件
但是w_lms_content的域和webBrower的域不同
代码如下,其中wb为webBrower控件名HtmlDocument w_main = wb.Document.Window.Frames["w_main"].Document;
HtmlDocument w_code = w_main.Window.Frames["w_code"].Document;
HtmlDocument w_lms_content = w_main.Window.Frames["w_lms_content"].Document;
w_lms_content得不到该载入页面的真正源码看了些资料,翻遍百度和谷歌,没找到有效解决办法看到下面代码,不理解,也不知道如果可以的话后面代码怎么写//获取frame的HTMLDocument接口HTMLDocument doc = (HTMLDocument)webBrowser1.Document.DomDocument;
object j;
for (int i = 0; i < doc.parentWindow.frames.length; i++)
{
j = i;
HTMLWindow2Class frame = doc.parentWindow.frames.item(ref j) as HTMLWindow2Class;
if (frame.name == "main")
{
MessageBox.Show(frame.document.title);
}
}
难道这个代码可以获取到载入页面的真正源码??如果能,后面代码改怎么写???
不能的话,求大牛给出详细方法,最好是代码
用webBrower载入页面,包含名为w_top、w_main的两个frame
然后在w_main下又包含w_code、w_lms_content的两个framew_code用于显示目录,w_lms_content用于显示内容,问题出来了
显示内容的w_lms_content中有计时的HtmlElement "sce_timer_0",需要截获这个时间作为判断条件
但是w_lms_content的域和webBrower的域不同
代码如下,其中wb为webBrower控件名HtmlDocument w_main = wb.Document.Window.Frames["w_main"].Document;
HtmlDocument w_code = w_main.Window.Frames["w_code"].Document;
HtmlDocument w_lms_content = w_main.Window.Frames["w_lms_content"].Document;
w_lms_content得不到该载入页面的真正源码看了些资料,翻遍百度和谷歌,没找到有效解决办法看到下面代码,不理解,也不知道如果可以的话后面代码怎么写//获取frame的HTMLDocument接口HTMLDocument doc = (HTMLDocument)webBrowser1.Document.DomDocument;
object j;
for (int i = 0; i < doc.parentWindow.frames.length; i++)
{
j = i;
HTMLWindow2Class frame = doc.parentWindow.frames.item(ref j) as HTMLWindow2Class;
if (frame.name == "main")
{
MessageBox.Show(frame.document.title);
}
}
难道这个代码可以获取到载入页面的真正源码??如果能,后面代码改怎么写???
不能的话,求大牛给出详细方法,最好是代码
解决方案 »
- 匹配取出url的参数,怎样写正则表达式?我在做个项目,急需~~,望不吝赐教!!
- 详细信息的问题(急)
- 关于datagridview中动态从数据库中取数据然后显示中文列标题的问题!
- 像VS2003工具箱这种功能框在ASP.NET中怎么做?
- 十万火急求解,关于服务器端table,在线等
- 数据捆绑问题
- 如果在多声卡的机器中在创建DirectX中的Audio时怎样选择输出声卡?
- C# datagridview 实现excel 筛选
- 有求一段时间内润月个数的函数吗?
- 寻求:希望出版社出版--C#网络编程实例教程源代码
- 关于AspNetPager 控件的值的问题
- 关闭窗体事件,加代码后,程序运行,电脑就注销不了,关机不了
直接用代码方式获取源码是很容易。System.Net.WebClient wc = new System.Net.WebClient();
Byte[] pageData = wc.DownloadData("网页地址");
string s= System.Text.Encoding.Default.GetString(pageData);后面你要干嘛?
http://topic.csdn.net/u/20100112/21/e77866ba-d764-4a9e-804b-139c6eea50e4.html
javascript代码。而且如果使用了框架页面,你那样去获取,好像,确实拿不到框架页面内那个网页的内容。这个经常右键点击查看源代码,就能发现的。
自然下面一句就可以了w_lms_content.GetElementById("sec_timer_0").InnerText问题是这一句没用,因为跨域了
w_lms_content.GetElementById("sec_timer_0")得到的是null还是,真的能获取,如果能获取,就说明不存在你说的跨域安全问题。
我这样说吧,w_lms_content载入的页面的domain有可能是www.uestcedu.com,也可能是hz.uestcedu.com,因此前一种情况能得到这个计时的时间,而后一种情况,得到的_lms_content.GetElementById("sec_timer_0")为null
很明显是域不同引起的
这一句不能跨越!你 的问题还有些没有说清楚