0

我去年创建了一个 ASP.net Web 应用程序。我收到了一个困扰我的错误报告。

有一个 HTML SELECT 元素出现在所有用户的网页中。OPTION 元素是使用 jQuery 填充的。它们没有data-属性或任何不寻常的东西,只有内部文本和value属性。

我收到(并复制)的错误报告说程序挂起并且“停止运行这个脚本?” 当用户单击 SELECT 元素时出现消息。我能看到这个用户和其他用户之间唯一不同的是,对于这个用户,SELECT 元素包含近 2000 个选项。但是,我不知道这会导致“停止运行此脚本吗?” 要出现的消息。

据我所知,SELECT 上的 .click 处理程序没有附加任何事件,但不知何故,每次单击它时都会运行一堆 JavaScript。

我尝试在我为页面编写的整个 .js 文件中插入断点,但在这种情况下没有一个断点被击中。当用户单击 SELECT 元素时,如何找到正在运行并导致程序挂起的代码?

顺便说一句,我相信我的用户正在使用带有 on 选项的 IE8 来升级或使用任何其他浏览器。

更新以回应评论:明确地说,我确信有一些 JavaScript 代码导致程序挂起和“停止运行这个脚本?” 要出现的消息。问题是我无法准确找出导致问题的代码。

提出问题的更简洁的方式是,“什么时候停止运行这个脚本?” 消息出现在 IE8 中,有什么方法可以找出消息出现时解释器正在阅读的 JavaScript 代码的哪个位置?”

4

2 回答 2

1

可能的原因可能是

  1. 用户安装了一些插件来监视 SELECT 更改
  2. 用户正在运行 IE 调试器。这会使脚本变慢

IE JavaScript 引擎也很慢

** 您应该考虑将 SELECT 更改为jQuery 自动完成或类似的东西。

于 2013-01-07T18:17:46.970 回答
0

我想我可能已经弄清楚了。

我认为我的问题的答案是使用 Internet Explorer 内置调试​​器中的“Break All”功能。这停止了​​ jQuery 事件处理代码中的脚本。似乎不知何故,这里有大量事件被触发,即使我不相信任何事件都附加到 OPTION 元素。

经过进一步研究,发现问题与我在页面上使用 jQuery-UI 的方式有关。SELECT 恰好位于 jQuery-UI 对话框中。按照我在此处找到的建议:(http://stackoverflow.com/questions/3239841/jquery-ui-dialog-slow),我将对话框的可拖动属性设置为 false,它现在可以正常工作了!

于 2013-01-07T18:15:22.840 回答