Pull to refresh
0
0
Кирилл @drtropin

Программист PHP/Perl

Send message
Большое спасибо всем комментировавшим статью! Действительно много более надёжных вариантов решения.
Да, совершенно верно, спасибо!
Но если будет использован двойной слэш это уже не будет последовательность типа \xnn.
Понятно. Большое спасибо за внимание! Отдельное спасибо за ценный совет никогда не защищать собственную идею.
Вирус прописывал смешанную последовательность
@include "\x2fus\x72/l\x6fca\x6c/w\x77w/

Одна из задач была расшифровать и сохранить в читабельном виде в файл.

$inx = '50';
var_dump(chr(hexdec($inx)));

Да, так работает
Предлагается механизм, с помощью которого получен результат. А вот например рекурсия функция ведь вызывает себя неограниченное кол-во раз и это не считается зазорным.
Да, к сожалению проблема лишнего кода имеет место — id диалогового окна, привязка к элементу. При увеличении количества кнопок лишний код. Тем не менее предложенный принцип работает. Предполагаю, что при развитии идеи вполне можно найти решения большинства шероховатостей. Ещё раз говорю, что принцип родился в процессе реализации конкретной задачи и может быть его можно применить не только для диалоговых окон. А Bootbox кто же спорит — безусловно отличный проект.
Добрый день! Да, спасибо! Если бы в своё время его нашёл, скорее всего он и был бы использован. Синтаксис вызова под задачу вполне подходящий. Но тогда придётся ставить в проект Bootstrap. Кроме того в предлагаемой мной реализации имеется полная свобода в оформлении диалогового окна (хоть полностью круглым его сделать), можно добавлять неограниченное кол-во кнопок и прочих элементов управления + шапка. Трёхкнопочное окно кстати в своём проекте использую.

else блок в данном примере отработает 1 раз, т.к. при выборе кнопки «Отмена» повторный клик вообще не запускается. Изначально я разделял результат выбора «Отмена» и «транзитный вызов», но ни в одном из условий мне не понадобилось отмену обрабатывать.

Чтобы «Отмену» обработать пусть она возвращает не 0, а 2
.on('click','.jdCancel', function() {
methods.jdSetAnswer(2,$(this));
});


И придётся жертвовать стандартным синтаксисом вызова.
Например так:
switch($(this).jdDialogs('confirm',0,[...])) {
case 0: return;
case 1:
console.log('ok');
break;
case 2:
console.log('canceled!');
break;
default:
}


Или так:
var cnf = $(this).jdDialogs('confirm',0,[...]);
if(!cnf) return;
if(cnf == 1) {
console.log('ok');
} else {
console.log('canceled!');
}
Noty.js не подошёл мне по синтаксису вызова (это указано в статье в постановке задачи), к тому же он более тяжеловесный. Речь в статье не о «добавил в свой код готовое решение и забыл», а об описании принципа. Плагин — это просто реализация принципа. Функционала данного плагина для замены диалоговых окон в моём проекте оказалось достаточно. Кстати если в confirm нужно обрабатывать cancel, достаточно разделить ответ 0 на Отмену и «транзитный вызов».
Я давно уже читаю Хабру и вполне представляю как относятся к разработчикам, решившим поделиться найденным решением.
Совершенно верно, «перекликивать». Это ни в коем случае не универсальное решение на все случаи жизни. Для простых случаев, а таких задач думаю большинство, if confirm и alert вполне себе работает.
Для более сложных алгоритмов естественно уже не подходит. Хотя и тут можно найти решение. Например по другому селектору инициировать клик. Здесь сознательно я иду на повторное выполнение кода, поэтому на этот факт придётся оглядываться.
Ещё раз повторяю, найденное решение — для определённой ниши задач.
Вот замена для вашего примера:
var project = 'Тестируем';
if($(this).jdDialogs('confirm',1,['Are you ready?',project])) {
$(this).jdDialogs('alert',0,['Yeah!',project]);
}


Или вот так.
var project = 'Тестируем';
if($(this).jdDialogs('confirm',1,['Are you ready?',project])) return;
$(this).jdDialogs('alert',0,['Yeah!',project]);


Не похоже?
Noty.js не подходит. Вызов отличается от if(confirm()) {}. Данный плагин разработан именно для того, чтобы сделать замену стандартному confirm.
Спасибо за совет! Понятно, что есть новые технологии. Здесь решение несколько другой задачи — чуть-чуть подправить действующий проект согласно заданию. А код тем не менее если можно так сказать всё-таки «блокируется». Выводом в return. Для возобновления кода по выбору в диалоговом окне запускается заново, но то же самое диалоговое окно не генерируется, а возвращается «транзитом» выбор пользователя. В этом суть принципа.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity