对话框打开时出现奇怪的IE行为

时间:2012-05-29 14:18:23

标签: jquery internet-explorer cross-browser datatables jquery-ui-dialog

这可能是一个难以回答的问题,因为很难证明问题 1

我正在使用datatables + datatables jEditable,但我已经完全改变(并改进了)代码,这样当用户双击表中的一行时,会打开一个带有表单的jQuery UI对话框,您可以在其中编辑该行。它利用一种形式完成两项任务,即添加&编辑。

这在所有浏览器中都很好用,除了你猜对了:IE 我发誓,这是迄今为止IE所见过的最奇怪的行为。

当你双击一行时,对话框不会显示,但是当你打开开发工具(F12)时,它会突然出现。

澄清

  1. 用户打开Internet Explorer(在本例中为IE9,但也会在早期版本中发生)
  2. 用户导航内联网
  3. 用户双击数据表行。没有任何事情发生。
  4. 用户打开开发工具(F12)并关闭它
  5. 用户双击数据表行。对话框打开。
  6. 用户关闭标签并重新打开并再次导航。一切正常。
  7. 用户关闭Internet Explorer
  8. 重复步骤1到8
  9. 令人讨厌的是我无法调试问题,因为一旦打开调试器它就会消失......!

    我原本以为这个问题是因为默认情况下在兼容性视图中打开IE上的Intranet网站,所以我改变了这个设置,希望能解决问题。
    它没有。

    此外,一旦打开开发工具,并刷新页面,就没有错误或任何错误代码的迹象。

    所以... 什么机智?

    1 代码相当复杂,我不知道我是否可以简化它并进行演示。这是在内联网上完成的,所使用的数据是分类的,所以我不允许/不能直接显示给你。

1 个答案:

答案 0 :(得分:5)

这可能不是您烦恼的原因。但我之前看过IE的类似行为。罪魁祸首是代码中的一个迷路console.log。在IE中,window.console在开放工具开启之前不存在,并且在开发工具关闭后继续存在于window。如果您的代码中有一个迷路console.log,则可能会阻止对话框打开,consoleundefined,然后从您尝试调试时开始。

如果您想测试这种可能性但又不想追捕流浪,只需将下面的内容添加到文档的顶部:

if (!window.console) {
  this.console = {
    log: $.noop
  };
}