Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Дождаться ответа пользователя (https://javascript.ru/forum/events/45264-dozhdatsya-otveta-polzovatelya.html)

danik.js 21.02.2014 11:31

kostyanet, ты с каждым комментарием доказываешь что твоя компетенция в программировании стремится к нулю. Твой аппаратный мозг не приемлет парадигмы программирования.

Цитата:

Сообщение от kostyanet
Как видите бывает. Делается на самом деле элементарно через setInterval()

Что должен делать твой setInterval?

Rustam 21.02.2014 12:58

Цитата:

Сообщение от Deff (Сообщение 298692)
1. Тупой бесконечный цикл проверяющий наличие ответа
2. Кто мешает изменить логику, и запускать SaveAction() по завершении
диалога модалки ?

1. То ли я тупой, то ли это не работает :) То есть получить ответ пользователя - не проблема. Проблема дождаться этого ответа, так как метод PreSaveAction() просто прет вперед и возвращает true/false. "Остановить" его у меня получается только confirm'ом или setTimeout'ом. Но confrim не позволяет мне форматировать сообщение, а setTimeout не дает нужной гибкости/отзывчивости.
2) Sharepoint при попытке сохранить элемент вызывает метод PreSaveItem, который вызывает метод PreSaveAction (SaveAction - это он и есть, ошибся немного) если он создан. Таким образом программисту дают сделать валидацию, т.е. достаточно написать свой метод PreSaveAction. Но я не могу изменить порядок его вызова, его аргументы и т.д.


Цитата:

Сообщение от kostyanet (Сообщение 298710)
confirm это модальный диалог, а ваш хтмль никакого отношения к диалоговым окнам не имеет, потому что не окно, а просто кусок хтмл.

Что касается бывших методов совмещения то за злоупотребления очевидно их забанили:





Такая тема уже была, когда некий профессор заявил что на вебе ничего мониторить не надо. Не бывает типа тут 1 раз в секунду опрос кнопки.

Как видите бывает. Делается на самом деле элементарно через setInterval()

"мой хтмль" - самый настоящий модальный диалог. И он не deprecated. Просто это "встроенный" диалог sharepoint'a. Полное наименование SP.UI.ModalDialog.showModalDialog. Он может открывать как "настоящую" страницу, так и просто кусок html


Спасибо всем за помощь. Чуда не случилось - javascript не обмануть. Придется подменять кнопку и костылями изменять порядок вызова PreSaveAction()

Aetae 21.02.2014 13:07

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

kostyanet 22.02.2014 05:28

Цитата:

Сообщение от Rustam
Просто это "встроенный" диалог sharepoint'a.

Не все знают об офисных фичах. Я подумал шарипоинт - очередная либа на js для браузера. Оказалось там браузер и рядом не стоял.

С мс связываться опасно. У них там свои понятия по изложению документации в которых разобраться простому смертному за бесплатно не всегда реально.

Дайте ссылку на метод.

kostyanet 22.02.2014 06:11

Цитата:

Сообщение от danik.js
Что должен делать твой setInterval?

Он будет делать callback.

Автору. И еще такая особенность платформ МС - они не популярны. Например чтобы написать простенький скрипт на WScript мне приходится сперва рыться в msdn, ничерта там не поняв шариться с вопросами по инету и там ничего не найдя вообще делать усилие, возвращаться к документации пытаясь вникнуть в ход глубоких мыслей персонала МС.

Ваш вопрос задан ровно 1 раз

http://sharepoint.stackexchange.com/...ialog-response

Ну полтора

http://stackoverflow.com/questions/1...-in-sharepoint

потому без ответа остался.

Выберите другую платформу и полегчает.

kostyanet 22.02.2014 06:15

Кстати, если вы ищите, то подделывайте свою национальность, иначе гугль загадит результаты национальными мифами. Делается так: надо выйти с гугля, убить куки, перейти на com и в адресную строку вписать webhp?complete=0

ruslan_mart 04.03.2014 14:18

Deff, тоже как-то пробовал делать такой вариант с бесконечным циклом и вот что скажу: лучше не делать так, браузер начинает виснуть, да и как-то не правильно это.


Часовой пояс GMT +3, время: 19:36.