① javascript中的opener.reload()方法的问题。
很明显,你是利用你窗口打开的子窗口,然后在父窗口中引用子窗口的元素。这种方法很不错,但是你对于HTML工作是少了一点了解。
opener.location.reload()表示让子窗口重新加载,而后立即使用opener.document.getElementXX获取子窗口元素是不可能成功的。因为子窗口加载需要时间,而在子窗口未加载完成时,你不能保证你要的元素已经加载完成的。所以想成功只有等待子窗口加载完成才可以!做一个延时或是查询是很有效的办法。
延时:setTimeout("alert(opener.document.getElementById('<%=id%>'))",1000);,这种想法就是让其1000毫秒后再去执行alert语句,这时子窗口已经加载完成了。可以正常取到值,但说实在的,这种方式不是一种很好的方法。因为我不能确定子窗口是否能在1秒内完成,所以我只好使用2秒或是更大的值,这时不论你使用的值是多少,对于等待来说都是在浪费时间。假设正常一般是1秒完成,我不得不设这个值为2000毫秒,因为必须考虑1秒只是一个平均值,偶然是1。5秒呢?
别一种办法是查询!
换句话说,让其每50毫秒或是更短时间内取一次值,如果取出的是null则继续取值,否则就会取出正常值,这时停止取值就可以了!
值得注意的是,我这里的办法要小心,setTimeout或者setInterval也好,本句执行延时,并不是说该语句会延时。我的意思是:
setTimeOut("var a=i;",1000);表示的意思是1000ms后执行该语句,但是一定要注意的是,setTimeout后面的语句却不会延时,也就是立即执行的,所以如果下面的语句是对变量的处理是错误的。如:
setTimeOut("var a=1;",1000);
document.write(a);//该语句出错!
原因就是执行setTimeOut("var a=1;",1000);后会立即执行document.write(a);语句的,便var a=1;却要在1000ms后执行的,所以第二句的引用时,由于时间差的问题,a还没有被初始化。这就是做延时或是查询时要注意的地方。
当然,我所说的查询是一种循环查询,但在程序上我们对硬件的查询等,都是基于这样的一种思想的。查询的好处就是返回时即时,也就是说不管你的程序运行多长时间,它会在第一时间达到,时间误差仅是你所设置的值,如果你要求在子窗口加载完成后20ms内通知你,就将setTimeout参数设为20ms即可。便它不利的地方是查询是占用CPU的,占用系统资源,当然,如果你想加载完成时立即使用,可以使用一个循环,而不用setTimeout或setInterval。但时间越小开销越大。
所以,有时我们引入另一种方法,就是中断。你可以在父窗口中提供一个变量,然后子窗口加载完成后,将父窗口的变量更改一下,以达到通知父窗口,而利用这个值,父窗口可以知道子窗口是否已经完成加载。也就是说你参考一下程序的同步问题就可以解决了。但HTML还有一个事件表示目前窗口是否加载完成的。好像是load或是afterLoad,具体的我很少使用忘记了,但这个只是测试窗口是否加载完成,而程序的同步还是解决问题的通用方法的。
② iframe中的js如何刷新父窗口中div元素
为什么要用2个iframe。。还要用1个iframe来控制另外1个iframe。。这样就算成功也会很卡吧。。。。
jsp我记得有专个include你可以尝试属下。。。。
静态页面中如果是ifame的内容要控制父级元素有1个方法,在前面加parent就可以了。onclick="parent.xx()"。。
windows.parent.xxxxx这个我已经不能理解了-。-~~
能帮到1点是1点吧。。。。。
③ JS刷新父窗口的几种方式
浮层内嵌iframe及frame集合窗口,刷新父页面的多种方法<script language=JavaScript> parent.location.reload(); </script> <script language=JavaScript>parent.location.reload();</script>弹出子页面<script language=JavaScript> window.opener.location.reload(); </script> <script language=JavaScript>window.opener.location.reload();</script> 子窗口刷新父窗口<script language=JavaScript> self.opener.location.reload(); </script> <script language=JavaScript>self.opener.location.reload();</script> 刷新以open()方法打开的窗口<script language=JavaScript> window.opener.location.href=window.opener.location.href; </script> <script language=JavaScript>window.opener.location.href=window.opener.location.href;</script> 刷新以winodw.showModelDialog()方法打开的窗口Java代码<script language="javascript"> window.parent.dialogArguments.document.execCommand('Refresh'); </script>
④ js怎么实现在子窗体刷新父窗口的时候,父窗口的onload不执行
onload事件始终触发,你说的onload事件绑定的事件处理程序不执行,那很简单将处理程序与onload事件解绑即可。比如window.onload=fn(){}; 你直接window.onload=fn2(){}即可 因为是会覆盖的 掉的或者等于null也行。
⑤ js如何刷新父页面
用iframe、弹出子页面刷新父页面iframe<script language=JavaScript> parent.location.reload(); </script>弹出子页面<script language=JavaScript> window.opener.location.reload(); </script>子窗口刷新父窗口<script language=JavaScript> </script>在内framset框架中A窗口调用容B窗口的JS方法:一般方法调用: A窗口中:window.parent.frames["result"].dialog_waiting.open("正在查询数据");//锁屏效果; 说明:其中result是指B窗口所在fram的name属性,dialog_waiting.open("正在查询数据")为B窗口中的JS方法。 A窗口刷新B窗口:window.parent.frames["result"].location.reload();
⑥ js 关闭子窗体时如何刷新父窗体
在父窗体里边写上一个脚本
<script>
function reflash()
{
window.location.href=window.location.href;
}
</script>
在关闭子窗体的脚本写
Response.Write("<script>window.close();window.opener.reflash();window.opener=null;</script>");
之前我就这么做过的,可能脚本的某个地方写错了,你需要测试一下。
⑦ asp.net中关闭子窗体后如何刷新父窗体,弹出的子窗体
建议用模态窗体,代码操作如下(js):
var result = window.showModalDialog(url);
//接下来执行刷新操作
⑧ javascript 父窗口刷新子窗口问题
没有办法。
引起的原因很简单,
因为你刷新父窗口的话 , 刷新后的父窗口不再是子窗口的opener,
刷新了 等于是另创建了一个 对象。
即 刷新后的父窗口 就不会认那个子窗口,因为新的父窗口
根本没有打开过子窗口。
⑨ Javascript 子窗口调用父窗口js方法
JS子窗口调用父窗口的方法:
框架(iframe)形式,这时用到是window.parent,window.parent能获取一个框架的父窗口或父框架。顶层窗口的parent引用的是它本身。可以用这一点特性来判断这个窗口是否是顶层窗口。详情如下:
1、1.html代表的是父窗口
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""
<htmlxmlns="
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>父页面</title>
</head>
<body>
<formname="form1"id="form1">
<inputtype="text"name="username"id="username"/>
</form>
<iframesrc="2.html"width="100%">
</body>
</html
2、2.html代表的子窗口
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""
<htmlxmlns="
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>子页面</title>
<scripttype="text/javascript">
functionchangeValue(val){
var_parentWin=window.parent;
_parentWin.form1.username.value=val;
}
</script>
</head>
<body>
<inputtype="file"name="filename"onchange="changeValue(this.value);"/>
</body>
</html>
这时在子窗口(iframe窗口)所做的改变,会改变父窗口中username的值。
⑩ JS 如何关闭弹出窗口,刷新父窗口
frame.contentWindow.location.reload(true);
所以呢window.top.mainFrame.contentWindow.location.reload(true);