为什么 jQuery 对损坏标记的解释与浏览器不同?

2024-06-29

我之前已经回答过这个问题 https://stackoverflow.com/a/19101905/1253312,但我并不完全理解why答案是正确的。答案的要点:

<p id="jqrender"></p>

$(function() {
    $('#jqrender').html("<a href=http://www.website.com/>foo bar</a>");
});

在 OSX 上最新的 Chrome 上,jQuery 将其解释为<a href="website.com"></a>foo bar。我想这是有道理的,因为它认为最接近的标记更正是<a href="website" />。但本质上,Chrome 本身会将标记解释为<a href="website.com/">foo bar</a>.

为什么是这样?我想要一个技术答案,jQuery 的哪一部分正在执行此标记修复,它遵循哪些一般规则,以及我如何猜测 jQuery 将如何对其他损坏的标记做出反应?


jQuery 源代码中有问题的行在这里:https://github.com/jquery/jquery/blob/master/src/manipulation.js#L222 https://github.com/jquery/jquery/blob/master/src/manipulation.js#L222

tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[ 2 ];

Where rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi
and elem是可能损坏的标记的片段。

这样做的结果replace对于该输入,调用是<a href=http://www.website.com></a>foo bar</a>.

然后浏览器会进行修复工作that标记,通过删除终极</a>.

所以问题中的另一点可以回答:这种特殊情况也会影响除area、br、col、embed、hr、img、input、link、meta和param之外的所有标签。

tl;dr: https://stackoverflow.com/a/1732454/1253312 https://stackoverflow.com/a/1732454/1253312

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 jQuery 对损坏标记的解释与浏览器不同? 的相关文章

随机推荐

  • 如何在 dash/plotly 中使用 iframe? (Python/HTML)

    我正在创建一个仪表板 我想使用这个交互式地图 网站链接 https www ons gov uk peoplepopulationandcommunity healthandsocialcare causesofdeath articles
  • 在运行时后期更改 SessionFactory 数据源 jdbcurl

    我正在为没有网络连接的环境编写一个桌面java应用程序 我试图将应用程序数据尽可能安全地存储在加密的进程内 hsqldb 中 并使用未加密的用户信息 hsqldb Hsqldb 要求在创建连接时在 jdbcurl 中设置 crypto ke
  • JFreeChart 更改现有条形图中的数据

    我想循环更改条形图数据 但我不知道该怎么做 我的代码 DefaultCategoryDataset barChartData new DefaultCategoryDataset barChartData setValue 0 Values
  • java中简单程序中的“未为类型定义方法”错误

    所以我只是想学习 Java 在观看了一些教程并阅读了一些基本内容之后 我对为什么它无法运行感到困惑 package Test public class TestProg public static void main String args
  • 在 json 对象中执行 javascript 代码?

    有远吗 所以像这样 key1 val1 key2 val2 some code document getElementById someid innerHTML test 那么 some code 会在没有任何用户干预的情况下执行吗 No
  • AccessViolation,当从 C++/CLI 调用 C++-DLL 时

    我为 C DLL 编写了一个 C CLI 包装器 以便在 C 程序中使用此 DLL 但是 当我调用一个需要 char 的函数时 我得到了 AccessViolation int Wrapper Net methodX int a Strin
  • 为 iPhone 企业开发者计划发布应用程序

    如果我参加了员工人数超过 500 人的公司的 iPhone 企业开发人员计划 我是否仍需要在应用程序商店上发布我的应用程序 以便客户安装该应用程序 如果您不打算将应用程序发布到 App Store 那就不要这样做 iPhone 企业开发者计
  • 如何在改造中在主体内传递 JSON 数组

    intent sale redirect urls return url http example com your redirect url html cancel url http example com your cancel url
  • 改进 Java 8 查找“战争与和平”中最常见单词的方法

    我在理查德 伯德的书中读到这个问题 Find the最常用的五个词 in 战争与和平 http www gutenberg org ebooks 2600 或与此相关的任何其他文本 这是我当前的尝试 public class WarAndP
  • 为什么 scikit-learn SVM.SVC() 非常慢?

    我尝试使用SVM分类器来训练大约10万个样本的数据 但我发现它非常慢 甚至两个小时后也没有任何反应 当数据集有大约 1k 个样本时 我可以立即得到结果 我还尝试了 SGDClassifier 和朴素贝叶斯 速度相当快 几分钟内就得到了结果
  • gets 和 scanf 有什么区别?

    如果代码是 scanf s n message vs gets message 有什么区别 似乎两者都获取消息的输入 基本区别 参考您的特定场景 scanf 遇到一个时结束接受输入whitespace newline or EOF gets
  • Html2PdfConverter 示例转换

    我是 Outsystems 的新手 并且有一个每个用户都签署协议的页面 每次签署协议时 都需要将其转换为 pdf 并附加到电子邮件中并发送 我已经设置了所有电子邮件部分 为了将页面转换为 PDF 我已经安装了扩展程序 但我不确定如何继续 我
  • 在 2 个 .c 文件之间共享函数

    dir1有dir2 file1 c和file1 h dir2 有 file2 c 现在 如果我想在 file2 c 中访问 file1 c 中定义的函数 我需要在 file1 h 中声明它并在 file2 c 中包含 file1 h 这是一
  • OWIN AuthenticationOptions 在 mvc5 应用程序中运行时更新

    Hi 情况如下 我在 iis 7 上有一个带有 Identity 2 的 MVC 5 应用程序 该应用程序为多个网站提供服务 主机名是某些网站的关键 网站 另一个网站 等等 我决定在我的所有网站上使用谷歌外部登录 每个网站都应该是带有个人
  • 带方括号的 Uri.EscapeUriString

    这是一个奇怪的问题 但让我们看看它会得到什么样的回应 如果我编写一个控制台应用程序 VS 2013 NET 4 5 1 并执行这行代码 Uri EscapeUriString 我明白了 但是 如果我执行同样的事情 嗯 从技术上来说Uri E
  • 如何在 host.json 中定义每个函数的超时?

    我有很多函数 其中大多数函数我希望有 30 秒的超时时间 然而 有一个超时需要大约 2 30 分钟 有没有办法配置hosts json来反映这一点 这在单一功能应用程序中是不可能的 但是 您应该能够将 2 30 函数拆分为单独的函数应用程序
  • Doctrine2:类型 x 已经存在

    我对 Doctrine API 有疑问 我想添加一个新的学说类型 我按照本文档创建了该类 并且已在自定义驱动程序中添加了该类型 Type addType custom Namespace NameBundle Types CustomTyp
  • 使用 pytherejs 嵌入小部件:错误的视角和相机观察

    我在用pythreejs可视化一些 3D 模型 在 Jupyter 笔记本上可视化模型时 一切都按预期进行 但是当尝试将小部件嵌入 HTML 文档时 我面临两个问题 看起来相机在加载时正在查看 0 0 0 而不是预期的那样 一旦您与小部件交
  • 为什么我的字符串中出现不需要的换行符?

    这应该很简单 这很愚蠢 但我无法让它发挥作用 我有一个在读取文件时定义的标头 if gene env in line or gene HIV2gp7 in line header line 现在这个标题看起来像 gt lcl NC 0018
  • 为什么 jQuery 对损坏标记的解释与浏览器不同?

    我之前已经回答过这个问题 https stackoverflow com a 19101905 1253312 但我并不完全理解why答案是正确的 答案的要点 p p function jqrender html a href http w