使用多个交互式弹出窗口的含义

时间:2017-10-18 16:21:59

标签: javascript web popup

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

这是"技术"什么机会容易出错? I.g:如果我在弹出窗口中创建一个画布并从中获取WebGL上下文,它会完美地工作吗?如果我在那里设置了一堆事件监听器,我会毫不拖延地从它们那里得到回调吗?

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

2 个答案:

答案 0 :(得分:1)

虽然这是非传统的,但它绝对符合您提到的要求。在浏览器支持处理窗口中的移植或通信方面,我没有发现任何问题,只是您需要对代码更加小心。如果用户关闭了您的一个弹出窗口(或者注册窗口关闭回调以便您可以进行必要的调整),可以进行频繁检查。

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

另一个好的读物是http://www.infimum.dk/HTML/JSwindows.html

答案 1 :(得分:0)

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

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

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

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

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