+ -
当前位置:首页 → 问答吧 → 怎样在window.open()返回结果后做操作

怎样在window.open()返回结果后做操作

时间:2011-09-06

来源:互联网

我写了一个action,返回类型是生成报表的文件流,在前台页面想弹出保存报表的对话框,就在页面用了window.open(url),其中url是action的路径,这些功能没问题,可以实现。
但是我想在关闭那个保存文件的对话框后再做一些操作,但是window.open()这个函数还没执行完,就是还没有返回结果时,程序就去执行window.open()下面的语句了。(我也用过window.showModalDialog,这个函数在IE下不能执行action)。

作者: lwj3826613   发布时间: 2011-09-06

仅一个思路,你可自行扩展

// a.html
var o = window.open('b.html');
var t = null;
function getOpenPageValue(){
var v = o.document.getElementById("b").value;
if(v != "123"){
t = setTimeout("getOpenPageValue()", 10);
}else{
clearTimeout(t);
alert(v);
}
}
getOpenPageValue();

// b.html
<input type="hidden" id="b">
<script>
/*
do something ...
*/
document.getElementById("b").value = "abc";
</script>

作者: kyzy_yy_pm   发布时间: 2011-09-06

引用 1 楼 kyzy_yy_pm 的回复:
仅一个思路,你可自行扩展

// a.html
var o = window.open('b.html');
var t = null;
function getOpenPageValue(){
var v = o.document.getElementById("b").value;
if(v != "123"){
t = setTimeout("getOpenPageValue……

可行,只要判断一下是否执行结束就好

作者: chenyingshu880603   发布时间: 2011-09-06

引用 1 楼 kyzy_yy_pm 的回复:

仅一个思路,你可自行扩展

// a.html
var o = window.open('b.html');
var t = null;
function getOpenPageValue(){
var v = o.document.getElementById("b").value;
if(v != "123"){
t = setTimeout("getOpenPageValu……


这样不行,比如说:
var o = window.open('report.action');
var t = null;
getOpenPageValue();

那个window.open()是生成报表的,需要一定时间,所以o为null,所以在getOpenPageValue()
o一直为null,所以就一直执行setTimeout中的function。主要是判断window.open()什么时候结束,这个有什么相应事件没?

作者: lwj3826613   发布时间: 2011-09-06

引用 3 楼 lwj3826613 的回复:

引用 1 楼 kyzy_yy_pm 的回复:

仅一个思路,你可自行扩展

// a.html
var o = window.open('b.html');
var t = null;
function getOpenPageValue(){
var v = o.document.getElementById("b").value;
if(v != "123"){
t = s……

var o = window.open('report.action');
setTimeout(function(){
  if(o){
  alert('页面加载成功')
  }
},100)


只能这样用setTimeout判断了

作者: MuBeiBei   发布时间: 2011-09-06

引用 4 楼 mubeibei 的回复:

引用 3 楼 lwj3826613 的回复:

引用 1 楼 kyzy_yy_pm 的回复:

仅一个思路,你可自行扩展

// a.html
var o = window.open('b.html');
var t = null;
function getOpenPageValue(){
var v = o.document.getElementById("b").valu……


var o = window.open('report.action');
这个只赋值一次,如果赋值的时候window.open()没有执行完成,o就为null,等到window.open()执行完成后o仍然为null,所以setTimeout这个也没法判断呀

作者: lwj3826613   发布时间: 2011-09-06

引用 5 楼 lwj3826613 的回复:

引用 4 楼 mubeibei 的回复:

引用 3 楼 lwj3826613 的回复:

引用 1 楼 kyzy_yy_pm 的回复:

仅一个思路,你可自行扩展

// a.html
var o = window.open('b.html');
var t = null;
function getOpenPageValue(){
var v = o.document.……


你不是只执行一次这个window.open吗~·

如果页面窗口打开了,那么o肯定不会是null。

作者: MuBeiBei   发布时间: 2011-09-06

引用 6 楼 mubeibei 的回复:

引用 5 楼 lwj3826613 的回复:

引用 4 楼 mubeibei 的回复:

引用 3 楼 lwj3826613 的回复:

引用 1 楼 kyzy_yy_pm 的回复:

仅一个思路,你可自行扩展

// a.html
var o = window.open('b.html');
var t = null;
function getOpenPageVal……


var o = window.open('report.action');
alert(o);
如果open一个普通的页面,那么o不会是null。现在里面是一个action,需要大概10s的时间,这样给o赋值的时候,window.open()还没有完成,alert(o)弹出的是个[Object]。过10秒窗口打开了,但是o仍然没有值,因为这个时候没有给它赋值。

作者: lwj3826613   发布时间: 2011-09-06

热门下载

更多