предотвратяване на щракване на потребителя върху бутона 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, ако е възможно, отбелязва и клиент. (Причина, позволете на потребителя да избере или стартиране онлайн / при използване в офиса.) Отвореният раздел е форма на xpages. не използва диалоговия прозорец на библиотеката с разширения, за да го извика.   -  person Desmond Sim    schedule 27.07.2015


Отговори (3)


И ако имате предвид да предотвратите затварянето на раздел на браузъра, мисля, че не е възможно. Може би това може да се направи, но тогава има много клопки.

Можете да използвате събитието onunload, което се задейства при всяко разтоварване на обект. Можете също да използвате събитието onbeforeunload, което трябва да се задейства при зареждане на елемент (но открих, че е ненадеждно).

Сложната част е: защо се случва разтоварването? Дали е заради x, или защото имате някакво програмно действие, което презарежда (част от) екрана? И в двата случая се задейства разтоварване.

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

Ако имате предвид "x" в раздела Notes Client, няма да можете да направите това в рамките на кода на приложение XPages.

Отваря се като Eclipse View (същото като Applications Navigator, Controls Palette, Problems etc. in Designer). Ще трябва да погледнете API на Eclipse и да видите дали е възможно да стартирате View без "x", за да го затворите. Но тогава ще трябва да стартирате формуляра от вашата XPage, като използвате извикване на Eclipse, използвайки XSP.executeCommand() и плъгин (минимум R9). Вижте Mastering XPages 2nd Edition за единствения пример, който знам за XSP.executeCommand().

person Paul Stephen Withers    schedule 23.07.2015

Както другите вече писаха: Не мисля, че наистина можете да го решите по този начин. Защото: няма да е достатъчно да попречи на потребителите да затворят раздел, те може също така да затварят целия прозорец на браузъра (вероятно включително прозореца на Notes Client). И какво, ако браузърът / клиентът се срине на тях? Няма начин да уловите това „събитие“ наистина.
Мисля, че ще трябва да го обмислите отново.

person Lothar Mueller    schedule 27.07.2015
comment
добре благодаря. Мисля, че наистина трябва да помисля за друг начин да го направя. - person Desmond Sim; 28.07.2015