jQuery replaceWith(responseText) 开始将引号编码为 ”竟然

jQuery replaceWith(responseText) started encoding quotes as " unexpectedly

提问人:NonArtificialIntelligence 提问时间:8/26/2023 最后编辑:NonArtificialIntelligence 更新时间:8/26/2023 访问量:29

问:

我遇到了一个问题,即 jQuery 函数通过将双引号替换为 来修改元素的属性值。replaceWith(responseText)"

原始响应文本

<div id='whatsapp_icon' onclick='whatsappClick("37112345678", "")'></div>

使用 replaceWith 后

<div id="whatsapp_icon" onclick="whatsappClick(&quot;37112345678&quot;, &quot;&quot;)"></div>

此问题是最近才出现的,以前该方法按预期工作。特别是:

  • 该问题不会出现在所有系统上,而是出现在大多数系统上。
  • 我试图禁用浏览器中的所有扩展,但没有结果(这种行为不是同时出现的,而是在完全独立的系统上的一两天内出现的)。
  • 代码最近未被修改。
  • jQuery 库未更新。
  • 该函数表现出相同的行为。.html()

是什么导致了这种行为变化?

HTML jQuery 编码 双引号

评论

0赞 Kevin B 8/26/2023
你确定这是由 jquery 引起的吗?您是否适当地检查了 responseText,以确保这不是由网络或服务器安全措施引起的?jQuery不仅开始以不同的方式运行。
0赞 NonArtificialIntelligence 8/26/2023
是的,我做的第一件事是将responseText输出到控制台(console.log(responseText)),有正常的引号。实际上,我不确定它是否是jquery而不是浏览器。这间接表明它没有出现在 Windows 8.1 上不太最新的 Chrome 中,但效果存在于 Windows 10 上最新的 Edge 和 Chrome 中。但我无法在谷歌上搜索任何关于它的信息。
0赞 Kevin B 8/26/2023
所以你在浏览器上测试了 responseText,但显示不正确?只是为了确保我们得到正确的结果
0赞 Kevin B 8/26/2023
如果说它是由jquery使用的方法引起的,那么jquery只是使用了dom api。因此,例如,您应该能够通过使用 .innerHTML 来排除 jquery。但是,首先确认 100% 您传递给 insert 方法的文本在工作和不工作的浏览器中都是相同的,以排除任何先前的情况仍然很好。
0赞 NonArtificialIntelligence 8/26/2023
是的,我检查了有此问题的浏览器,并且两个浏览器中的responseText都匹配。感谢您对 innerHTML 的想法。我用这段代码替换了jQuery问题仍然存在,引号被替换:我在哪里可以进一步挖掘?testText = "<div title='A \"TEST\" B'></div>"; var oldElement = document.getElementById('people_' + order_id); var parentElement = oldElement.parentElement; parentElement.innerHTML = testText;<div title="A &quot;TEST&quot; B"></div>

答:

0赞 MatrixDevops 8/26/2023 #1

有时,浏览器更新会改变 HTML 的呈现和解析方式。正如您已经提到的,代码没有更改,jQuery库和代码都没有更改。因此,浏览器更新可能会影响属性值的显示和处理方式。

评论

0赞 NonArtificialIntelligence 8/26/2023
我也有同样的想法,但这意味着许多网站将不得不开始以与以前不同的方式运行,有关它的信息将出现在互联网上,尤其是这里。但我无法在谷歌上搜索任何关于它的信息。也许已经过去了一段时间,它才发生在昨天。