如何在一个IE的窗中,引用另外一个窗中的元素?
请赐教
这两个窗口要有关系
比如 窗口 A ,B
B是A弹出来的窗口
在B中可以使用
window.opener.document.id.value来访问A中的值
在 Web 窗体页之间传递值
在很多时候,您将需要从一页定位到另一页,将值从一页传递到另一页。例如,可能有一页会提示用户提供名称和密码。当用户提交窗体时,您需要调用另一页对用户进行身份验证。
在页之间共享信息的方法有多种:
使用查询字符串,它将信息追加到 URL 并将该 URL 传递到下一页。这种方法存在使信息可见的缺点。有关详细信息,请参阅 WebClient.QueryString 属性和 HttpRequest.QueryString 属性。
使用会话状态存储信息,使用户当前会话中的所有页都可以全局访问这些信息。但是,这种方法会占用服务器内存,并且信息仅在会话过期之前存储,从而比向下一页传递信息具有更多的系统开销。有关详细信息,请参阅 Web 窗体状态管理。
使用自定义页属性,然后从初始页重定向到目标页,此时仍可以读取旧页上的值。此策略在本主题中描述。
Web 窗体页是应用程序中的类,因此可以向处理任何类一样为它们创建属性。但是,由于 Web 窗体页实际上仅在执行页的过程中存在,它们的生命周期非常短。因此,Web 窗体页上属性的用途相当有限,因为它们仅在处理页的过程中存在。但是,如果使用特定的技术将控件从一页传递到另一页,后一页仍可以访问前一页上的属性。
在源页上创建可共享的值
在代码中,使用属性的标准语法声明页上的一项或多项只读属性。返回要向下一页传递的属性值。
以下示例显示如何声明名为 Property1 的属性并将它的值设置为该页上文本框的值:
Visual Basic
Public ReadOnly Property Property1() As String
Get
Return TextBox1.Text
End Get
End Property
// C#
public string Property1
{
get
{
return TextBox1.Text;
}
}
通过调用 Server 对象的 Transfer 方法调用下一页,并向其传递要将信息传递到的页的 URL。
以下示例显示如何从事件处理程序中调用名为 WebForm2 的页:
Visual Basic
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Server.Transfer("Webform2.aspx")
End Sub
// C#
private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer("Webform2.aspx");
}
若要从所调用的页中获取第一页的属性值,请创建源页类的实例变量。然后可以向其分配 HTTP 对象,即接收初始请求的对象。
在所调用的页中读取源页中的属性值
创建一个全局实例变量,它被类型化为源页的类。
以下示例显示如何声明其类名称为 WebForm1 的页所表示的类型的变量:
Visual Basic
Public sourcepage as WebForm1
// C#
public WebForm1 sourcepage;
在 Page_Load 处理程序中,从 Context.Handler 对象中获取源页,然后向其分配在第 1 步创建的变量。必须将该处理程序对象转换为源页类的类型。
注意 只应在该页首次运行时执行此逻辑。
从源页中获取属性值,并按照使用任何对象属性的方式来使用这些属性值。
注意 如果要在除第一页初始化阶段之外的任何页处理阶段中使用属性值,则务必要保存这些属性值。有关详细信息,请参阅 Web 窗体状态管理介绍。
完整的 Page_Load 处理程序可能类似于如下所示:
Visual Basic
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not Page.IsPostBack Then
sourcepage = CType(Context.Handler, WebForm1)
Label1.Text = sourcepage.Property1
End If
End Sub
// C#
private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack){
WebForm1 sourcepage = (WebForm1) Context.Handler;
Label1.Text = sourcepage.Property1;
}
}
如果是两张毫无联系的页面,不可能。
如果你的两个页面(子页1、2)是从同一个页面(父页)打开的.可以这么干:
父页:
<script>
var myvar
</script>]
子页1:
<script>
opener.myvar="asdf"
</script>
子页2:
</script>
alert(opener.myval)
</script>
因为受到CSDN思归大哥等高人指点,我才能写出的源码:
<%@ Page Language="C#"%>
<%@ Import Namespace="System.Net"%>
<%@ Import Namespace="System.IO"%>
<script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e)
{
if(Request.Form["Train_Start"]!=null)
{
string tStart=Request.Form["Train_Start"];
string tEnd=Request.Form["Train_End"];
HttpWebRequest oRequest = (HttpWebRequest)WebRequest.Create("http://www.xa-rail.com.cn/chaxun/query/Passenger.asp");
oRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
string strPost="Train_Start="+tStart+"&Train_End="+tEnd;
byte[] somebyte=Encoding.Default.GetBytes(strPost);
oRequest.Method = "POST";
oRequest.ContentLength =somebyte.Length;
//strPost.Length;
oRequest.ContentType = "application/x-www-form-urlencoded";
StreamWriter oStreamWriter= new StreamWriter(oRequest.GetRequestStream(),System.Text.Encoding.GetEncoding("GB2312"));
oStreamWriter.Write(strPost);
oStreamWriter.Close();
HttpWebResponse oResponse = (HttpWebResponse)oRequest.GetResponse();
StreamReader sr = new StreamReader(oResponse.GetResponseStream(), System.Text.Encoding.GetEncoding("GB2312"));
string sResultContents = sr.ReadToEnd();
int start,stop;
start=sResultContents.IndexOf("<table");//截取掉版权信息
if(start!=-1)
{
stop=sResultContents.IndexOf("</table>",start)+8;
string temp = sResultContents.Substring(start, stop - start);
StringBuilder sb=new StringBuilder(temp);
start=temp.IndexOf("<td width="+ "+"15"+"+" align="+"+"center"+"+ " height="+"+"17"+"+ " bgcolor="+"+"#FFC86A"+"+">");
stop=temp.IndexOf("</td>",start)+5;
sb.Remove(start,stop-start);
temp=sb.ToString();
string lastLine="<td width="+ "+"97"+"+" align="+"+"center"+"+ " height="+"+"21"+"+">";
start=temp.IndexOf(lastLine);
stop=temp.IndexOf("</td>",start)+5;
sb.Remove(start,stop-start);
temp=sb.ToString();
int[,] points=new int[100,2];
start=stop=0;//初始化
for(int i=0;start!=-1;i++)
{
for(int j=0;j<2;j++)
{
if(j==0)
{
start=temp.IndexOf(lastLine);
points[i,j]=start;
if(points[i,j]==-1)
{
break;
}
}else if(j==1)
{
stop=temp.IndexOf("</td>",start)+5;
points[i,j]=stop;
}
}//end j
if(start!=-1)
{
sb.Remove(start,stop-start);
temp=sb.ToString();
}
}//end for
sb.Replace("#FFC86A","#27B4F8");
sb.Replace("fff8e9","ffffff");
Response.Write(sb);
sr.Close();
oResponse.Close();
}else
{
Response.Write("没有查到你要查找的内容");
}
}
}
</script>
<div align="center"><img src="go_1.gif" width="20" height="12" align="absmiddle"><strong><font color="#FF0000" size="2"><a href="http://www.cwestc.com/trainTime2/add.aspx">按经停站查询点击这里</a></font></strong>
</div>
<form runat="server">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td> <FONT color=#000000
size=3> 起始站:</FONT> <FONT color=#000000>
<INPUT name=Train_Start> <BR>
<FONT
size=3> 到达站:</FONT></FONT>
<input name=Train_End>
<INPUT type=submit value="确 定" name=B1> <INPUT type=reset value="取 消" name=B2></td>
</tr>
</table>
</form>
<div align="center"><font size="2"> 版权所有:<a href="http://www.cwestc.com">中国西部煤炭网</a></font><br>
<font size="2">建议使用 IE 或 NETSCAPE 4.0以上版本进行浏览,最佳显示800*600<br>
</font> <br>
</div>