1

在我们的 CMS 中,我们有一个地方可以让用户玩弄他们的网站层次结构——移动页面、添加和删除页面等。

我们使用拖放来实现移动页面。

每个动作都必须保存在数据库中,并导出为许多 HTML 文件。如果我们每一步都这样做,它会减慢用户的速度。因此,我们认为最好让用户随心所欲地玩耍,将每个更改保存到 DB,但仅在他们离开页面时 - 将更改导出到 HTML 文件。

我们曾考虑让用户在准备好提交更改时单击“发布”按钮,但我们担心用户不会记得这样做,因为从他们的角度来看,一旦他们将页面移动到新地方 - 动作完成。按钮的另一个问题是它与站点其他部分的行为不一致(例如,当用户在页面内移动文本时,更改会自动保存,因为只有 1 个 HTML 文件需要更新)

那么我们如何在离开页面时自动保存用户更改呢?

4

4 回答 4

3

当用户使用 javascript 离开页面时,您应该警告用户。

来自http://www.siafoo.net/article/67

现代浏览器有一个名为 window.beforeunload 的事件,当任何会导致页面卸载的事件发生时都会立即触发该事件。这包括单击链接、提交表单或关闭选项卡或窗口。

访问此页面以获取大多数浏览器中的示例:

http://www.webreference.com/dhtml/diner/beforeunload/bunload4.html

我认为不先询问用户就保存页面是不好的做法,这不是正常网页的工作方式。

样本:

<SCRIPT LANGUAGE="JavaScript1.2" TYPE="text/javascript">
<!--
function unloadMess(){
    mess = "Wait! You haven't finished."
    return mess;
}

function setBunload(on){
    window.onbeforeunload = (on) ? unloadMess : null;
}

setBunload(true);
//-->
</SCRIPT>
于 2008-09-25T11:43:12.930 回答
1

我能想到的最简单的方法是每次用户使用 Ajax 移动项目时存储页面信息(例如,使用 UpdatePanel、onUpdated 事件,让它触发一些更新用户页面配置的脚本。

或者 - .Net 的 WebParts 实现自动执行此操作,无需程序员干预(除非您想更改存储引擎,它默认使用本地 mdb。

于 2008-09-25T11:44:54.967 回答
1

使用“发布”复选框/按钮,当用户以一种导致他们离开的方式与页面交互时,如果未选中该框/未单击按钮,则询问他们是否要发布。请注意,您可能不希望或无法提示用户执行某些操作(关闭浏览器、访问他们的收藏夹菜单等)。

于 2008-09-25T11:47:52.683 回答
1

我会强迫他们点击发布等按钮。那是一个“培训”问题。

在他们离开时自动保存更改可能会产生其他影响。例如,如果用户打开记​​录并玩弄它并且无意更改它,他们会关闭它,例如 word 文档、excel 等。. 我会让你的网站模仿那个模型。

您还必须记住,Web 是一个断开连接的环境,并不要求所有 Web 应用程序都像 Windows 应用程序一样运行。

如果用户没有单击发布/保存按钮,则不会保存更改,这取决于他们记住要做的事情。

于 2008-09-25T12:39:51.263 回答