Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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 - Fatal编程技术网

Javascript 没有非法字符。没有单引号。没有双引号。但仍然需要逃跑

Javascript 没有非法字符。没有单引号。没有双引号。但仍然需要逃跑,javascript,html,Javascript,Html,我想所有这些都会起作用。 但只有4个有效。其他的则产生“缺失”错误 我运行过的所有“代码检查器”都声称“根本没有错误”。所有字符串文字都不包含任何单引号或双引号 逃避所有文本以避免所有错误的秘密方法是什么 1起作用 2失败 3失败 4个作品 5件作品 6失败 7失败 8个作品“,',&34;和&39;都不是JavaScript的一部分。如果HTML解析器在HTML中遇到它们,它将转换它们;因此您的代码可以有效地读取: alert("Bob's" ); alert(

我想所有这些都会起作用。 但只有4个有效。其他的则产生“缺失”错误

我运行过的所有“代码检查器”都声称“根本没有错误”。所有字符串文字都不包含任何单引号或双引号

逃避所有文本以避免所有错误的秘密方法是什么

1起作用
2失败
3失败
4个作品
5件作品
6失败
7失败
8个作品
'
&34;
&39;
都不是JavaScript的一部分。如果HTML解析器在HTML中遇到它们,它将转换它们;因此您的代码可以有效地读取:

alert("Bob's"           );
alert('Fred's'          );
alert("Say " hi ""      );
alert('Say " hi "'      );
alert("Bob's"           );
alert('Bob's'           );
alert("Say " hi ""      );
alert('Say " hi "'      );
由于可预见的原因,它起作用或失败

正如评论开始说的那样,最好不要混合使用JavaScript和HTML;使用外部脚本,并动态地将内容附加到DOM(例如,使用
document.addEventListener
)。如果您绝对需要在HTML属性中包含JavaScript(尽管我从未遇到过这种需要,我也无法想象为什么我会这样做),您可以使用反斜杠转义引号,就像您通常所做的那样:

alert('Bob\'s');
编辑:如果您已经有需要修复的代码,最简单的方法是确保JavaScript是正确的;然后,如果要将此类JavaScript放在HTML属性中,则将与属性的引号匹配的引号转换为实体。(如果您过火了,只需转换两种引号,这不会有什么坏处。)所以,假设你想提醒
“嗨”,Bob的叔叔说。要把它变成一个字符串,你需要反斜杠转义其中至少一个引号(或使用模板文字)。因此你得到
“\”嗨“,Bob的叔叔说“
”作为一个有效的JS字符串。然后如果你要把它放在
onclick=”里面“
,将双引号(或所有引号)转换为实体(您可以这样做,以获得最终结果:

onclick=""\"Hi\", said Bob's uncle""
这是一个相当容易实现自动化的过程,并将为您提供正确的JavaScript,前提是您首先使用正确的JavaScript。

'
&&34;
&&39;
都不是JavaScript的一部分。如果HTML解析器在HTML中遇到它们,它将转换它们;因此您的代码有效地读取:

alert("Bob's"           );
alert('Fred's'          );
alert("Say " hi ""      );
alert('Say " hi "'      );
alert("Bob's"           );
alert('Bob's'           );
alert("Say " hi ""      );
alert('Say " hi "'      );
由于可预见的原因,它起作用或失败

正如评论开始说的那样,最好不要混合使用JavaScript和HTML;使用外部脚本,并动态地将内容附加到DOM(例如,使用
document.addEventListener
)。如果您绝对需要在HTML属性中包含JavaScript(尽管我从未遇到过这种需要,我也无法想象为什么我会这样做),您可以使用反斜杠转义引号,就像您通常所做的那样:

alert('Bob\'s');
编辑:如果您已经有需要修复的代码,最简单的方法是确保JavaScript是正确的;然后,如果要将此类JavaScript放在HTML属性中,则将与属性的引号匹配的引号转换为实体。(如果您过火了,只需转换两种引号,这不会有什么坏处。)因此,假设您想提醒
“嗨”,Bob的叔叔说。要将其转换为字符串,您需要至少对其中一个引号进行反斜杠转义(或使用模板文本)。因此,您得到
“\”嗨“,Bob的叔叔说”
“作为有效的JS字符串。然后,如果要将其放入
onclick=“”
,将双引号(或所有引号)添加到实体中(您可以这样做,以获得最终结果:

onclick=""\"Hi\", said Bob's uncle""

这是一个非常容易自动化的过程,如果您首先使用正确的JavaScript,它将为您提供正确的JavaScript。

HTML实体在将字符串传递给JavaScript之前被转换为相应的字符。它们仅在HTML级别转义字符,而不是JavaScript威尔

第二个尝试执行Javascript:

alert('Fred's');
alert('Fred\'s');
包含不正确嵌套的引号。您需要包含Javascript转义序列以保护引号:

<div onclick="alert('Fred\&apos;s'         );">
这是有效的

如果您正在寻找一种生成代码的通用方法,而不必对代码进行详细分析,那么我认为没有这种方法。最好的解决方案不是首先将Javascript放入HTML属性中,而是使用不引人注目的Javascript

<div id="fredalert">

<script>
document.querySelector("#fredalert").addEventListener("click", function() {
    alert('Fred\'s');
});
</script>

document.querySelector(“#fredalert”).addEventListener(“单击”,函数(){
警惕(“弗雷德的”);
});

在将字符串传递给Javascript之前,HTML实体将被转换为相应的字符。它们仅在HTML级别转义字符,而不是在Javascript级别转义字符

第二个尝试执行Javascript:

alert('Fred's');
alert('Fred\'s');
包含不正确嵌套的引号。您需要包含Javascript转义序列以保护引号:

<div onclick="alert('Fred\&apos;s'         );">
这是有效的

如果您正在寻找一种生成代码的通用方法,而不必对代码进行详细分析,那么我认为没有这种方法。最好的解决方案不是首先将Javascript放入HTML属性中,而是使用不引人注目的Javascript

<div id="fredalert">

<script>
document.querySelector("#fredalert").addEventListener("click", function() {
    alert('Fred\'s');
});
</script>

document.querySelector(“#fredalert”).addEventListener(“单击”,函数(){
警惕(“弗雷德的”);
});

不要使用
onclick
属性-使用
element.onclick
或更好的
element.addEventListener
(其中element是div元素)正确的方法是使用Javascript附加处理程序。内联处理程序基本上是
eval
,并且更混乱,更难管理,如您所见。因此,基本上没有任何方法可以正确转义可以(或不可以)的文本包含单引号或双引号?您必须使用1000行单独的addEventListener行重写所有内容?呃。我很害怕。一个自然的问题会弹出,为什么您有1000个不起作用的代码实例?如果第一行代码不起作用,为什么要继续下一个999