Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何防止子字符串结束父字符串?_Javascript_Html_String_Escaping - Fatal编程技术网

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

Javascript 如何防止子字符串结束父字符串?,javascript,html,string,escaping,Javascript,Html,String,Escaping,说明: 我有一个非常简单的按钮,我想在单击时调用javascript函数。除了一个我似乎无法克服的问题外,功能和按钮一切正常 Javascript函数将字符串复制到剪贴板,以便用户轻松粘贴。该字符串是从另一个区域拉入的,该区域是供用户输入所需内容的自由文本。但是,如果用户添加双引号,则会转义父字符串 例如: 工作代码按钮示例: <button id="Demo" onclick="copytoclipboard('some text to copy goes here')">Copy

说明: 我有一个非常简单的按钮,我想在单击时调用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函数运行?

这将分解为:您正在寻找XML(或更具体地说是HTML)属性值中的转义数据(无论是纯文本还是javascript)

你会发现很多关于这个的信息——在本例中,最简单的方法是通过


单击我
您尝试转义双引号的方式近乎完美,但您需要这样做:

<button id="Demo" onclick='copytoclipboard("some \"text\" to copy goes here")'>Copy to Clipboard</button>
复制到剪贴板

您可以在中了解有关转义特殊字符的更多信息。

您应该为单击创建一个侦听器,避免将整个未转义文本暴露到html中的问题。你试过JavaScript版本吗?老实说,我不完全理解你的意思。我知道我的听众是什么,但我不知道如何在这里练习。(我主要是一个PHP的家伙)你可以简单地用“而不是双引号。我不认为你有很多选择,当涉及到把字符串直接放在标签内如果我理解你的答案正确,那么我需要用“$quot”替换字符串中的任何双引号;“我用”替换了所有的双引号来测试这一点,它很有魅力!顺便说一下,把它添加到答案中:撇号的实体是
&apos
(或HTML代码中的
';
)。您提到您正在通过php生成输出?为了安全起见,最好将属性值包装在htmlspecialchars(…)中!据我所知,你所做的只是将父双引号替换为单引号。然而,现在的问题是,如果用户输入一个引号,因为这将转义父字符串,不是吗?@Petay87,
copytoclipboard()
中的内容是字符串还是变量?它是php字符串,可以由用户输入到自由文本字段的任何内容组成。在这种情况下,Tiax的回答对我来说非常有效。