2014-11-05 75 views
2

我在我的网站中有两个页面,都显示一个模式窗体。这些页面正在使用jModal插件,并且一切正常。jquery文档准备得太慢了

我遇到的问题如下。

一页,一切都很好,表现很棒。

在第二页上,一切都是一样的,除了它有一些广告,导致一个小的性能影响。

这个命中是可以接受的,但由此产生的延迟可以让访问者在模态窗口显示之前点击页面上的链接。因此访客可能会错过模式窗口。

代码在$()。Ready中,我相信这是导致问题的原因,因为页面必须等到广告服务器完成广告投放。

我删除了$()。Ready,但是这只是导致代码根本不能执行。

有没有办法锁定页面,直到doc准备好执行?

+0

DOM准备就绪(例如,'$(function(){})'将在* DOM准备好后立即触发*。它不应该等待广告。问题可能是前面的代码延迟了DOM准备好的代码因为它可能没有提早运行,所以将DOM准备好的处理程序移动到广告脚本之前 – 2014-11-05 11:42:17

回答

0

谢谢大家的帮助。

最后,我添加了一个覆盖,快速,简单,没有工作。

1

一种方法是在您的网站上添加一个覆盖图,该覆盖图始终存在,您可以使用$()删除它。准备就绪将会处于最佳状态并且不允许它们点击。

+0

如果你想允许没有JavaScript的人优雅地回落,那么这样的东西也可以放在'noscript'标签中,所以它不会出现的浏览器,从来没有开火'ready'事件 – 2014-11-05 11:41:02

+0

这是使用jQuery的常见问题? – gilesrpa 2014-11-05 11:41:04

1

我会提供这种替代选项,因为它是我通常选择的选项。

文件最初看起来与您的jQuery触发时的区别可以通过样式来模仿。

例如(你的情况),你有链接暴露给用户,同时等待jQuery来隐藏它们(以迂回的方式)。首先用CSS隐藏它们,然后作为初始jQuery的一部分显示它们(一旦它被完全初始化)。

我在用户界面上有一个swiper的问题;我有一个巨大的清单,其宽度将根据swiper插件设置(初始化时)。相反,我只是在我的CSS文件中设置了一个很大的宽度(故意过度补偿),然后让swiper插件做它的东西。一个典型的用户无法分辨。

仍然不是傻瓜,但在这种情况下,CSS比等待jQuery快很多,与其他选项不同,您不需要添加额外的叠加层。

1

将模态窗口放在页面顶部,立即在doc下面准备好