javascript - IE9、showModalDialog() 和 window.close() - 兼容性 View 的怪癖

标签 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 对话框,但我只负责让它在 IE9 中工作。话虽如此……

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

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

它被分配了一个事件来关闭模式对话框:

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

在 IE9 中,非兼容 View 模式,单击按钮会导致发生两种情况:

  1. 模式对话框关闭,但是
  2. 使用与模式对话框相同的 URL 启动第二个全屏窗口。

当完整窗口中的“取消”按钮不再包含在模式对话框窗口中时,它现在可以正常工作,但无论什么提示 IE 启动它都是意外行为。

在 IE9 中,启用兼容性 View 模式,单击该按钮将完全执行其应有的操作。

  • 我是否做过一些 jQuery 或 IE 方面的事情,这些事情在 IE9 中会中断,而在 IE 6、7 或 8 中却可以正常工作?

最佳答案

这次我很幸运。 IE9 显然关心 type <button>的。在这种情况下,IE9 将其视为提交按钮。 “提交”行为导致在模式对话框之外加载一个单独的页面。

将按钮更改为:

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

解决了问题。

关于javascript - IE9、showModalDialog() 和 window.close() - 兼容性 View 的怪癖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8347769/

相关文章:

Javascript-使用 CSS 不透明度信息

internet-explorer - IE9 阻止下载跨域网页字体

javascript - jQuery 的 :hidden selector not working in IE9 Quirks Mode

CSS 文本位置 IE/FF 问题

HTML 布局、ASP.Net、浏览器差异......必须有更好的方法

javascript - JS 结果集转 JSON

javascript - setInterval() 中的 .load 调用只工作一次

javascript - 使用 Node 框架运行简单的 javascript 时出错

.net - 向 Internet Explorer 9 添加按钮

javascript - 获取客户端浏览器的名称