(超急)跪求高手:为什么我取不到网页的源代码?
前台页面:.aspx
<%@ Import NameSpace="System.Data" %>
<%@ Page language="c#" Codebehind="PageHtml.aspx.cs" AutoEventWireup="false" Inherits="Web.Frame.PageHtml" validateRequest=false %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>PageHtml</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<LINK href="../Style.css" type="text/css" rel="stylesheet">
</HEAD>
<body bgColor="#d4dcef" leftMargin="0" topMargin="0">
<form id="Form1" method="post" runat="server">
<table height="100%" cellSpacing="0" cellPadding="0" width="95%" align="center" border="0">
<tr>
<td vAlign="top" width="100%" height="30"><asp:button id="btnGet" runat="server" CssClass="button4" Text="获取列表"></asp:button>
<asp:textbox id="txtHtml1" runat="server" Width="100"></asp:textbox><asp:button id="Button1" runat="server" Text="Button"></asp:button>
<div id="divHtml" runat="server"></div>
</td>
</tr>
<asp:repeater id="rpt" Runat="server">
<itemtemplate>
<tr width="50%" align="center">
<td align="left" valign="top" align="center" width="50%" height="30">
<%# ((DataRowView)Container.DataItem)["href"].ToString() %>
</td>
</tr>
</itemtemplate>
</asp:repeater>
<tr id="trFrame" runat="server">
<td vAlign="top" align="center" width="96%" height="96%"><iframe id="oIframe" name="oIframe" src="http://www.sina.com.cn" frameBorder="no"
width="100%" scrolling="auto" height="275"></iframe>
</td>
</tr>
</table>
</form>
</body>
</HTML>
后台代码:.aspx.cs
private void Page_Load(object sender, System.EventArgs e)
{
//把iframe中的页面数据截取下来赋值到文本框
if (!this.IsClientScriptBlockRegistered("clientScript1"))
{
string script = "";
script = script + "<script>";
script = script + "function GetHtml1(){";
script = script + "document.all.txtHtml1.value=document.frames.item('oIframe').document.documentElement.outerHTML;";
script = script + "}";
script = script + "</script>";
this.RegisterClientScriptBlock("clientScript1", script);//divHtml.InnerText
}
btnGet.Attributes.Add("onclick", "GetHtml1();");
}
问题:为什么我的txtHtml1.Text的值是空的,请指正我的错误,谢谢高手!
问题点数:100、回复次数:20Top
1 楼gngnandgngn(仗义执言 )回复于 2006-07-04 08:54:34 得分 10
window.all("txtHtml1").valueTop
2 楼milozy1983(Detective)回复于 2006-07-04 08:59:51 得分 15
用这个看看吧
///////////////////////////////////////
WebRequest req = WebRequest.Create("http://www.csdn.net");
try
{
WebResponse result = req.GetResponse();
Stream ReceiveStream = result.GetResponseStream();
Byte[] read = new Byte[512];
int bytes = ReceiveStream.Read(read, 0, 512);
txtHTML.InnerHtml = "";
while (bytes > 0)
{
// Note:
// The following assumes that the response uses UTF-8 as encoding.
// If the content is sent in a ANSI codepage like 932 use something like this:
// Encoding encode = System.Text.Encoding.GetEncoding("shift-jis");
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
txtHTML.InnerHtml = txtHTML.InnerHtml + encode.GetString(read, 0, bytes);
bytes = ReceiveStream.Read(read, 0, 512);
}
}
catch(Exception)
{
txtHTML.InnerHtml = "Error retrieving page";
}Top
3 楼mmens(快乐中前行!)回复于 2006-07-04 09:02:01 得分 15
可以使用下面语句获取页面源代码:
TextWriter = new StringWriter();
base.Render(new HtmlTextWriter(TextWriter));
writer.Write(TextWriter.ToString());
strWrite = TextWriter.ToString();Top
4 楼LuoZhiWei2008(追梦)回复于 2006-07-04 09:03:42 得分 15
应该这样写.
"document.all.+"txtHtml1.ClientID+".value"
OR
"document.all('"+txtHtml1.ClientID+"').value"
or
"document.getElementByID('"+txtHtml1.ClientID+"').value"
来得到WEB控件中的值.Top
5 楼Hexudong1979(何须懂何必懂)回复于 2006-07-04 09:04:29 得分 0
我只是想得到iframe中所链接网页的源代码
上面的方法我都试过了,都不行的Top
6 楼LuoZhiWei2008(追梦)回复于 2006-07-04 09:06:18 得分 0
第一句写错了.
更正
"document.all."+txtHtml1.ClientID+".value"Top
7 楼myminimouse(坚决不用baidu)回复于 2006-07-04 09:18:33 得分 5
upTop
8 楼Eddie005(♂) №.零零伍 (♂)回复于 2006-07-04 09:19:30 得分 15
private void Page_Load(object sender, System.EventArgs e)
{
//把iframe中的页面数据截取下来赋值到文本框
if (!this.IsClientScriptBlockRegistered("clientScript1"))
{
string script = "";
script = script + "<script>";
script = script + "function GetHtml1(){";
script = script + "document.getElementById('txtHtml1').value=document.getElementById('oIframe').document.documentElement.outerHTML;;";
script = script + "}";
script = script + "</script>";
this.RegisterClientScriptBlock("clientScript1", script);//divHtml.InnerText
}
btnGet.Attributes.Add("onclick", "GetHtml1();return false;");
}Top
9 楼Hexudong1979(何须懂何必懂)回复于 2006-07-04 09:27:23 得分 0
如果我采用Eddie005(♂) №.零零伍 (♂) 的方法,就会在访问的网页的状态栏产生这样的错误。
行: 15
字符: 21
错误: 缺少对象
代码: 0
URL: http://localhost/Web/Frame/PageHtml.aspxTop
10 楼Hexudong1979(何须懂何必懂)回复于 2006-07-04 09:42:56 得分 0
顶上去Top
11 楼cm8983(思远)回复于 2006-07-04 10:23:05 得分 5
upTop
12 楼Hexudong1979(何须懂何必懂)回复于 2006-07-04 10:41:19 得分 0
怎么没有人能解决吗?Top
13 楼artak(甜葡萄)回复于 2006-07-04 10:51:06 得分 5
ifame的能获取吗?????Top
14 楼Hexudong1979(何须懂何必懂)回复于 2006-07-04 11:56:01 得分 0
哎,谁知道啊?
我非常着急
如果能帮我解决,我就给他我所有分数Top
15 楼Hexudong1979(何须懂何必懂)回复于 2006-07-04 15:22:41 得分 0
如果我要获取指定的页面的源文件怎么办啊?
其中首先看到的查询页面a.html,然后输入查询条件,得到查询结果列表页面b.html,然后再点击列表页面中的链接得到c.html,我要的就是c.html中的数据Top
16 楼Hexudong1979(何须懂何必懂)回复于 2006-07-04 16:20:17 得分 0
upTop
17 楼pbwf(书生)回复于 2006-07-05 09:31:44 得分 5
UPTop
18 楼1111111(我有人品问题-我人品有问题)回复于 2006-07-05 15:54:39 得分 5
帮你upTop
19 楼myminimouse(坚决不用baidu)回复于 2006-07-05 16:24:30 得分 5
upTop
20 楼alore(alore)回复于 2006-07-05 23:41:51 得分 0
首先应通过父文档的ondatasetcomplete事件判断ifame加载的文档是否已经下载完毕,之后再通过ifame的contentWindow属性取得ifame内的文档对象,再通过ifame中包含的文档的document.all取得ifame中的内容。
ifame的代码赋值到input控件可以通过input的value实现。Top




