javascript - 切换到 JS Defer 转换 jquery ajax 重新加载整个页面

标签 javascript jquery performance jquery-deferred

为了提高网站的性能,我更新了我的 javascript 引用以使用 defer,例如:

<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous" defer></script>
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.16.0/jquery.validate.min.js" defer></script>
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validation.unobtrusive/3.2.6/jquery.validate.unobtrusive.min.js" defer></script>
<script src="js/plugins.js" defer></script>
<script src="js/main.js" defer></script>

这确实提高了页面加载性能。不幸的是,一个副作用是处理表单发布的 jquery 函数不再使用 AJAX 完成,它尝试重新加载整个页面,这导致仅返回的内容出现在刷新的页面上,而不是仅仅更新 DIV。

代码:

<script>
    $(function () {
        $('form').submit(function () {
            if ($(this).valid()) {
                $.ajax({
                    url: this.action,
                    type: this.method,
                    data: $(this).serialize(),
                    success: function (result) {
                        $('#result').html(result);
                        document.getElementById('contactForm').style.display = "none";
                    }
                });
            }
            return false;
        });
    });
</script>

当脚本延迟时,如何更新此 jquery 代码才能正常工作?

最佳答案

我建议不要在 jQuery.js 引用中使用 defer。 jQuery 插件依赖于首先加载的主 jQuery 库。

While there are ways to get around this坦率地说,在大多数情况下它们都显得笨重且过于复杂。

关于javascript - 切换到 JS Defer 转换 jquery ajax 重新加载整个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50102635/

相关文章:

javascript - 如何手动触发提交功能?

javascript - 哪些浏览器内部操作会阻止 requestAnimationFrame 被调用?

javascript - 在不同的 .env 文件中设置 PUBLIC_URL (create-react-app)

javascript - 浏览器调整大小后重新计算宽度

javascript - jQuery Mobile ListView 尝试通过应用 'ui-btn-active' 类来突出显示所选元素不起作用。有没有 'selected'类

python - 大循环嵌套设计,无论如何提高速度?

scala - Spark 窗口分区功能将永远完成

JavaScript 正则表达式查找以 ".js"但不是 "-min.js"结尾的字符串

javascript - 如何在文本框中允许 Å ä Ö 和 å ä ö?

javascript - html5 localStorage将输入字段保存到键盘上的表单中