【发布时间】:2018-03-22 23:01:33
【问题描述】:
所以在标题中有点难以解释。从技术上讲,脚本正在按顺序执行,但在执行下一个函数之前不会等待下一个函数完成。有没有办法做到这一点?
<form action="" method="POST">
<input type="submit" style="background:transparent;border:0;color:#ffffff;" name="approve" id="approve" value="approve shipment" />
<input type="hidden" name="ShipmentDigest" value="<?php echo $responseArray['ShipmentConfirmResponse']['ShipmentDigest']['VALUE']; ?>" />
</form>
Javascript:
<script>
document.getElementById('approve').click();
setTimeout(function(){
window.print();
},2000);
close();
</script>
所以基本上我正在生成一个 UPS 标签,然后在if ($approve == 'approve shipment') 上生成标签并下载到服务器,我希望它弹出供用户打印,然后不管选择“打印”或“取消”关闭该弹出窗口。
问题是该按钮是一个表单提交,然后重新加载页面,如果我删除 close();,脚本将继续执行现在,脚本将单击 approve 按钮,然后启动计时器,然后在时间结束之前关闭。如果我将代码更改为在等待中使用close();,它只会一直点击approve,并且永远不会让计时器运行:
<script>
document.getElementById('approve').click();
setTimeout(function(){
window.print();
close();
},2000);
</script>
【问题讨论】:
-
使用 AJAX,因此您的打印发生在您的服务器响应之后。确保你
formElement.addEventListener('submit', function(eventObj){ eventObj.preventDefault();})或formElement.onsubmit = function(){ return false; };
标签: javascript