【问题标题】:ReferenceError: Can't find variable: _e_0uWl - Browser "breaks"ReferenceError:找不到变量:_e_0uWl - 浏览器“中断”
【发布时间】:2013-04-22 16:06:46
【问题描述】:

我们在 Safari 6.0.4 上遇到了一个非常奇怪的问题:

用户可以愉快地在我们的页面上冲浪,突然他们在我们所有的页面上都得到了这个:

ReferenceError:找不到变量:_e_0uWl

其他网站仍然可以正常工作。唯一的解决方法是重新启动 Safari。
该网站是用jquery等建立在asp.net上的。 我们搜索了所有代码,找不到任何可以引用的内容:_e_0uWl

所有扩展都被禁用。
让我感到困惑的是,这不仅仅是发生在页面上,如果你移开它,它会再次起作用,不,一旦它被破坏,它就会一直被破坏。什么可以让浏览器做到这一点?

更新:这种情况又发生了几次,但变量名不同:

ReferenceError: Can't find variable: _e_028Y

我们甚至在 Windows 机器上使用 Firefox。所以这不仅仅是 Safari 的问题。

规格: IIS7 上的 ASP.NET 4.5,带有用于捆绑和缩小的 MS 优化框架。 jQuery 1.9.2,Micosoft Ajax 控制工具包。

【问题讨论】:

  • 您是在使用用户控件,还是可能在页面请求上创建动态名称的 asp 控件?
  • 我们正在使用用户控件,但是在扫描页面时我们无法在任何地方找到该变量。而且我不认为 asp.net 每天都会对变量进行不同的命名。
  • 哦,您是否使用类似 asp 的输出缓存来缓存整个页面和/或特定的用户控件?变量名看起来肯定是系统生成的。
  • 没有缓存,除了 javascript 文件的捆绑。但是我们确实遍历了所有这些,找不到对变量的任何引用。为什么这会突然发生,然后就一直存在?我们系统中的所有页面。
  • 在 Safari 开发者工具中,单击按钮以“暂停所有异常”,这应该会将您带到代码中的问题区域。如果是缩小的库,可以美化打印后再试。

标签: javascript safari referenceerror


【解决方案1】:

作为一个非常快速的分析:

  • 这发生在几个浏览器上,所以这不是浏览器错误,而是代码错误。

  • 该变量在您的代码中没有硬引用,因此 a) 它是在您的代码被缩小/混淆时生成的(代码是否被缩小了?)或 b) 变量是在运行时请求的,但确实如此在您的代码中的任何地方都不存在,因此错误或 c)它在某个外部库中。你用这些吗?

  • 问题在某个时刻出现,然后持续存在。因此,要么a)服务器突然发送以前未发送的特定脚本标签,要么b)服务器突然在所有页面中发送一些数据,导致客户端功能跳闸,或者c)你在本地存储中存储了一些东西,它坏了现在,它将在所有未来的页面重新加载中被破坏。

现在将所有情况一一排除,您可能会找到答案。使用调试器!

【讨论】:

  • 是的,听起来很合理。我们不使用本地存储,除非它发生在 jquery 或 jquery UI 的某个地方。
【解决方案2】:

@我的观点:

首先,如果可能,在@localhost 上运行此代码,无论是否启用调试; 否则在不同的网络服务器或不同的网络场上运行

其次:如果此问题仍然存在,请检查出现问题的页面 需要进行高质量的调试,检查页面是否有用户控件或页面是否有ajax(非阻塞)请求,请一一禁用,最后检查是否有,因为这不能解决,请仔细检查javascripts ,如果有任何缩小或混淆并尝试删除它。

注意:请在相同的运行环境中构建和运行,请删除 deploy/lib 目录中的所有文件并进行干净的构建。

【讨论】:

  • 我们不知道如何重现此错误。所以在 localhost 上运行它不会有帮助。另外,到目前为止,我个人从未有过。由于我们无法重现它,因此逐步禁用所有控件有点困难。如果控件不存在,人们将无法再使用该应用程序...
  • @Remy : 你没有登台和测试服务器
  • 是的,我们有。但是我们不能在命令下重现它。它只发生在用户身上,无法告诉我们具体发生的时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-24
  • 1970-01-01
  • 2014-02-20
  • 2018-04-24
  • 1970-01-01
  • 2016-10-30
  • 2012-03-18
相关资源
最近更新 更多