1

我有以下 JavaScript 代码可以在 Internet Explorer 中弹出一个窗口。该代码是从 Microsoft CRM 模式对话框中的页面执行的。(RequestID 是一个在测试系统中始终相同的字符串 - 目前它包含“abcdefg” - 没有引号)。

var cancelUrl = "CancelRequest.aspx?RequestID=" + RequestID;
alert("About to open a window.\n\n" + cancelUrl);
window.open(cancelUrl);
alert("Window opened");

我希望看到一条消息,告诉我我即将打开一个窗口。然后,我希望看到一个打开的窗口,并收到有关该窗口已打开的另一条消息。我真的不在乎最后两个事件的顺序;警报在那里,所以我知道代码已被执行。

我有两台电脑和一台虚拟电脑。全部运行IE7。在 Windows 2003 VPC 上,消息和弹窗每次都会出现。

在 Vista PC 和 WinXP PC 上,消息会出现,但弹出窗口只是间歇性地出现。(我认为这可能也是 Vista PC 上的情况)。

这三个在 IE 中具有相同的设置。所有人都禁用了 IE 弹出窗口阻止程序,并且没有安装其他弹出窗口阻止程序。

任何人都可以对此有所了解吗?

4

3 回答 3

3

啊,我想我明白了......在描述中错过了它......

您正试图从IE的模态对话框打开一个非模态窗口。

这个 AFAIK,不应该工作。

尝试打开另一个模式窗口。

实际上,您是在说...

在窗口 A 上,打开模态窗口 B,现在打开非模态窗口 C,这实际上是无效的。

于 2008-11-07T17:00:47.840 回答
0

这段代码很简单。使用调试器,看看发生了什么。

使用 FireFox 或 Chrome 检查该站点,他们有 JS 调试器。

编辑:

添加 try/catch 块window.open(),看看那里是否有异常。

编辑2:

我现在看到您将字符作为 RequestId 发送。您应该检查该 URL 是否可以处理这种值。由于名称是RequestId我会说应该只有数字参数的可能性很大。如果这是正确的,那么当您尝试打开窗口时可能会发生服务器端崩溃,然后什么也没有发生。设置 try/catch 块和测试的更多理由。

于 2008-11-04T14:15:38.110 回答
0

您可能想尝试适用于 IE 的 Firebug lite。

http://getfirebug.com/lite.html

其他人提到的 try/catch 也是一个好主意。我认为。

此外,弹出窗口是否有可能尝试使用已经打开但已最小化的窗口。所以它似乎没有工作,但它真的只是重新加载最小化的窗口?

于 2008-11-04T16:43:02.727 回答