предотвращение нажатия пользователем кнопки закрытия X в форме xpages

i Поиск в stackoverflow, нашел версию Dojo, чтобы Esc не закрывал вкладку xPage в клиенте.

<xp:eventHandler
        event="onClientLoad"
        submit="false">
        <xp:this.script><![CDATA[dojo.addOnLoad( function(){ 
 dojo.connect( document, 'keydown', function(e){  
         if(e.keyCode === 27){ dojo.stopEvent(e); }        
 });
});]]></xp:this.script>
    </xp:eventHandler>

Но если я хочу запретить пользователю, нажмите кнопку «X» = «закрыть» в верхней части формы, чтобы закрыть окно. Хочешь размыть кнопку "X"? или сделать так, чтобы окно нельзя было закрыть, нажав на него?


person Desmond Sim    schedule 23.07.2015    source источник
comment
вам действительно нужно быть более конкретным: о каком клиенте вы говорите: Браузер? Заметки? Мобильный? - Как X относится к клиенту: он закрывает браузер или вкладку клиента? Или все окно? Или, может быть, это модальный диалог, такой как dojoDialog?   -  person Lothar Mueller    schedule 24.07.2015
comment
браузер google chrome, если возможно, отмечает клиент. не использовать диалоговое окно библиотеки расширений для его вызова.   -  person Desmond Sim    schedule 27.07.2015


Ответы (3)


И если вы хотите предотвратить закрытие вкладки браузера, я думаю, что это невозможно. Может быть, это можно сделать, но тогда есть много подводных камней.

Вы можете использовать событие onunload, которое срабатывает всякий раз, когда объект выгружается. Вы также можете использовать событие onbeforeunload, которое должно срабатывать при загрузке элемента (но я считаю его ненадежным).

Сложная часть: почему происходит выгрузка? Это из-за х, или потому что у вас есть какое-то программное действие, которое перезагружает (часть) экрана? В обоих случаях происходит разгрузка.

person D.Bugger    schedule 23.07.2015
comment
да, у меня есть некоторые программные действия на странице, поэтому я должен запретить пользователю нажимать функцию x (закрыть). Пользователь может нажать кнопку отправки или отмены на экране. чтобы можно было обновить действие. Я постараюсь узнать, как использовать функцию onunload, посмотрите, подходит ли она для моего случая или нет. Спасибо! - person Desmond Sim; 24.07.2015

Если вы имеете в виду "x" на вкладке Notes Client, вы не сможете сделать это в коде приложения XPages.

Он открывается как представление Eclipse (так же, как навигатор приложений, палитра элементов управления, проблемы и т. д. в Designer). Вам нужно будет взглянуть на API-интерфейсы Eclipse и посмотреть, можно ли запустить представление без «x», чтобы закрыть его. Но тогда вам нужно будет запустить форму из вашего XPage, используя вызов Eclipse, используя XSP.executeCommand() и плагин (минимум R9). Единственный известный мне пример для XSP.executeCommand() см. в разделе Mastering XPages 2nd Edition.

person Paul Stephen Withers    schedule 23.07.2015

Как уже писали другие: я не думаю, что вы действительно можете решить это таким образом. Потому что: будет недостаточно запретить пользователям закрывать вкладку, они могут также закрыть все окно браузера (возможно, включая окно клиента Notes). А если на них крашится браузер/клиент? На самом деле это "событие" невозможно поймать.
Я думаю, вам придется все обдумать еще раз.

person Lothar Mueller    schedule 27.07.2015
comment
хорошо, спасибо. Я думаю, действительно нужно думать о другом способе сделать это. - person Desmond Sim; 28.07.2015