Executing a function passed as an argument in Javascript?
I'm trying to write a generic function that wi开发者_如何学运维ll block out the UI while an AJAX call is made. What I'm trying to do is have a function A run any other function passed in as an argument. This is what I've got so far:
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);
}
Now when it comes time to eval the function, nothing seems to happen. Is eval not the correct way to force a function to run?
No, eval is used to turn a chunk of "string" into JavaScript code at runtime. Simply call fn()
. It's a function reference.
This is what eval does:
var myalert = "alert('test');";
eval(myalert);
Equivalent to:
eval("alert('test');");
Just use fn();
If fn
is being passed as an object and not a string, calling fn()
should work.
Why not simply use:
fn();
Instead of eval
.
精彩评论