在加载CGI脚本之前等待页面加载



我正在尝试为连接LAN的设备创建一个页面,该页面将向设备(树莓派(发出关闭命令,并显示一个加载栏,告诉用户在拔下设备之前等待5秒。唯一的问题是,无论我以何种方式执行脚本,它总是在页面有机会加载到客户端之前关闭。

客户端"网站"的首页有一个按钮,上面写着"关闭",当我点击它时,它应该首先加载关闭页面,其中显示加载栏和消息。然后,一旦加载了页面,用户就可以真正看到它,它就应该执行脚本。我不认为Pi必须打开才能使页面保持在屏幕上,也不认为控制加载栏的JavaScript必须打开才能保持,所以我认为页面只是在有机会呈现之前执行了脚本,因此,我收到了一条连接中断的消息,而不是预期的页面。

我尝试了以下方法:

  • 将关闭按钮的表单操作设置为Python脚本,该脚本将打印"位置:http://soandso/shutdown.html然后使用操作系统模块发出"sudo shutdown now"命令
  • 将关闭按钮的表单操作设置为页面本身,然后将带有src属性的脚本标记设置为页面中的脚本位置。我已经在头部和身体底部都尝试过了
  • 为加载栏创建页面超时后使用XMLHttpRequest调用shutdown.py脚本,以确保在页面至少加载之前不会执行该脚本(超时设置是从body onload属性调用的(

这些都不起作用,而且我的连接总是在页面加载之前中断。我还能尝试什么?

我能够通过使用事件侦听器来侦听DOMContentLoaded事件来实现这一点。

document.addEventListener("DOMContentLoaded", function() {
shutdown();
});