处理Web应用程序中的多个窗口和/或选项卡的最佳做法是什么?给定方法的优缺点是什么?
我不是在寻找指定特定框架解决方案的答案。最佳实践应该适用于所有基于HTTP / HTML的Web应用程序,无论它们是ASP,.NET,Java Servlets,Struts,JSF等等。
假设:
应用程序无法阻止用户打开新窗口和/或标签
HTTP / HTML(某些框架如何或如果它生成应该无关紧要)。不是Flex,Flash等
应用程序是否应尝试检测(可能通过随机数或其他技术)已打开新窗口和/或选项卡并显示一些错误消息?
如果应用程序允许使用新窗口和/或标签,那么需要注意哪些陷阱(表单提交)以及如何处理?
答案 0 :(得分:3)
我认为最重要的是避免使用“长期持久”的可变会话数据(数据会比将数据传输到下一页所需的实例更长时间停留)。这是我在多个标签中看到的最大挑战。我喜欢做的是在会话中存储数据,然后将这些数据“序列化”到页面中。当我再次需要这些数据时,我会从页面中获取它,然后将其存储在会话中。这可以防止用户其他打开的页面更改数据。
您的应用程序不应该关心打开的多个标签。选项卡范例是在假设页面是页面的情况下开发的。最重要的事情是了解您正在实现页面的技术(可能在全局级别共享数据)并将页面构建为线程安全的(因为从技术上讲,每个页面请求都是一个线程)。