HTML和JavaScript中的第三级引号转义

Third level of quote escaping in HTML and JavaScript

本文关键字:转义 第三级 JavaScript HTML      更新时间:2023-09-26

我将以:"我知道这是一个糟糕的做法和一个丑陋的hack(我很抱歉),但是…"

我正在使用jQuery工具的工具提示小部件,当用户将鼠标悬停在html元素上时,它会显示一个工具提示。使用这个小部件,您可以将工具提示的html添加到元素的title属性中。

在这个html里面,我有一个元素,我想绑定一个内联的onclick事件处理程序。

不幸的是,我遇到了太多的引号层来传递参数给我试图调用的函数。

我有这样的东西:

<div title="<div onclick='myFunction(_____)'>My tooltip content</div>">My element</div>

如果我需要传递一个整数给myFunction,因为它不需要另一组引号。不幸的是,我想传递一个字符串到myFunction。我如何进一步转义这个字符串参数,使它不关闭onclicktitle字符串?

在HTML属性中,应该将引号编码为HTML实体,例如:

<div title="This says &quot;Hello!&quot;">
    Hello!
</div>

我能够找到解决我的特殊问题的方法。不确定这是否适用于一般情况下,或者如果jQuery工具正在做一些神奇的事情来转义我的字符串,但我最终用&quot;转义,它确实评估成有效的Javascript被执行。

像这样:

<div title="<div onclick='myFunction(&quot;_____&quot;)'>My tooltip content</div>">My element</div>

老实说,我真的不明白这是怎么回事。如果有人能澄清过程的哪一部分是将这些&quot;转换为实际的功能引用,我会很高兴。