我正在尝试替换在JS上使用confirm
警报时弹出的基本对话框。 (没有jQuery)
基本上我正在尝试启动一个打开弹出窗口的函数,将我想要运行的命令作为参数传递。然后,该命令将作为onClick
函数添加到相应按钮。
这是一个准系统示例,其中命令可以是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()
是否有效?
我是在正确的道路上还是应该用回调来重建整个事情?
因为我的理解是,通过回调,我需要对确认按钮的每一个响应进行硬编码,而不是像我试图在这里做的那样传递它,这不是一个选项。
答案 0 :(得分:0)
最后我发现,我不得不传递一个包含该函数的var,而不是传递一个字符串 代码现在看起来像这样并且完美地运行:
var command = new Function(string);
function confirm(command) {
openPopup();
popup_button_close.onclick = function(){ closePopup(); };
popup_button.onclick = function(){ command(); closePopup(); };
}
答案 1 :(得分:0)
您可以利用setTimeout()
接受字符串作为完整声明:
function confirm(command) { // as a string "func(p1, p2, ...)"
openPopup();
popup_button.onclick = function(){
setTimeout(command, 10);
};
closePopup();
}
这样你还可以减少代码,因为关闭弹出窗口不需要事件绑定。