如何在HTML中转义JavaScript代码
我的JS代码中有一些如何在HTML中转义JavaScript代码,javascript,html,escaping,Javascript,Html,Escaping,我的JS代码中有一些addHtmlJavaScript函数。我想知道如何正确地转义HTML/JS代码。基本上,我现在正在尝试的是: addHtml("<a onclick=\"alert(\\\"Hello from JS\\\")\">click me</a>") addHtml(“单击我”) 然而,这是行不通的。它添加了a元素,但当我单击它时,它什么也不做 我不想将所有的“替换为”,作为一种解决办法。(如果我这样做了,它会起作用。)添加HTML(“单击我”) 浏览
addHtml
JavaScript函数。我想知道如何正确地转义HTML/JS代码。基本上,我现在正在尝试的是:
addHtml("<a onclick=\"alert(\\\"Hello from JS\\\")\">click me</a>")
addHtml(“单击我”)
然而,这是行不通的。它添加了a
元素,但当我单击它时,它什么也不做
我不想将所有的“
替换为”
,作为一种解决办法。(如果我这样做了,它会起作用。)添加HTML(“单击我”)
浏览器中呈现的最终HTML是什么样子的?我认为这三个斜杠可能会导致问题。我的解决方案是
addHtml('<a onclick="alert(\'Hello from JS\')">click me</a>')
addHtml('单击我')
我通常在Javascript字符串中使用单引号,在HTML属性中使用双引号。我认为这是一个很好的遵循规则。这如何
addHtml("<a onclick=\"alert("Hello from JS")\">click me</a>");
addHtml(“单击我”);
无论如何,当我在Firefox中测试时,它起了作用。问题可能是 正如您现在的代码一样,它将把这个添加到HTML中
<a onclick="alert("Hello from Javascript")"></a>
这是假设转义斜杠将全部正确删除
问题是警报无法处理“内部”警报。。。您必须将这些引号更改为单引号
addHtml("<a onclick=\"alert(\\\'Hello from JS\\\')\">click me</a>")
addHtml(“单击我”)
那应该对你有用
我想知道如何正确地转义HTML/JS代码
要将字符串内容插入HTML事件处理程序属性,请执行以下操作:
(1) 将其编码为JavaScript字符串文字:
alert("Hello \"world\"");
(2) 将完整的JavaScript语句编码为HTML:
<a onclick="alert("Hello \"world\""">foo</a>
为什么是3个反斜杠?只需在方法中的每个双引号前加一个反斜杠“\n有人想知道为什么您使用字符串文字向页面添加HTML元素,而不是在dom中创建元素并向其附加事件?@Marko:那么它将不是有效的HTML。@Darko:这只是为了测试,我减少了testcase以将其放在这里。”。即使我以一种绕过问题的方式来解决这个特定任务,我仍然无法解决问题本身,因为我在其他地方需要它。你说它添加了a元素。是否将onclick放在该元素上而不包含任何内容?还是onclick一起丢失了?是的,它不起作用,这就是问题的症结所在。:)我可能想在那里使用更复杂的JS代码片段,我想用一种通用的方式来避免它。仅用
替换所有“
”
可能在所有情况下都不起作用。您将用“”替换所有”
,如果JS代码中有任何内容,我将如何替换“
?如果我想将完整的addHtml(…)
再次作为onclick代码,该怎么办?(我需要一个适用于任何代码的通用解决方案。)很可能是因为你做出了一个糟糕的设计决策。我发现,在试图解决这个问题时,在旧版本的FireFox上,你必须小心引用的方式:双内单,还是单内双?前者并不总是有效的!避免处理这个更好。啊,谢谢,所以只要用“
替换所有”
,它就会一直工作吗?至少到目前为止我测试过的所有案例。并在Webkit中进行了测试。我现在提出了这个最终解决方案(正是这样):没错,它不是一个通用的解决方案,它只是您提供的字符串的解决方案。我认为在将字符串传递给函数之前必须对其进行转义。是的,这就是我的问题所在。:)我该如何摆脱束缚回答得很好bobince。我基本上想出了我的答案addHtml(“点击我”)代码>通过反复试验,但这清楚地说明了为什么它会起作用。
<a onclick="alert("Hello \"world\""">foo</a>
html= "<a onclick=\"alert("Hello \\"world\\""\">foo<\/a>";
var a= document.createElement('a');
a.onclick= function() {
alert('Hello from normal JS with no extra escaping!');
};