window.showModalDialog打开的页面需要跳转或刷新

最近做项目遇到一个问题:用window.showModalDialog(url,param,str)方法打开的对话框,需要在其内实现一个页面跳转,但是在跳转链接时,不会在当前页执行,而是弹出一个新的页面。于是在上网查了下,发现有四种解决方法:

1. 通过JS脚本,来模拟点击了A这样的链接,而不使用location试了一下:

function go_link(url) {
       var link = document.createElement("a");
       link.href = url;
       document.body.appendChild(link);
       link.click();
}
在调用location的地方,改为调用go_link方法。

要同时配合 <base target="_self"/>

2.模拟表单提交:

    1).在页面<head>标签里面添加<base target="_self">;
    2).在页面<body>标签里面添加<form id="saveForm" action="" method="POST"></form>;
    3).通过下面javascript执行页面跳转;
               $("#saveForm").attr("action", "xxx");
               $("#saveForm").submit();

3.利用iframe或frameset

     在showModalDialog打开的窗口中放入iframe或frameset,然后在此框架中显示page1.html,此时再在page1.html中执行location.href=‘page2.html’则会正常跳转至page2.html,而不会打开一个新窗口.

4.如果不用iframe显示page1.html,则可以将location.href='page2.html'替换为

                        window.name = "dialogPage";

                        window.open("page2.html","dialogPage");

        此时就可以实现正常的页面跳转;但是使用此方法如果是刷新本页面,即window.open('page1.html','dialogPage');

可能会由于页面缓存的原因,而使得页面无法更新;此时可以设置页面不允许缓存(Response.Cache.SetNoStore())解决该问题;

附:

如果在showModalDialog打开的页面page1.html中往父页面传值,可以使用dialogArguments.document.getElementById("目标控件ID").innerHTML进行赋值;


但是上述四种方法执行效率慢...希望精于此道的大神指教一二


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值