【问题标题】:jquery throws "Uncaught RangeError: Maximum call stack size exceeded "jquery 抛出“未捕获的 RangeError:超出最大调用堆栈大小”
【发布时间】:2013-02-28 22:18:29
【问题描述】:

当有人点击我网站上的某个链接时,我正在使用FancyBox2-Rails 打开一个小窗口/对话框。

这是简单的视图:

:javascript
$(document).ready(function() {
  $("a.iframe").fancybox();
});

...

%li
  = User_name
  = link_to 'Click me', "http://www.google.com", :class => "iframe"

...

但我不断收到此错误:

Uncaught RangeError: Maximum call stack size exceeded jquery.js:2868
jQuery.event.remove jquery.js:2868
jQuery.event.remove ....
.......

谁能告诉我发生了什么?

谢谢

【问题讨论】:

  • 你有没有可能把生成的页面扔进小提琴?
  • 您能说得更具体些吗? (有很多源文件......我不确定我应该在这里发布哪些)

标签: javascript ruby-on-rails fancybox-2


【解决方案1】:

最近经常这样,你在用 twitter bootstrap 吗?

https://github.com/twitter/bootstrap/issues/6862

Twitter Bootstrap 3.2 破坏了 Fancybox,fancybox 支持已经表示他们不会修复它,所以它主要是一个 javascript 问题而不是 rails

如果你使用的是 Twitter Bootstrap 3.2 或类似的东西


关注github link上的问题,似乎有解决办法

更改第 794 行中的代码 (bootstrap.js)

.on('.dropdown-menu', function (e) { e.stopPropagation() })

为此

.on('touchstart.dropdown.data-api', '.dropdown-menu', function (e) { e.stopPropagation() })

【讨论】:

  • dropdown.js 上,将 .on('.dropdown-menu', function (e) { e.stopPropagation() }) 替换为 .on('click. dropdown-menu', function (e) { e.stopPropagation() }) 在这里检查线程:github.com/twitter/bootstrap/issues/6862
  • 我的项目目录中没有bootstrap.js 这样的文件...所以也许这不是问题。不过谢谢你的回答
  • 其实我收回了。当我从我的浏览器中执行Inspect Element 时,bootstrap-dropdonw.js 文件出现在Resources 中。但它是只读的。如何编辑它?
  • 您必须更新您的源代码,我不确定您是如何将 twitter 引导程序加载到您的应用程序中的,也许您将它作为 gem,但您可以下载 .css和 .js 来自 twitter 引导程序的文件并将其放在您的 /assets 目录中,然后您可以在那里进行更新。
  • 对,我将引导程序加载为 gem。 (而且我不确定人们为什么要这样做,而不仅仅是下载 .css 和 .js 文件)
猜你喜欢
  • 2013-05-17
  • 1970-01-01
  • 2012-08-15
  • 2012-03-30
  • 2018-01-24
  • 1970-01-01
  • 2014-08-01
相关资源
最近更新 更多