我有一个 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 模式,单击按钮会导致发生两种情况:
- 模式对话框关闭,但是
- 使用与模式对话框相同的 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/