弹出窗口打开时灰显背景

时间:2011-10-20 09:31:46

标签: javascript

点击链接/文本框或按钮,我在下面调用javascript。

function OpenPopupLinkRisk(Number) 
{
    window.open("../PopUp.aspx?id=" + Number, "List", "scrollbars=no,resizable=yes,width=700,height=450");
    return false;
}

我不希望用户做任何其他事情,直到他关闭弹出窗口。那么我怎样才能灰色背景并强制用户先关闭弹出窗口,然后在应用程序上执行任何其他活动。

有谁能建议我如何实现这个目标?

谢谢!

2 个答案:

答案 0 :(得分:2)

首先,我真的不赞成使用window.open,除非你真的需要一个新的浏览器弹出窗口。如果你想坚持使用persee,那么必须使用计时器或其他东西来手动检查窗口何时关闭,如:

var popup = window.open('http://www.example.com', 'example', '');   
var timer = setInterval(function() {   
    if(window.closed) {  
        clearInterval(timer);  
        alert('Closed alright');  
    }  
}, 100);  

否则,请查看有关该主题的一些教程Modal Popup

答案 1 :(得分:2)

首先直接解决你的问题,我不建议使用它然后你应该采取的方法,从可用性和安全的角度来看更好。

检查弹出窗口是否已关闭

// mask your page
mask();

// open popup
var popup = window.open("../PopUp.aspx?id=" + Number);

// check whether it's been closed
function check()
{
    if (popup && !popup.closed)
    {
        setTimeout(check, 1000);
    }

    // unmask your page
    unmask();
}
check();

现代(和更好)替代

使用window.open是一个糟糕的解决方案,因为它存在安全风险,弹出窗口阻止程序会阻止网站打开新窗口。这也被认为是不好的做法。

更好的现代替代方案是直接在页面内显示新页面作为模态窗口。这不会打开新窗口,用户会保持原样。

模态窗口有大量的javascript插件。进行Google搜索。