2011-12-01 51 views
0

我有一个ASP.NET 3.5网站项目。其中存在一个页面(A);在这个页面中有一个加载另一个页面(B)。从B,模态对话框通过此功能推出:IE9,showModalDialog()和window.close() - 具有兼容性视图的怪癖

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,非兼容性视图模式,点击按钮导致两个事情发生:

  1. 模态对话框关闭,但
  2. 推出第二,全框架窗口使用与模态对话框相同的URL。

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

在IE9,启用兼容性视图模式时,单击该按钮完全符合它的设想。

  • 我做了一些jQuery或IE浏览器在IE9中打破了IE6,7或8的工作?

回答

2

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

更改按钮:

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

解决的问题。

+0

IE 10仍然存在相同的问题,并且修复了相同的问题。 –