0

以下のコードで構文に関して何を変更できるか、または非表示のトークンがどのブラウザーでも表示されないようにする (非表示になる) かについてのヘルプ (提案) を探しています。IE7 で以下のコードに問題はありません。一方、ChromeまたはFirefox.IE10は何かが気に入らず、隠しトークンが画面に表示されます

<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>

 <script type="text/javascript">
WF.onWRIAReady({},
function() {
    WF.onDOMReady(addCsrfToken);
});

function addCsrfToken() {
    var csrf = '<c:out value="${sessionScope['csrfToken']}" />';
    //alert(csrf);
    for (var i = 0; i < document.forms.length; i++) {
        currentForm = document.forms[i];
        addHiddenInputField(currentForm, "csrfToken", csrf);
    }
}

function addHiddenInputField(formElement, fieldName, fieldValue) {
    var existingElement = null;

    for (var i = 0; i < formElement.elements.length; i++) {
        if (formElement.elements[i].name == fieldName) {
            existingElement = formElement.elements[i];
            break;
        }
    }

    if (existingElement == null) {
        var inputElement = document.createElement("input");
        inputElement.setAttributeNode(createHtmlAttribute("type", "hidden"));
        inputElement.setAttributeNode(createHtmlAttribute("name", fieldName));
        inputElement.setAttributeNode(createHtmlAttribute("id", fieldName));
        inputElement.setAttributeNode(createHtmlAttribute("value", fieldValue));
        formElement.appendChild(inputElement);
    }
    else {
        existingElement.value = fieldValue;
    }
}

function createHtmlAttribute(name, value) {
   var attribute = document.createAttribute(name);
   attribute.nodeValue = value;
   return attribute;
}

私の質問について何か助けてくれてありがとう

4

1 に答える 1

0

type非常に古いバージョンの IE にはバグがあり、入力して変更することができませんsetAttribute。直接表記を使用するとうまくいくはずです。

var input = document.createElment("input");
input.type = "hidden";
于 2013-06-27T00:30:38.177 に答える