我有以下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弹出窗口阻止程序,并且没有安装其他弹出窗口阻止程序。
任何人都可以对此有所了解吗?
答案 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也是一个好主意。我想。
此外,弹出窗口是否有可能尝试使用已打开但最小化的窗口。所以它似乎没有工作,但它真的只是重新加载最小化的窗口?