gpt4 book ai didi

jquery - jQuery 3.5.0 中的重大变化有何影响?

转载 作者:行者123 更新时间:2023-12-01 05:11:44 25 4
gpt4 key购买 nike

jQuery 3.5.0 于 2020 年 4 月 10 日发布。它是一个次要版本,但包含一个安全修复程序,被描述为一个重大更改。

The main change in this release is a security fix, and it’s possible you will need to change your own code to adapt. Here’s why: jQuery used a regex in its jQuery.htmlPrefilter method to ensure that all closing tags were XHTML-compliant when passed to methods. For example, this prefilter ensured that a call like jQuery("<div class='hot' />") is actually converted to jQuery("<div class='hot'></div>").

显然jQuery.htmlPrefilter现在正在使用未更改的字符串。

我已经尝试了上面给出的示例,并在 3.5.0 中得到了预期结果。究竟发生了什么变化?此更改有何影响?如果有的话,我应该在代码中进行哪些调整?

这是我正在运行的测试:

console.log($("<div class='hot' />")[0].outerHTML == '<div class="hot"></div>')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.0/jquery.min.js"></script>

最佳答案

我在他们的官方页面上找到了我的问题的答案。 migration guide解释了这一变化对开发人员意味着什么以及它是如何运作的。

我的问题中的示例不受影响,因为新旧 jQuery 代码都会产生相同的结果。

只有在使用多个自关闭标签时才能注意到差异。例如:

$("<div/><span/>")

jQuery < 3.5 中的这段代码将生成两个单独的 HTML 元素

<div></div>
<span></span>

从 jQuery 3.5.0 开始,相同的代码会生成嵌套元素。

<div><span></span></div>

以前 jQuery 使用正则表达式来扩展自闭合标签:

/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi

从版本 3.5.0 开始,它将使用身份函数。

如果您的代码使用了如上所述的自关闭标签,您需要重写代码并测试功能。在单个 jQuery 调用中创建多个 HTML 标记时,如果需要嵌套或连续的元素,则需要明确说明。

关于jquery - jQuery 3.5.0 中的重大变化有何影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61305636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com