如何防止子字符串结束父字符串?

时间:2017-03-02 13:32:50

标签: javascript html string escaping

说明

我有一个非常简单的按钮,我想在点击时调用一个javascript函数。除了我无法克服的一个问题之外,功能和按钮一切正常。

Javascript函数将字符串复制到剪贴板,以便为用户轻松粘贴。字符串从另一个自由文本区域拉入,供用户放入他们想要的内容。但是,如果用户添加双引号,则它会转义父字符串。

实施例

工作代码按钮示例:

<button id="Demo" onclick="copytoclipboard('some text to copy goes here')">Copy to Clipboard</button>

按钮不起作用的示例:

<button id="Demo" onclick="copytoclipboard('some "text" to copy goes here')">Copy to Clipboard</button>

正如您可能看到的那样,第一个双引号正在结束父字符串。

我尝试过:

到目前为止,我已经尝试转义双引号,但由于它是一个子字符串,这似乎不起作用。

示例:

<button id="Demo" onclick="copytoclipboard('some \"text\" to copy goes here')">Copy to Clipboard</button>

回到问题:

如何阻止子字符串中的任何双引号结束父字符串,从而阻止我的onclick函数运行?

2 个答案:

答案 0 :(得分:1)

这分解为:您希望在XML(或更具体的HTML)属性值中转义数据(无论是纯文本还是javascript)。

你会发现很多关于这方面的信息 - 在这种情况下,最简单的方法是通过&quot;

逃避双引号char(&#34;)

&#13;
&#13;
<button onclick="alert(&quot;foobar&quot;);">Click me</button>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

你试图逃避双引号的方式几乎是完美的但你需要这样做:

<button id="Demo" onclick='copytoclipboard("some \"text\" to copy goes here")'>Copy to Clipboard</button>

您可以在here中了解有关转义特殊字符的详情。