Javascript 我在尝试延迟Jquery时遇到一个类型错误,如何克服这个问题?
我的问题基于这个主题: 我用了那篇文章的第一个答案,结果很好。。主要地我得到一个TypeError:成功不是FF Firebug控制台、FF开发控制台和Chrome开发控制台中的函数。我想问Dan Atkinson关于成功函数的解决方案,但由于50 rep,我无法发表评论,所以这是一个单独的问题 以下是我当前的脚本,因为其中包含一些敏感信息:Javascript 我在尝试延迟Jquery时遇到一个类型错误,如何克服这个问题?,javascript,jquery,Javascript,Jquery,我的问题基于这个主题: 我用了那篇文章的第一个答案,结果很好。。主要地我得到一个TypeError:成功不是FF Firebug控制台、FF开发控制台和Chrome开发控制台中的函数。我想问Dan Atkinson关于成功函数的解决方案,但由于50 rep,我无法发表评论,所以这是一个单独的问题 以下是我当前的脚本,因为其中包含一些敏感信息: (function() { function getScript(url, success) { var script = document.cr
(function() {
function getScript(url, success) {
var script = document.createElement('script');
script.src = url;
var head = document.getElementsByTagName('head')[0],
done = false;
script.onload = script.onreadystatechange = function() {
if (!done && (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete')) {
done = true;
success();
script.onload = script.onreadystatechange = null;
head.removeChild(script);
}
};
head.appendChild(script);
}
getScript('http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js', function() {
// YOUR CODE GOES HERE AND IS EXECUTED AFTER JQUERY LOADS
{% if template contains 'product' %}
jQuery(document).ready(function($) {
$("a.zoomer").fancybox({
padding: 0,
'titleShow': false,
overlayColor: '#000000',
overlayOpacity: 0.2,
fitToView: false,
autoSize: false,
height: 1500
});
}); {% endif %}
// script truncated
});
})
})
我在试图将脚本放入{code tags}时遇到了很多麻烦,因此如果没有后期验证器给我一个警告,我无法将整个脚本放到过去。它可能是嵌套在脚本中的液体代码
以下是我收到的错误的一些屏幕截图:
我需要推迟jQuery和所有相关脚本,以提高Google页面速度。它说我们需要删除渲染阻塞脚本,其中之一就是jQuery
我试图消除成功;这使得整件事都不起作用。我尝试了丹·阿特金森在他的评论ifsuccess&&getClass.callsuccess=='[object Function]'{success;}中所说的,但我认为我做得不对
谁能告诉我成功有什么问题吗;部分?成功是getScript的第二个参数。但您并没有为大多数getScript调用提供第二个参数
如果希望success参数为可选参数,请更改:
success();
致:
布兰登,@Dan Atkinson的成功论证方法有什么问题?ifsuccess&&getClass.callsuccess='[object Function]'{success;}您所说的消除了第二个脚本块上的错误,该脚本块刚刚引用了一组外部脚本。我保留了引用jQuery的第一个块,只保留了“success;”部分我这样做对吗?很难说没有看到你看到的错误。很可能您没有定义getClass。当然,按你的方式保存是可以的。虽然实际上您只需要定义一次getScript并将其用于两个块,但具体如何做到这一点超出了本问题的范围。。。
success();
success && success();