2

我需要打开一个跨域内容的弹出窗口。在我完成子窗口之前,我不应该允许用户访问或关闭父窗口。

模态窗口的主要问题是停止在主窗口上运行的任何异步进程。例如,计时器和自动刷新不会在父窗口中工作。

有没有什么完美的方法可以做到上面所说的。

提前致谢

4

6 回答 6

2

不如不弹出一个实际的窗口,而是打开一个伪窗口……那是一个带有一些边框的 div,如果你愿意,可以让它可拖动,然后放置一个覆盖页面其余部分的大半透明 div并阻止它被点击。基本上做一些类似灯箱工作的事情

于 2008-09-19T22:40:22.477 回答
1

You could use a fake window built via javascript. Several widget libraries have support for this. For example, see ExtJS, which also supports modal windows but it might be overkill for your application. For jQuery, browse through the plugins, like this one

于 2008-09-19T22:55:55.687 回答
0

如果您在 ASP.Net 上工作,我认为 Telerik 可以对此进行控制。正如@Davr 建议的那样,在其实现中使用 div 。无论如何,模态窗口是一个糟糕的选择,因为并非所有浏览器都支持它们。

于 2008-09-19T22:49:49.337 回答
0

除了 Davr 和 thorinn 所说的之外,您可能还需要进行 Ajax 调用来获取内容。由于通过浏览器进行的 Ajax 调用强制执行同域策略,因此您需要对 OWN 服务器进行 Ajax 调用,而后者又需要发出 xmlhttp 服务器到服务器请求以获取第三方的内容服务器。

于 2008-09-19T23:31:10.530 回答
0

由于以下原因,我觉得上述答案不适合..

JasonS 解决方案 - 该应用程序是基于 J2EE 技术开发的。

其他的解决方案——子窗口中启动的一些URL会通过标准API与父窗口通信。如果我使用 div 或其他内置插件窗口,那么那些 javascript API 将失败。

于 2008-09-20T22:11:51.010 回答
0

查看“BlockUI”中的 Jquery 插件。当 BlockUI 被调用时,父窗口是不可访问的。你可以在模态框上做你想做的事,然后调用“UnblockUI”来关闭弹出窗口并再次给予父控制。

皮特

于 2009-04-07T22:54:49.427 回答