これを処理する正しい方法は、JSP ファイルで HTML をエスケープし、控えめにイベントをバインドすることです。data-*
データベースからの値を属性に入れることができます。たとえば、HTML は次のようになります。これを JSP の先頭に含めます。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
を使用すると、<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
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
});
});
参照: