从磁盘缓存加载时jQuery中断

时间:2017-11-14 16:40:35

标签: javascript jquery caching error-console

我有一个脚本会在表单处理时隐藏提交按钮,以防止多次点击按钮。最近似乎这一直不起作用。

我可以验证每次都加载验证jQuery文件。当我使用从我的服务器或CDN加载的文件时,我没有什么不同。

只有从磁盘缓存加载文件时才会出现错误。我通过在jQuery文件之后添加一个随机版本号暂时解决了这个问题,但我想知道在使用磁盘缓存时可能导致中断的原因是什么?

浏览器控制台列出了此错误:

custom-quote-form:21 Uncaught TypeError: $(...).validate is not a function
    at HTMLDocument.<anonymous> (custom-quote-form:21)
    at j (jquery.min.js:2)
    at Object.fireWith [as resolveWith] (jquery.min.js:2)
    at Function.ready (jquery.min.js:2)
    at HTMLDocument.I (jquery.min.js:2)

首先加载jquery.min.js,然后加载CMS缓存的JS文件,之后是jquery验证文件。

这是脚本

<script> 
    $(function() {
        $("form[name='customBuilder']").validate({
            // remove error label  
            errorPlacement: function(error, element) {},
            rules: {
                fname: "required",
                lname: "required",
                phone: "required",
                company: "required",
                Email: {
                    required: true,
                    email: true
                },
            },
            submitHandler: function(form) {
                $("#loading-img").css("display", "block");
                form.submit();
                var elem = $("#submitMessage");
                elem.css("display", "none");
                setTimeout(function() {
                    elem.css("display", "");
                }, 10000);
            }
        });
    }); 
< /script>

2 个答案:

答案 0 :(得分:0)

A.Wolff让我走上正轨。从jquery验证插件链接中删除了defer =“defer”。它是由CMS自动添加的。

答案 1 :(得分:0)

我在这种设置方面遇到了类似的问题。快速转发,我遵循Dev Tools of chrome的指导方针来提高页面的速度。它已在页面的头部标识了一个渲染阻止脚本(准确的Jquery库文件)。我(在ajax的事件调用中是一个菜鸟)添加了&#34; async&#34;脚本标记内的标记以异步方式加载它。

现在新问题到了,当我第一次加载页面时一切正常。但是对于一些随机的后续重新加载打破了javascript,因为我以异步方式加载每个javascript文件,并且一些也从磁盘缓存加载。所以我决定找到一些其他的优化方法,而不是将其加载到&#34; async&#34;方式。