【问题标题】:Implications of using multiple interactive popup windows使用多个交互式弹出窗口的含义
【发布时间】:2018-03-30 14:27:41
【问题描述】:

我想出了将元素分离到弹出窗口的想法。使用window.open() 制作一个弹出窗口,在该文档中设置一些元素并添加事件侦听器以服务于原始目的,但作为弹出窗口组件。这一切都行得通,而且似乎创建的窗口是由同一个线程处理的。

这种“技术”是否容易出错? I.g:如果我在弹出窗口中创建一个画布并从中获取 WebGL 上下文,它会完美地工作吗?如果我在那里设置了一堆事件侦听器,我会立即从它们那里得到回调吗?

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

【问题讨论】:

  • Microsoft Dynamics CRM 广泛执行此操作。它非常“实时”。怀疑这会帮助你进一步研究他们的技术,但这是我想到的一个例子。 FWIW,我有两台显示器,但 Dynamics CRM 使用它的所有多个窗口仍然令人沮丧;您仍然需要仔细考虑这些多个窗口是如何工作的,否则它可能最终会比单个窗口 UI 更糟糕。
  • 它是面向公众的网络应用程序还是内部应用程序?换句话说,您可以控制环境?
  • @fruggiero 不,它针对的是普通大众。谈论像 Kerbal Space Program 这样的飞行模拟。
  • @RomanStarkov 谢谢。我一定会使用演示。

标签: javascript web popup


【解决方案1】:

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

另一个可能是您在 javascript 代码中指定的弹出窗口的尺寸可能不受尊重(这是由浏览器自行决定的),因此例如,一个浏览器可以随时在新选项卡中打开弹出窗口或一个新的最大化窗口。

在这里你会发现一些现成的多窗口实验:https://experiments.withgoogle.com/chrome?tag=Multi-Window

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

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

【讨论】:

    【解决方案2】:

    虽然这是非常规的,但它似乎绝对符合您提到的要求。在浏览器支持处理跨窗口的再现或通信时,我没有看到任何问题,只是您需要更加小心您的代码。诸如经常检查以防用户关闭您的弹出窗口(或注册窗口关闭回调以便您可以进行必要的调整)。

    跨窗户的赛事也应该没问题。请参阅http://help.dottoro.com/ljrwrqew.php,它具有将事件回调从一个窗口附加到另一个窗口的完全相同的示例。

    另一个好书是http://www.infimum.dk/HTML/JSwindows.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-13
      • 1970-01-01
      • 1970-01-01
      • 2014-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-24
      相关资源
      最近更新 更多