这可能不是一个复杂的问题,但是我不确定我是否在正确的轨道上。
我的目标是首先运行JavaScript函数,并在执行完全完成时(这可能需要花费几秒钟,但并非总是如此),然后关闭窗口。
仅通过一个按钮即可触发功能和关闭:
<button id="myID">Click me</button>
JavaScript是:
<script type="text/javascript">
function someFunction() {
// do some stuff
}
document.getElementById('myID').addEventListener("click", function(){
someFunction();
window.close();
});
</script>
这很好用,但是如果这不是一种可靠的方法,可以让任何人提供一些建议吗?重要的是,必须在触发 window.close()之前完全完成功能的执行。
答案 0 :(得分:4)
您可以将window.close()
放在alert();
下。但是,如果您想添加更多异步内容,则需要这样的回调函数。
<script type="text/javascript">
var closeWindow = function() {
window.close();
};
function someFunction(callback) {
alert('hi');
callback();
}
document.getElementById('myID').addEventListener("click", function(){
someFunction(closeWindow);
});
</script>
答案 1 :(得分:2)
同步javascript将始终按自上而下的顺序运行,并且始终保证第一条指令将在第二条指令之前完成。
但是,还有一个异步部分(您在这里没有它,但是例如ajax请求通常是异步的),它以不同的方式执行,并且需要callbacks / promises。
答案 2 :(得分:0)
您的选择是:
window.close();
放入回调函数答案 3 :(得分:0)
someFunction()在页面加载后执行一些DOM操作
那是同步的(浏览器可能会延迟渲染,但是此处讨论的是毫秒),因此可以确保在函数返回之前完成DOM操作。