- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 ReactJs 函数 renderToStaticMarkup 创建 HTML 标记。标记位于应用程序中的另一个位置,设置为其他 DOM 节点的 innerHTML 属性。因为我想防止images 和iframes 重新变红,所以我想比较一下,如果当前的innerHTML 与它应该被设置为那个。
if (!domNode.innerHTML !== newMarkup);
domNode.innerHTML = newMarkup;
}
出于某种原因,Reacts renderToStaticMarkup 为图像 创建了 HTML 标记:
<img src="https://placebeard.it/200x150" alt="" class="content-media-image-linked"/>
但是 DOM innerHTML 的值为
<img src="https://placebeard.it/200x150" alt="" class="content-media-image-linked">
所以基本上区别在于尾随 /
(但这不需要是经验法则)
我想知道确定这两个 DOMString 是否代表相同的 DOM 节点的最有效/最快速的方法是什么。
可能足以替换/删除所有出现的 />
这是更安全的方法,但也更昂贵。我将不得不使用类似 document.createRange().createContextualFragment
的东西(参见 this post ),而不是使用 isEqualNode
方法。
有人有更好的建议吗?
最佳答案
我想你知道,标签末尾 />
中的 /
在 HTML 中没有任何意义(在 XHTML 和 JSX 中),所以我的诱惑是
将/>
改成>
并比较;如果它们匹配,则它们是相同的。
如果不匹配,解析并使用isEqualNode
在我认为大多数情况下,第一个让您快速获胜。第二种工作速度较慢但更健壮的方式,允许属性以不同的顺序排列而不会引入差异(除非它产生差异)等。
当用 >
替换 />
时,当然要确保只在正确的地方这样做,这可能会也可能不会很棘手,具体取决于你使用的字符串'正在处理(例如,它们包含嵌套的 HTML 等)。 (如果 HTML 不是像您的 img
示例那样的单个元素,则“您不能只使用简单的正则表达式”中的“棘手”。)
关于javascript - 如果两个 DOMString 在 JavaScript 中表示相同的 DOM 节点,则最有效的方法是比较它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57061116/
我在阅读 HTML spec 时遇到了 DOMString .在一些研究中,发现了以下相关数据: 来自 MDN : DOMString is a UTF-16 String. As JavaScrip
这个问题已经有答案了: XML parsing of a variable string in JavaScript (10 个回答) 已关闭 9 年前。 假设我有一个DOMString这是一种类型
我是 JS、html 和 CSS 的初学者。我遇到了无法将 DOM 字符串存储到要在代码中进一步处理/使用的变量的麻烦。 const inputs = document.querySelectorAl
我正在使用 JavaScript 为 displaytag 表中的一组列标题添加工具提示。我正在尝试使用数组将相应的描述映射到标题,但它不起作用。 var columnHeaderCe
我正在使用 cropperjs 裁剪图像 使用方法getCroppedCanvas获取对裁剪后的 Canvas 图像的引用 使用 Canvas 方法canvas.toDataURL将图像压缩成 jpe
我使用 ReactJs 函数 renderToStaticMarkup 创建 HTML 标记。标记位于应用程序中的另一个位置,设置为其他 DOM 节点的 innerHTML 属性。因为我想防止imag
我正在设置一个图像裁剪器,它会给我裁剪细节的宽度和高度、X 和 Y。使用它我正在创建预览图像(使用 Canvas )但是是否可以存储从 HTMLCanvasElement.toDataURL() 或
我正在编写使用 Apache Xerces-C 的代码(遗留代码)图书馆。我试图在 Microsoft Visual Studio Debugger 中查看 DOMString(和其他相关 DOM 对
var budgetController = (function() { //code here })(); //ui controller var UIController = (f
我是一名优秀的程序员,十分优秀!