使用ShowModelDialog()搞不定了,请大家帮忙。

屡败屡战数马援 2003-11-19 12:21:29
我看了孟子E章的文章,与他的操作方法一样。
建立两个页面,1.htm是父页,2.htm是打开的对话框页。

第一个问题:
使用showmodeldialog的第二个参数,传递父页的window对象,在2.htm上无法使用
代码:
1.htm
showmodeldialog("2.htm",window,"dialogHeigh:200;dialogWidth:200");
2.htm
if(window.dialogArguments != null)
{
// 操作
}
在2.html的这个判断出现错误,显示信息:window为空或不是对象。
如果没有上面的判断语句的话,直接用:
window.dialogArguments.location.reload(true);
出现错误:被呼叫方拒绝接受呼叫。

第二个问题:
使用showmodeldialog()方法,打开的窗口可以使用returnValue向父窗口返回值:
window.returnValue = 'aaa';
但是还是出现第一个问题的毛病:window为空或不是对象。

第三个问题:
这时候我就奇怪了,上面的方法我在微软的MSDN帮助里面看到的,所有的IE5.5以上的浏览器肯定支持,而我用的是IE6.0,不可能出现对象不能引用的错误啊,我就用代码测试了一下:
我在对话框页面上加入了一个表单,名称是Form1,在表单里面加入了一个<div>元素,名称是msg,然后我用下面的代码:
function window.onload()
{
window.Form1.msg.innerText = 'aa';
}
还是出现上面的消息:window.Form1.msg为空或不是对象。
但是奇怪的问题,我用:
window.document.window.document.getElementById("msg").innerText = 'aa';
成功,可以正常显示,这个我就不明白了。
...全文
107 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hrong 2003-11-19
  • 打赏
  • 举报
回复
3.
window.Form1.msg.innerText = 'aa';
=>
document.all.msg.innerText = 'aa';

你的 msg 是什么东西, 看你用 msg.innerText 那么 msg 肯定就不是表单元素了, 那你的调用方法是错的
  • 打赏
  • 举报
回复
第一个问题我自己解决了,是我的错误。在1.htm里面应该使用变量把window对象传递到模态对话框中,这样对话框才能操纵父窗口。
我要的效果是模态对话框操作后关闭自动刷新父窗口,下面是代码:
1.html
var me;
me = window;
window.showModelDialog('2.htm',me,"dialogHeigh:200;dialogWidth:200");

2.htm
if(dialogArguments != null)
{
dialogArguments.location.reload(true);
window.close();
}
这样,对话框提交后可以自动刷新父窗口,用不着使用window.open()打开新窗口后使用
window.opener.location.reload(true);
刷新父窗口了。
  • 打赏
  • 举报
回复
to :hrong(黄蓉):
你说的是对的,我加的是<div>元素,不是表单元素,所以不可用,我使用
window.document.getElementById("msg").innerText = 'aa';
就行了。
另外,我写的2.htm是简化成这个样子的,实际上2.htm是个addCustom.aspx的asp.net页面,有很多代码。
  • 打赏
  • 举报
回复
to zhaiyf(zhaiyf):
模态对话框就是像你使用一些windows应用程序出现的警告对话框和word的打印对话框一样,你打开了这样的对话框,必须在这个窗口上操作,直到你关闭这个窗口,你才能操作其他窗口,否则不允许你操作其他窗口。这就是模态对跨框。
  • 打赏
  • 举报
回复
To aotianlong(初中没毕业):
老大,你看清楚,我用的是模态对话框,不是非模态对话框,如果我用你的window.showModelessDialog(),那么不如直接用window.open(),什么都搞定了。
zhaiyf 2003-11-19
  • 打赏
  • 举报
回复
模态对话框使什么东西啊 ?谁给介绍介绍啊 !
aotianlong 2003-11-19
  • 打赏
  • 举报
回复
1.htm
<script>
if(document.cookie=="")
{
document.cookie=0;
}
else
{
var cookie = document.cookie;
cookie = parseInt(cookie);
n = cookie + 1;
document.write("第<font color='red'>"+n+"</font>次刷新");
document.cookie = n;
}
function show()
{
window.showModelessDialog

('2.htm',window,"dialogHeigh:200;dialogWidth:200");
}
</script>
<button onclick="show()">show</button>


2.htm
<script>
var arg = dialogArguments;
function test()
{
if(arg != null)
{
dialogArguments.location.reload(true);
window.onunload = new Function("");
window.close();
}
}
window.onunload = test
</script>
<button onclick=test()>关闭并且刷新父窗口</button>
aotianlong 2003-11-19
  • 打赏
  • 举报
回复
<script>
window.showModelessDialog('2.htm',window,"dialogHeigh:200;dialogWidth:200");
</script>

这条语句绝对能执行,
你那个showModelDialog拼错了罢了。
hrong 2003-11-19
  • 打赏
  • 举报
回复
1.2.
你的 2.htm 做成正规的 HTML 网页, 而不只放几句JS脚本!!!!

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧