处理这个问题的正确方法是转义 JSP 文件中的 HTML,并且不显眼地绑定事件。数据库中的值可以放入data-*
属性中。例如,您的 HTML 将类似于以下内容。在您的 JSP 顶部包含以下内容:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Using<c:out />
将对特殊字符进行编码,以便正确输出到 HTML,例如'
、"
和&
(以及其他)。
然后将您的 HTML 更改为:
<input type="button" id="btnSubmit" value="Edit"
data-question-id="<c:out value="${QuestionId}" />"
data-question="<c:out value="${Question}" />"
data-question-data-type="<c:out value="${QuestionDataType}" />"
data-audio-path="<c:out value="${AudioPath}" />"
data-security-question-type="<c:out value="${securityQuestionType}" />" />
还有你的 JavaScript:
window.onload = function () {
document.getElementById("btnSubmit").onclick = function () {
var questionId = this.getAttribute("data-question-id"),
question = this.getAttribute("data-question"),
questionDataType = this.getAttribute("data-question-type"),
audioPath = this.getAttribute("data-audio-path"),
securityQuestionType = this.getAttribute("data-security-question-type");
editSeqQuestion(questionId, question, questionDataType, audioPath, securityQuestionType);
};
};
当然,使用addEventListener
, 而不是设置onload
and是“更好的” onclick
。所以你可以使用这个:
function addEvent(element, eventName, callback) {
if (element.addEventListener) {
element.addEventListener(eventName, callback, false);
} else if (element.attachEvent) {
element.attachEvent("on" + eventName, callback);
}
}
然后绑定事件,例如:
addEvent(window, "load", function () {
addEvent(document.getElementById("btnSubmit"), "click", function () {
// The code from above
});
});
参考: