为什么在将HTML标签附加到DOM时需要进行拼接?

3

我之前看到过这个问题,最终决定找出原因。

给定以下代码行:

$("body").append('<ifr'+'ame src="foo.html"></ifr'+'ame>');

他们为什么要将'<ifr' + 'ame'</ifr'+'ame>'拼接起来?


(注:该段文字已经是中文,无需翻译)

6
出于愚蠢?也许是为了使人们无法扫描源代码中的“iframe”标签。这样或许可以绕过一些安全检查或病毒扫描。 - musefan
1
一些编辑器在代码中遇到HTML时会出现问题,将其分开可以使编辑器正确地语法高亮显示。 - Kevin B
2
直接将某物附加到主体有什么奇怪之处吗?每次创建jQuery UI对话框或打开jQuery UI日期选择器时都会发生这种情况。唯一奇怪的是字符串连接,我们只能猜测为什么它在那里,因为它并不需要。 - Kevin B
1
抱歉,我指的是另一条评论,但现在已经消失了。 - Kevin B
显示剩余2条评论
1个回答

0

根据可能存在的原因,只有作者自己才知道是否应该回答这个问题。但是无论如何,我还是来试着回答一下吧...

我能想到的唯一原因(除了仅仅是为了恶作剧)就是防止某些东西查看代码并看到完整的<iframe>标签。例如,如果我在代码中搜索"iframe",我将不会得到任何匹配项。

现在是这个答案的推测部分:为什么有人想要防止某些东西找到匹配的iframe标签呢?

以下是由我和Kevin B通过评论提供的几个选项:

  1. 防止进程扫描代码文件并检测iframe标签。例如,想象一下你有一个允许使用HTML/Javascript但不允许使用iframes的内容管理系统。上传过程的一部分可能是分析代码并查找标签。这里使用的串联技术将防止扫描程序检测到iframe,从而允许上传

  2. 解析软件,例如语法高亮器可能在处理JavaScript内混杂HTML时出现问题,因此添加串联方法很可能允许解析器成功地将字符串识别为实际意义上的字符串

在所有的例子中,可以公正地说,这种技巧也适用于JavaScript字符串中存在的其他标签,而不仅仅是本例中显示的iframe标签。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接