IE9,showModalDialog()和window.close() - 具有兼容性视图的怪癖

时间:2011-12-01 20:23:41

标签: javascript internet-explorer-9 cross-browser

我有一个ASP.NET 3.5网站项目。在其中存在页面(A);在此页面中有一个<iframe>加载另一个页面(B)。从B开始,通过此函数启动模态对话框:

function ShowDialogLookup(anchorDiv) {
    // anchorDiv is div element with some data properties
    var result = window.showModalDialog($(anchorDiv).data('popup-url'), window, "dialogHeight: 300px; dialogWidth: 500px");
    return false;
}

免责声明:我希望能够重写一次,以便在模式模式下使用jQuery Dialog,但我只负责让它在IE9中运行。所以说...

在此弹出窗口中,显示的页面包含“确定”和“取消”按钮。 “取消”按钮只是:

<button class="lookup-cancel">Cancel</button>

为其分配一个事件来关闭模态对话框:

$('.lookup-cancel').button().click(function() {
    window.close();
});

在IE9中,非兼容性视图模式,点击该按钮会导致两件事情发生:

  1. 模态对话框关闭,但
  2. 使用与模态对话框相同的URL启动第二个全帧窗口。
  3. 完整窗口中的“取消”按钮现在可以正常工作,当它不再包含在模式对话框窗口中时,但是提示IE启动它的任何内容都是意外行为。

    在IE9中,启用了兼容性视图模式,单击该按钮可以完全按照预期进行操作。

    • 我有没有做过jQuery或IE-wise,在IE9中打破了IE 6,7或8?

1 个答案:

答案 0 :(得分:2)

我很幸运。 IE9显然关心type的{​​{1}}。在这种情况下,IE9将其视为提交按钮。 “提交”的行为导致单独的页面加载到模态对话框之外。

将按钮更改为:

<button>

解决了这个问题。