【问题标题】:Third level of quote escaping in HTML and JavaScriptHTML 和 JavaScript 中的第三级引号转义
【发布时间】:2013-03-24 10:04:54
【问题描述】:

我将以此作为开头:“我知道这是不好的做法和丑陋的 hack(我很抱歉)但是......”

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

在该 html 中,我有一个元素,我想在该元素上绑定一个内联 onclick 事件处理程序。

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

我有这样的事情:

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

如果我需要将一个整数传递给myFunction,则此方法有效,因为它不需要另一组引号。不幸的是,我想将一个字符串传递给myFunction。如何进一步转义此字符串参数,使其不会关闭 onclicktitle 字符串?

【问题讨论】:

标签: javascript jquery html jquery-tools


【解决方案1】:

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

类似这样的:

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

说实话,我真的不明白这是如何工作的。如果有人能澄清流程的哪一部分将这些 &amp;quot;s 更改为实际的功能引用,我会很高兴。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 这行得通。你能解释一下这是否是 HTML 的一部分,它允许 &amp;quots 在 JavaScript 函数中作为常规引号运行,或者这是由 jQuery TOOLs 完成的魔术还是其他什么?
    • 它与 JavaScript 无关。这正是您在双引号 HTML 属性中转义双引号的方式。它类似于 JavaScript 中的 alert("This says \"Hello\"")
    猜你喜欢
    • 2012-10-07
    • 2016-12-08
    • 1970-01-01
    • 2011-01-01
    • 2017-01-30
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    相关资源
    最近更新 更多