javascript
2014-01-16 169 views 0 likes 
0

我是双引号有以下HTML传递JavaScript函数参数

<span onClick="alert('hi&#34 more stuff')">Works</span><br/> 
<span onClick='alert("Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean.")'>Works long text</span> 
<br /> 
<span onClick='alert("Far far &#34 away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean.")'> Doesn't work long text</span> 

我的问题是,在第三onclick处理程序,我在浏览器中获取的未终止的字符串错误的麻烦。在真正的程序中,参数字符串正在生成客户端,因此所有编码都必须在那里发生。

在这个例子中,我已经尝试了&#34;&quot;,并且在最后一个例子中工作。但他们在第一个例子

有工作示例工作在http://jsfiddle.net/photo_tom/9d43U/1/

+2

只是用'\“'而不是 –

+2

如果您保持您的JS从你的HTML中排除,你将能够避免在HTML属性中的JS字符串内编码引号的问题。 – zzzzBov

+0

'span'元素不是交互式的,它们不会以默认的焦点顺序出现,您应该认真考虑使用'

回答

3

只是一个反斜杠\"逃脱它。

+0

尽管这应该起作用,但我却低估了您的观点,即它仍然不是有效的HTML,并且如果属性中的引号发生更改,则会发生意外中断。理想情况下,您应该对双引号字符进行正确的HTML编码。 – zzzzBov

+1

@zzzzBov我同意潜在的破坏,但它是如何不是有效的HTML? – JLRishe

+0

@zzzzBov我不明白你的意思。首先,在JavaScript字符串中使用'\“'与HTML的有效性无关。接下来,如果你关心属性值周围的引号,请记住,它也会影响JS函数参数的引号,因此,最好的事情是动态绑定事件,而不是内联。 – VisioN

9

要在JavaScript "分隔字符串使用",使用\"

要在HTML "中使用"定界属性值,请使用&quot;

如果需要它们合并:\&quot;


另外,停止使用内部事件属性,写unobtrusive JavaScript并绑定你的事件处理程序programatically

+0

我投票赞成不引人注意的JavaScript建议,尽管代替这一点,如果您在HTML属性中操作,'\ "'比'\“更安全。 – JLRishe

-3

首先你应该写HTML一样:

attribute="property" 

所以,如果你写:

onclick="alert('what you want here with encoded content it will work')" 

看到更新后的提琴手http://jsfiddle.net/darkyndy/9d43U/5/

相关问题