日期:2014-05-17  浏览次数:20436 次

关于网页创建周期和脚本顺序的问题。
有三个页面 A B C。
A——》B :B是模态窗体
B——》C :C是B的一个ifram子窗体。

我想从A传递一个值(i)给C,但是不使用会造成A提交刷新的方法。
现在思路是由A通过脚本打开模态B,链接直接传值b.aspx?ID=i。
B页面上设置脚本方法 return i。
C调用B页面的方法得到 i 赋值给C页面上的input.value。
然后后台取input.value得到i。

可是一想,如果这样做,最终C页面上input.value保存的i,因为在C创建时还没有提交,所以在C 的Page_Load()事件里是不能取到input.value的i值....除非C再提交一次。

请教下大家,需要怎么做来实现呢。不刷新A,并且C在创建完毕时能获取i值,而不需要再提交一次。
如果可以,最好帖下代码看看。谢谢了

------解决方案--------------------
对于A--B很简单。你在B编写一个jaavscript函数,在A就可以直接调用,因为A拥有B(打开B时就获得了其返回的网页对象)。而回调完全可以让A给B传送一个函数名称,B去动态拼成使用类似“opener.函数"的命令以eval调用它。

问题是B--C,浏览器为了安全,是不允许直接通讯的。这就需要C去在页面加载时去访问B(自身window对象的上层父对象)中的函数。C访问B,而不是B去访问C。