我怎样才能正确地逃脱的JavaScript在JavaScript?(How can I proper

2019-06-26 13:32发布

这可能是一些我不能这样做,但...

parent.document.getElementById('<?php echo $_GET['song']; ?>')
  .innerHTML = '<img src="heart.png" onmouseover="heartOver('');" >';

onmouseover="heartOver('');部分休息,我的JavaScript是没有办法逃避的报价,所以我能做到这一点?

Answer 1:

使用反斜线嵌套引号: \'

此外,而无需验证或消毒它从来没有回声的用户数据:

$song = $_GET['song'];

// Validate HTML id (http://www.w3.org/TR/REC-html40/types.html#type-name)
if(!preg_match('/^[a-z][-a-z0-9_:\.]*$/', $song) {
    // Display error because $song is invalid
}

要么

// Sanitize
$song = preg_replace('/(^[^a-z]*|[^-a-z0-9_:\.])/', '', $song);


Answer 2:

这是正确地转义引号的一切只是一个问题。

parent.document.getElementById('<?php echo $_GET['song']; ?>').innerHTML =
    '<a href="heart.php?action=unlove&song=<?php echo $song; ?>" target="hiddenframe">'
    + '<img src="images/heart.png" alt="Love!" onmouseover="heartOver(\'\');" width="16" height="16" border="0"></a>';

你也错过和alt属性最终报价。



Answer 3:

你的问题是与逃逸的报价。 你可以逃避或者通过更换单个或双引号“或“与\”或'”。

所以,你的代码如下:

parent.document.getElementById('<?php echo $_GET['song']; ?>').innerHTML = '<a href="heart.php?action=unlove&song=<?php echo $song; ?>" target="hiddenframe"><img src="images/heart.png" alt="Love! onmouseover="heartOver(\'\');" width="16" height="16" border="0"></a>';



文章来源: How can I properly escape JavaScript in JavaScript?