Я пытаюсь заменить базовое диалоговое окно, которое появляется при использовании оповещения confirm
на JS. (no jQuery)
В основном я пытаюсь запустить функцию, которая открывает всплывающее окно, передавая в качестве аргумента команду, которую я хочу запустить. Затем команда будет добавлена как функция onClick
к соответствующей кнопке.JS - настраиваемый диалог «подтвердить»
Вот пример Barebone, где команда может быть что-то вроде window.open('location')
или function(par1,par2); function2(par1);
или просто stuff.innerHTML = 'foo'
function confirm(command) {
openPopup();
popup_button_close.onclick = function(){ closePopup(); };
popup_button.onclick = function(){ command; closePopup(); };
}
К сожалению, приведенный выше пример не работает, я думаю, потому что строка не интерпретируется как фактический код , и всплывающее окно закрывается без выполнения команды.
Что вы предложите в качестве наилучшего подхода к этому? Будет ли использоваться eval()
?
Я на правильном пути, или я должен пересмотреть все это с помощью обратных вызовов?
Поскольку я понимаю, что с обратными вызовами мне нужно жестко запрограммировать каждый ответ на кнопку подтверждения, а не динамически передавать его, как я пытаюсь сделать здесь, и это не вариант.
Я бы рекомендовал сделать 'command' функцию обратного вызова или добавить еще один параметр для обратного вызова. Если 'eval' является решением, что-то, вероятно, неверно. –
Да, я тоже пришел к такому выводу, и на самом деле 'eval()' - это последнее решение, к которому я прибегу, если любой другой вариант не удастся. Во всяком случае, не превращает 'command' в функцию обратного вызова, делая ее фиксированной функцией, а не гибким решением, которое я пытаюсь достичь? – nxet
Нельзя, вы можете передать анонимную функцию, когда вы ее вызываете, 'confirm (function() {/ * do stuff * /});'. –