我有一个带有onclick事件的输入按钮:
<input id="bSave" type="button" name="bSave" value=Save
onclick="save();window.close();">下面是save函数
function save(){
//do some calculation
calculate();
//submit a form in this popup window
document.RCSARiskAssessDimenResultForm.submit();
//call parent opener to submit another form in parent window
window.opener.document.RiskControlAssessmentDetailForm.bSave.onclick();
}在我的装有win7/ie8的PC上,提交请求已经发送并完成,没有任何问题。但是在使用xp/ie6的客户端环境中,有时(并不总是)第一个提交就不会被发送。似乎调用了window.close()或其他未知原因(网络延迟?)。
任何类型的建议(信息)都将是感恩的。
发布于 2011-06-21 16:29:52
当你确定你的提交已经完成时,你应该放入你的window.close()。通常以回调的形式出现。这样你就可以控制发生的事情了。
Javascript只有一个线程,它看起来像是顺序的,但它不是。如果您的提交具有对服务器的调用,或者使用setTimeout或setInterval,则开始执行一些异步操作,并调用下一条JS语句。
可能是因为IE6有一个更脆弱的实现,它需要更多的时间来做一些事情,并揭示出一个问题,对于其他连接速度很慢的浏览器,你也可能会遇到这个问题。
发布于 2011-06-21 16:28:45
为此,您必须使用回调函数。
请参见以下示例。
function celebrate(){
//your celebrate code here
}
function run(){
//your run code here
}
function compete(){
run();
celebrate();
}在上面的例子中,您有时会看到,由于javascript运行时的性质,庆祝将在run函数之前或之后调用。
边跑边庆祝是失败的。
function run(callbackFunction){
//your run code here
//execute the callback
callbackFunction();
}
function celebrate(){
//your celebrate code here
}
function compete(){
run(function(){celebrate();});
}这可以确保你在跑步时不会庆祝。
干杯。
https://stackoverflow.com/questions/6421983
复制相似问题