'<textarea name="textChange" class="signatureChangeText" cols="100" rows="4">'
+ SOME VARIABLE FULL OF TEXT
+ '</textarea>'
前面只是一个简单字符串的一部分,我正在使用它改变javascript函数内部div的innerHTML属性。如果该变量包含一个包含javascript可解析数据(要解释的数据)的字符串,例如添加符号或引号等,那么“一些可变的文本”就是问题 - 脚本会中断。我该如何避免这种情况?顺便说一下,变量对每个用户都是动态的,它由一个php echo语句填充,因此在后端插入到javascript中。我已经想过如何以另一种方式实现这一目标,但没有人会想到这一点。数据来自数据库,我用PHP拉它,我需要将它插入到动态创建的textarea中,并通过innerHTML基于用户命令插入到页面中。谢谢你的帮助。
编辑:请求的上下文功能:
else if (theChange == 'signature') {
document.getElementById('userPanelChangeBox').innerHTML =
'<form action="tinUser_processor.php" method="post">'
+'Signatures cannot contain any markup (HTML, BBCode, etc) or styling and can only be 4 lines<br />'
+'Enter your new signature:<br /><br />'
+'<textarea name="textChange" class="signatureChangeText" cols="100" rows="4">'
+'<?php echo $userInfo['signature']; ?>'+'</textarea><br /><br />'
+'<input type="hidden" value="signature" name="typeChange" />'
+'<input type="submit" value="Submit Change" name="submitter" /></form>';
}
答案 0 :(得分:1)
好像你需要转义HTML和单引号。您可以使用PHP的内置htmlentities函数来执行此操作,如下所示:
<?php echo htmlentities($userInfo['signature'], ENT_QUOTES); ?>
答案 1 :(得分:1)
您需要将任何特殊字符转换为HTML实体在服务器,当它在客户端时为时已晚。 e.g:
"foo <= bar"
变为
“foo ≤ bar”
然后当插入字符串时变为:
"“foo ≤ bar”"
而不是
""foo <= bar""
这显然会弄乱客户端的脚本。您也可以使用unicode转义序列。
答案 2 :(得分:0)
如果由于其他原因需要在客户端上完成,这可以(测试):
<textarea id=text></textarea>
<script type="text/javascript">
var signature = "<div>Not actually a div.</div>";
document.getElementById('text').value=signature;
所以,这样的事情会起作用(未经测试):
else if (theChange == 'signature') {
document.getElementById('userPanelChangeBox').innerHTML =
'<form action="tinUser_processor.php" method="post">'
+'Signatures cannot contain any markup (HTML, BBCode, etc) or styling and can only be 4 lines<br />'
+'Enter your new signature:<br /><br />'
+'<textarea name="textChange" class="signatureChangeText" cols="100" rows="4">'
+'</textarea><br /><br />'
+'<input type="hidden" value="signature" name="typeChange" />'
+'<input type="submit" value="Submit Change" name="submitter" /></form>';
document.getElementById('userPanelChangeBox').textChange.value='<?php echo $userInfo['signature']; ?>';
}