在加载 CGI 脚本之前等待页面加载?
Wait for Page Load Before CGI Script is Loaded?
我正在尝试为连接 LAN 的设备创建一个页面,该页面将向设备发出关机命令 (a Raspberry Pi) 并显示一个加载栏,告诉用户在拔下电源之前等待 5 秒设备。唯一的问题是,无论我以何种方式执行脚本,它总是在页面有机会加载到客户端之前关闭。
客户端"website"的首页有一个按钮"Shutdown",当我点击它时,它应该首先加载显示加载栏和消息的关闭页面。然后,一旦页面加载完毕,用户可以实际看到它,就应该执行脚本。我不认为 Pi 必须打开才能让页面保留在屏幕上以及控制加载栏的 JavaScript 保留,所以我认为页面只是在它有机会之前执行脚本呈现,因此,我收到连接中断消息而不是预期的页面。
我试过以下方法:
- 将关闭按钮的表单操作设置为打印 "Location:http://soandso/shutdown.html" 的 Python 脚本,然后使用 os 模块发出 "sudo shutdown now" 命令。
- 将关闭按钮的表单操作设置为页面本身,然后将设置了 src 属性的脚本标记放置到页面中的脚本位置。在页眉和正文底部都试过了。
- 在为加载栏创建页面超时后,使用 XMLHttpRequest 调用 shutdown.py 脚本,以确保它不会在页面至少加载之前执行(超时设置为从 body onload 属性调用)。
None 这些工作,我的连接总是在页面加载之前中断。我还能尝试什么?
我能够通过使用事件侦听器来侦听 DOMContentLoaded 事件来完成此操作。
document.addEventListener("DOMContentLoaded", function() {
shutdown();
});
我正在尝试为连接 LAN 的设备创建一个页面,该页面将向设备发出关机命令 (a Raspberry Pi) 并显示一个加载栏,告诉用户在拔下电源之前等待 5 秒设备。唯一的问题是,无论我以何种方式执行脚本,它总是在页面有机会加载到客户端之前关闭。
客户端"website"的首页有一个按钮"Shutdown",当我点击它时,它应该首先加载显示加载栏和消息的关闭页面。然后,一旦页面加载完毕,用户可以实际看到它,就应该执行脚本。我不认为 Pi 必须打开才能让页面保留在屏幕上以及控制加载栏的 JavaScript 保留,所以我认为页面只是在它有机会之前执行脚本呈现,因此,我收到连接中断消息而不是预期的页面。
我试过以下方法:
- 将关闭按钮的表单操作设置为打印 "Location:http://soandso/shutdown.html" 的 Python 脚本,然后使用 os 模块发出 "sudo shutdown now" 命令。
- 将关闭按钮的表单操作设置为页面本身,然后将设置了 src 属性的脚本标记放置到页面中的脚本位置。在页眉和正文底部都试过了。
- 在为加载栏创建页面超时后,使用 XMLHttpRequest 调用 shutdown.py 脚本,以确保它不会在页面至少加载之前执行(超时设置为从 body onload 属性调用)。
None 这些工作,我的连接总是在页面加载之前中断。我还能尝试什么?
我能够通过使用事件侦听器来侦听 DOMContentLoaded 事件来完成此操作。
document.addEventListener("DOMContentLoaded", function() {
shutdown();
});