我正在尝试编写一个通用函数,它会在进行AJAX调用时阻塞UI。我要做的是有一个函数A运行作为参数传入的任何其他函数。这是我到目前为止所得到的:
function blockWhileLoading(fn, msg)
{
if (msg == null)
{
msg = 'Please wait while the next page is loaded...';
}
$.blockUI(
{
message: '<h1>' + msg + '</h1>',
css:
{
border: 'none',
padding: '15px',
backgroundColor: '#E3D9BA',
'-webkit-border-radius': '10px',
'-moz-border-radius': '10px',
color: '#4D2612'
}
});
$('body').scrollLeft(0);
setTimeout(function()
{
eval(fn);
$.unblockUI();
}, 1000);
}
现在到了评估函数的时候,似乎什么也没发生。 eval不是强制函数运行的正确方法吗?
答案 0 :(得分:5)
不,eval用于在运行时将一大块“string”转换为JavaScript代码。只需致电fn()
即可。这是一个功能参考。
这就是eval的作用:
var myalert = "alert('test');";
eval(myalert);
相当于:
eval("alert('test');");
答案 1 :(得分:4)
只需使用fn();
答案 2 :(得分:0)
为什么不简单地使用:
fn();
而不是eval
。
答案 3 :(得分:0)
如果fn
作为对象而不是字符串传递,则调用fn()
应该有效。