当jQuery包含在文档末尾并在HTML正文

时间:2016-03-02 14:12:52

标签: jquery

我正在尝试优化我的wordpress页面(使用google' paespeedtest)。它说,我应该包括所有我的javascript文件捆绑,缩小和页面底部。 我已经使用W3C Total Cache做到了这一点。它完成了它的工作。

但不幸的是,我的wordpress主题在HMTL体内的内联脚本标签内产生了一些 jQuery() - 调用。由于此时未加载jquery,因此当然 jquery未定义错误。

  • 我可以在我的标题中包含jQuery,但这会降低我的排名。
  • 我可能会调整主题模板(实际上它是我购买主题的插件),但我真的不喜欢这样做

我还有其他选择吗?

在加载jquery之前是否有某种可能性覆盖jquery-function?

更新

排名一词可能被误用了。我的意思是页面速度评分,由于以下原因而减少:

"消除上层内容中的渲染阻止JavaScript。 您的页面有1个阻止脚本资源。这会导致呈现页面的延迟。 在不等待加载以下资源的情况下,无法呈现页面上的上述内容。尝试推迟或异步加载阻止资源,或直接在HTML中内联这些资源的关键部分。 删除渲染阻止JavaScript: http://../ ... 0 / 26f57 / default.include.fde404.js 87e337"

2 个答案:

答案 0 :(得分:0)

最好的选择imo是使用Content Delivery Network并在标题中保留jquery。用户已经缓存了来自CDN的jQuery的可能性很大。这似乎也是works for google's rank

您可以使用jQuery on cdnjs。它可能最受欢迎。

答案 1 :(得分:0)

我找到possible solutions(s) - 无论我喜不喜欢。 有趣的是,它是由stackoverflow开发人员提供的。还讨论了on hacker news

将jQuery推送到页脚

事实证明,对于常见情况,将jQuery推送到页脚非常容易。如果我们想要的是一个很好的$ .ready函数,我们可以在任何地方访问它们,我们可以在没有jQuery的情况下显式定义然后我们可以在加载之后将我们捕获的函数传递给jQuery。 在我们的标题中,我们可以包含以下内容:

window.q=[];
window.$=function(f){
  q.push(f);
};

在我们加载jQuery之后,我们可以将我们捕获的所有函数传递给真正的就绪函数。

$.each(q,function(index,f){
  $(f)
});

这使我们可以在页面的任何位置访问“存根”就绪功能。

<强>更新

This blogpost提供了更好的方法,并对其进行了更深入的解释。