关于用window.open()打开指定aspx页面,而被打开的页面却不调用Page_Load()函数问题。
细节如下:
在aaa.aspx页面中保存变量值到Sesssion,然后调用window.open("bbb.aspx")来打开bbb.aspx页面,在bbb.aspx页面中有Page_Load()函数,在函数中读取Session值来初始化bbb页面。但是单步调式后发现bbb.aspx页面被打开后没有调用Page_Load函数,也就是bbb.aspx页面没有任何初始化。
另外在bbb.aspx中有个关闭按纽,而在点击此按纽时却会调用Page_Load函数来初始化页面,然后关闭此页面,也就是什么也没用。
为什么会出现这种问题?
1、在打开bbb.aspx页面时为什么没有调用Page_Load函数。
2、在点击关闭按纽时为什么会先调用Page_Load函数。
如何解决这些问题,让其实现如下过程。
1、当bbb.aspx页面被打开的调用Page_Load函数来初始化页面。
2、点击关闭按纽直接关闭页面。
问题点数:100、回复次数:12Top
1 楼Mirricle(Miracle Supply)回复于 2006-03-29 10:57:41 得分 0
不会的啊 只是没跟踪到吧Top
2 楼showlie(想长膘的小猪……)回复于 2006-03-29 10:58:25 得分 0
难道javascript只能打开静态页面吗?小生对javascript不熟,向高手请教Top
3 楼Eddie005(♂) №.零零伍 (♂)回复于 2006-03-29 11:02:29 得分 0
1、在打开bbb.aspx页面时为什么没有调用Page_Load函数。
===== 正常来说是会调用的
2、在点击关闭按纽时为什么会先调用Page_Load函数。
===== 只要发生了回传(postback),就会触发Page_LoadTop
4 楼rickjelly2004(每逢佳节倍思亲-------------快乐生活)回复于 2006-03-29 11:02:29 得分 50
每次OPEN(URL?ID=RANDOM()每次加个变量,或者去掉缓存
Reponse.Expires =-1;Top
5 楼Eddie005(♂) №.零零伍 (♂)回复于 2006-03-29 11:06:37 得分 50
关于第二个问题的解决:
如果没有必要,就避免发生回传;
例如关闭跟窗口的按钮,如果在后台其button_click事件里用response.write输出关闭窗口的脚本,就会发生回传,先执行Page_Load,然后才是button_Click里面的代码;
要不回传,那么可以在Page_Load中这样写:
this.Button1.Attributes.Add("onclick","window.close();return false;");
或者直接就用html的按钮,而不需要用服务器段控件
Top
6 楼jimu8130(火箭的未来在哪里?)回复于 2006-03-29 11:15:48 得分 0
这个你可以看下别人的window。open函数
按钮误调用是不是按钮的单击事件和page_load绑定了?你看下他的事件面板
重新建立一个页面在看看那Top
7 楼showlie(想长膘的小猪……)回复于 2006-03-30 10:50:37 得分 0
我做了一个测试,在aaa页面中有个button按钮,其中打开bbb页面window.open("bbb.aspx")。在bbb页面中有个label对象。在bbb的Page_Load()函数中有如下代码:
if(!Page.IsPostBack)
label.text = "页面首次被打开";
else label.text = "页面非首次被打开";
运行代码,bbb页面的label出现"页面首次被打开"。但是以后当我把label的文本修改如下时:
if(!Page.IsPostBack)
label.text = "页面首次被打开11111";
else label.text = "页面非首次被打开222222";
再次运行程序,label对象的文本还是原来的"页面首次被打开",而不是"页面首次被打开1111"。不管怎么释放控件等操作label文本还是没有任务变化。
但是,当bbb页面被刷新后,label文本变为改变后的文本,即"页面首次被打开1111"。接下来的运行,label的文本就一直是"页面首次被打开1111"。除非再次刷新才能做相应的变化。
高手分析一下为什么会这样?是否是aaa页面每次调用的都是bbb编译后的静态临时页面,除非每次删除bbb临时页面?
Top
8 楼coldcool(寒冰)回复于 2006-03-30 11:19:15 得分 0
关掉本页的cache就可以
或者禁用你IE的cache功能
这个只是简单的缓存问题Top
9 楼javanow(骄子数据库技术网)回复于 2006-03-30 11:19:51 得分 0
我遇过到。可能是 ide 的BUG,他把一些事情丢 了。
在 2003年我做的一个网站,一个按钮点击后没任何反应,重新编译一下就行了。Top
10 楼ibm_qq(星城浪子)回复于 2006-03-30 15:27:10 得分 0
试试
Response.Write("<Script>window.location='';</Script>");Top
11 楼qhh389(秋风乱舞)回复于 2006-03-30 15:46:54 得分 0
Response.Write("<script>window.opener=null;window.close();</script>");Top
12 楼songwsdy(期待烈火的干柴)回复于 2006-03-30 15:54:20 得分 0
onclick="javascript:parent.parent.window.open('frmEreqList.aspx','main');parent.parent.main.location.replace('frmEreqList.aspx');
可以试试加上后面的location.replace().
这个是个轻量级的解决办法。Top




