2009-05-21 2 views
0

У меня есть страница, в которой перечислены загруженные вложения и значок рядом с каждым вложением, который открывает всплывающее окно (при нажатии), чтобы позволить пользователю редактировать различные вложения информации для каждого приложения.Как я могу убедиться, что пользователь не может открыть более одного всплывающего окна в любое время?

Мои вопросы:

  1. Как убедиться, что пользователь имеет право открыть только один всплывающее окно в любое время

  2. Когда пользователь пытается открыть другое всплывающее окно, появится предупреждение и сообщит ему, что им запрещено открывать более одного окна.

ответ

2

Вы можете использовать «обрабатывать» в окно и проверить, если он открыт или нет, вот пример:

var vWin = null; 
var msWindowUsedMessage = "A previous action was not completed.\nClose the window and try again."; 

function IsWindowUsed(oWindowToCheck) { 
    if (!oWindowToCheck.closed && oWindowToCheck.location) { 
     alert(msWindowUsedMessage); 
     oWindowToCheck.focus(); 
     return true; 
    } 
    return false; 
} 
function Open_New_Window(sUrl, sTitle, sParams) { 
    var winLeft = top.screenLeft + 50; 
    var winTop = top.screenTop + 50; 
    var oWindowHandle = window.open(sUrl, "", sParams + ",toolbar=no,top=" + winTop + ",left=" + winLeft); 
    oWindowHandle.opener = self; 
    return oWindowHandle; 
} 

function Add() { 
    if (IsWindowUsed(vWin)){ 
     return; 
    } 
    var sParams = "width=380,height=10,status=no,resizable=yes"; 
    var sUrl = "add.aspx"; 
    vWin = Open_New_Window(sUrl, 'Add', sParams); 
} 
0

Почему бы не сделать каждое всплывающее модальное, чтобы оно было отклонено, прежде чем вы сможете взаимодействовать с главной страницей. Это довольно легко сделать с jQuery Dialog plugin, но вы также можете сделать свой собственный с помощью javascript/css magic.

3

Дайте всплывающее имя, когда вы его открываете. Это заставит любые последующие клики открываться в том же всплывающем окне. Затем вы можете реализовать событие window.unload, чтобы пользователи не могли перейти от сохраненной в данный момент страницы.

Если вы используете jQuery, хотя я бы предложил вам использовать ui.dialog для обеспечения функциональности на странице. Затем вы также заставите пользователей по очереди редактировать.

0

Создайте флеш-файл cookie или глобальный (клиент или сервер на основе ваших потребностей) и проверьте, установлен ли он каждый раз при запуске всплывающего окна.

3

При создании нового всплывающего окна, установите переменную, чтобы указать на новом окне а затем проверить, было ли оно закрыто или нет:

var currentPopup = null; 

function openPopup(){ 

    //test that we have either not opened a popup or have closed it. 
    //references to closed windows don't disapear, but have their closed property set to true. 
    if(!currentPopup || currentPopup.closed){ 

     //set the new currentPopup variable to reference the new window. 
     currentPopup = window.open(...); 
    } 
    else{ 
     //A window is open! Display error message. 
     //for the best user experience use a nice way to display the message as opposed to using an alert(); 

    } 
} 
Смежные вопросы