【问题标题】:Strange behaviour opening pop-up window in Internet Explorer在 Internet Explorer 中打开弹出窗口的奇怪行为
【发布时间】:2008-11-04 14:06:38
【问题描述】:

我有以下 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");

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

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

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

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

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

【问题讨论】:

    标签: javascript internet-explorer popup microsoft-dynamics


    【解决方案1】:

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

    您正在尝试在 IE从模式对话框打开非模式窗口。

    这个 AFAIK,不应该工作。

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

    实际上你是在说...

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

    【讨论】:

      【解决方案2】:

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

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

      编辑:

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

      编辑 2:

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

      【讨论】:

      • 很遗憾,我无法使用这些浏览器,因为它们不能与 Dynamics CRM 一起使用(除非我遗漏了什么)。
      • 使用了 Visual Studio 2008 调试器。进行了 window.open 调用,但没有任何反应:-(
      • Javascript 或 HTML 可能是 IE 特定的。也许您可以尝试在其中一个浏览器中运行它并导航到有问题的页面。
      • 另一个想法 - 在该代码周围添加 try/catch。将其放入函数并尝试捕获异常。
      【解决方案3】:

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

      http://getfirebug.com/lite.html

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-26
        • 2015-01-12
        • 1970-01-01
        相关资源
        最近更新 更多