所以我基本上在网站上有一个WYSIWIG编辑器。
我希望能够判断用户当前是否正在编辑某个页面,以防止其他用户在“忙碌”时输入该页面。
我实现了一个在mySQL中标记文章繁忙的系统。当用户进入页面进行编辑时,它会将其标记为忙碌,并且通过将函数绑定到 window.onbeforeunload 来取消标记。
但是,如果页面意外关闭,则不会调用window.onbeforeunload,例如浏览器崩溃或强制关闭。这导致一些文章在不应该被标记为忙时。
有没有更合适的方法来实现它?
答案 0 :(得分:3)
如果页面定期(例如每10秒一次)请求" keepalive"页面(包括URL中的当前时间,因此页面不会被缓存!),并且最后一个时间戳保存在数据库中,然后您可以超时 - 任何"打开"没有" keepalive"的网页要求,比方说,30秒,可能不再开放。
答案 1 :(得分:1)
也许最便携的方式是将页面标记为"忙碌"加载编辑页面时,经过一段时间(可能是3分钟)后取消标记。然后,每隔一分钟发出一次AJAX请求,以更新忙碌标记。这样,只要页面打开并且正在进行AJAX请求,页面就会标记为忙碌。
如果浏览器支持,您仍然可以保持onbeforeunload事件处理程序取消标记页面,但如果浏览器不支持,那么它将在用户关闭页面后的3分钟内取消标记。