在Internet Explorer中打开弹出窗口的奇怪行为

时间:2008-11-04 14:06:38

标签: javascript internet-explorer popup microsoft-dynamics

我有以下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弹出窗口阻止程序,并且没有安装其他弹出窗口阻止程序。

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

3 个答案:

答案 0 :(得分:3)

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

尝试在 IE 中的模态对话框中打开非模态窗口

这个AFAIK,不应该工作。

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

有效地说你......

窗口A上的

,打开模态窗口B,现在打开非模态窗口C,这是非常有效的。

答案 1 :(得分:0)

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

使用FireFox或Chrome检查该网站,他们有JS调试程序。

修改

window.open()周围添加try / catch块,看看是否存在异常。

编辑2:

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

答案 2 :(得分:0)

你可能想尝试一下适用于IE的Firebug lite。

http://getfirebug.com/lite.html

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

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