使用多个交互式弹出窗口的影响

8

我正在考虑将元素分离到弹出窗口中的想法。使用window.open()创建一个弹出窗口,在该文档中设置一些元素并添加事件监听器以服务于原始目的,但作为弹出窗口组件。所有这些都可以正常工作,并且似乎所创建的窗口由同一线程处理。

这种“技术”是否存在漏洞?例如:如果我在弹出窗口中创建一个画布并从中获取WebGL上下文,它会无缝地工作吗?如果我在那里设置了一堆事件监听器,我会立即收到它们的回调吗?

我无法研究这个问题,因为几乎没有人这样做。在我的生活中,我看到许多网站使用弹出窗口进行用户输入,但不用于交互式或实时内容。我正在构建一个复杂的Web应用程序,利用多个监视器将有助于提高用户体验。你知道,至少我知道当拥有两个监视器并且无法同时使用它们时,所有应用程序组件都挤在单个窗口中是多么痛苦。想象一下使用Photoshop的MDI版本,其中所有工具箱都在MDI区域内,您无法将它们从应用程序窗口中取出。一个网页就是这样。


1
微软动态客户关系管理系统在这方面做得非常出色,它非常“实时”。怀疑这不会帮助您进一步研究他们的技术,但这是我想到的一个例子。顺便说一句,我有两个显示器,但使用动态 CRM 仍然可能令人沮丧,因为它有多个窗口;您仍然需要仔细考虑这些多个窗口的工作方式,否则它可能比单个窗口 UI 更糟糕。 - Roman Starkov
这是一个公共面向的Web应用程序还是内部使用的?换句话说,您控制环境吗? - fruggiero
@fruggiero 不是的,它面向普通大众。就像 Kerbal Space Program 这样的飞行模拟游戏。 - user2694310
@RomanStarkov 谢谢。我一定会使用演示。 - user2694310
2个回答

1
虽然这种方法不太常规,但它似乎确实适合您提到的需求。就浏览器支持处理呈现或跨窗口通信而言,我没有看到任何问题,只是您需要更加小心您的代码。例如,频繁检查以防用户关闭了您的弹出窗口(或注册窗口关闭回调以便您进行必要的调整)。
窗口间的事件传递也应该没问题。请参考http://help.dottoro.com/ljrwrqew.php,其中有一个完全相同的示例,可以从一个窗口附加事件回调到另一个窗口。
另一个好的阅读材料是http://www.infimum.dk/HTML/JSwindows.html

0

可能的一个缺点是弹出窗口可能会被浏览器的弹出窗口拦截器阻止(但是,您可以告知用户不要阻止来自您的Web应用程序的弹出窗口)

另一个可能的缺点是您在JavaScript代码中指定的弹出窗口尺寸可能不被尊重(这取决于浏览器),因此例如一个浏览器可能随时在新标签页或新最大化窗口中打开弹出窗口。

在这里,您将找到一些使用多窗口的现成实验:https://experiments.withgoogle.com/chrome?tag=Multi-Window

对于主窗口和弹出窗口之间的数据共享,您不应该有任何问题。

需要记住的是,并非所有浏览器都使用相同的线程模型,因此您必须在您想要支持的所有浏览器上进行一些性能测试并查看差异。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接