【发布时间】:2016-02-05 09:01:18
【问题描述】:
我正在尝试替换在 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() 会是一个有效的选项吗?
我是在正确的道路上还是应该用回调重新考虑整个事情?
因为我的理解是,通过回调,我需要硬编码对确认按钮的每个响应,而不是像我在这里尝试做的那样动态地传递它,这不是一个选择。
【问题讨论】:
-
我建议将
command设为回调函数,或者为回调添加另一个参数。如果eval是解决方案,则可能有问题。 -
是的,我也得出了这个结论,事实上
eval()是我最后的解决方案,以防任何其他选项失败。无论如何,不是把command变成一个回调函数,使它成为一个固定的函数,而不是我想要实现的灵活的解决方案吗? -
不应该,你可以在调用时传递一个匿名函数,
confirm(function() { /* do stuff */ });。 -
避免 window.open 并在页面内容上使用绝对定位的 div。
-
我无法避免,而且我知道它会导致回调出现问题,新窗口被阻止。
标签: javascript callback popup eval confirm