我正在使用 jQuery 来为一些 DOM 元素设置动画,但我希望页面在动画完成时重新加载,所以我尝试了以下方法:
function childDisablePopup()
{
$("#popup2",window.parent.document).animate({
width: "0px",
marginLeft: 0
}, "fast",
function()
{
$("#popup2",window.parent.document).animate({
height: "0px",
marginTop: 0
}, "fast",
function()
{
$("#backgroundPopup",window.parent.document).fadeOut("fast",
function()
{
$("#popup2",window.parent.document).remove();
window.location.reload(true);
});
});
});
}
但是,当动画完成时,而不是重新加载页面,我收到此错误:
uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMLocation.reload]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: etc...]
发生什么事了?页面重新加载不能放在 function(){} 闭包中吗?
注意:浏览器:firefox 3.6.8。
受众浏览器:firefox 3+、chrome、safari 5+
注意:我还尝试了 window.location.reload(true);
,它返回了相同的错误,并且我尝试了 window.location.href=window.location.href
返回:
uncaught exception: [Exception... "Component returned failure code: 0x80004003 (NS_ERROR_INVALID_POINTER) [nsIDOMLocation.href]" nsresult: "0x80004003 (NS_ERROR_INVALID_POINTER)" location: "JS frame :: etc...]
最佳答案
window.location.reload()
不接受任何参数,与调用 JavaScript 函数不同,在调用浏览器 API 函数时,浏览器对可以/的参数数量非常严格。必须传递给函数。
编辑:感谢 OP 指出这一点,Firefox 至少允许将一个参数传递给 reload()。 (参见http://developer.mozilla.org/en/window.location)
关于Javascript 在闭包/匿名函数中重新加载页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3408440/