这可能是我做不到的事情......
parent.document.getElementById('<?php echo $_GET['song']; ?>')
.innerHTML = '<img src="heart.png" onmouseover="heartOver('');" >';
onmouseover="heartOver('');
部分打破了我的JavaScript。有没有办法逃避报价,所以我可以这样做?
答案 0 :(得分:5)
这只是一个正确逃避报价的问题。
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属性的结束报价。
答案 1 :(得分:3)
使用反斜杠转义嵌套引号:\'
此外,从不回送用户数据而不验证或清理它:
$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
}
OR
// Sanitize
$song = preg_replace('/(^[^a-z]*|[^-a-z0-9_:\.])/', '', $song);
答案 2 :(得分:1)
您的问题是转发引号。您可以通过将'或'替换为''或'“来转义单引号或双引号。
所以你的代码是:
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>';