代码之家  ›  专栏  ›  技术社区  ›  BlackWasp

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

  •  1
  • BlackWasp  · 技术社区  · 16 年前

    我有以下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。在Windows2003vpc上,每次都会出现消息和弹出窗口。

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

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

    有人能解释一下吗?

    3 回复  |  直到 10 年前
        1
  •  3
  •   scunliffe    16 年前

    啊,我想我明白了…在描述中漏掉了…

    你是 尝试打开非模态 窗口 从模式对话框 在里面 工业工程 .

    这个阿飞,不应该工作。

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

    实际上你是在说…

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

        2
  •  0
  •   zendar    16 年前

    这个代码很简单。使用调试器并查看发生了什么。

    用firefox或chrome检查那个站点,他们有JS调试程序。

    编辑:

    在周围添加try/catch块 window.open() 看看是否有例外。

    编辑2:

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

        3
  •  0
  •   Jack    16 年前

    你可能想试试FirebugLite,它对IE很有用。

    http://getfirebug.com/lite.html

    其他人提到的尝试/捕获也是一个好主意。我想。

    此外,弹出窗口是否有可能试图使用已打开但最小化的窗口。所以它看起来不起作用,但实际上只是重新加载最小化窗口?