/** Test for Bug 469304 **/
function testGetAttribute() { var a1 = document.createAttributeNS("", "aa");
a1.nodeValue = "lowercase"; var a2 = document.createAttributeNS("", "AA");
a2.nodeValue = "UPPERCASE";
document.body.setAttributeNode(a1);
document.body.setAttributeNode(a2); var log = document.getElementById("log");
is(document.body.getAttribute('aa'), "lowercase", "First attribute should have localname aa (1).");
is(document.body.getAttribute('AA'), "lowercase", "First attribute should have localname aa (2).");
is(document.body.getAttributeNS("", "aa"), "lowercase", "First attribute should have localName aa (3).");
is(document.body.getAttributeNS("", "AA"), "UPPERCASE", "Second attribute should have value UPPERCASE!");
var s = "";
for (var i = 0; i < document.body.attributes.length; ++i) {
s += document.body.attributes[i].nodeName + "=" +
document.body.attributes[i].nodeValue;
}
is(s, "aa=lowercaseAA=UPPERCASE", "Wrong attribute!");
document.body.removeAttributeNode(document.body.getAttributeNodeNS("", "aa"));
ok(!document.body.getAttributeNode("AA"), "Should not have attribute node! (1)");
ok(!document.body.getAttributeNode("aa"), "Should not have attribute node! (2)");
document.body.setAttributeNode(a2);
is(document.body.getAttributeNS("", "AA"), "UPPERCASE", "Wrong value!");
ok(document.body.getAttributeNodeNS("", "AA"), "Should have attribute node!");
is(document.body.getAttributeNS("", "aa"), null, "No attribute has the localName aa.");
ok(!document.body.getAttributeNodeNS("", "aa"), "Should not have attribute node!");
}
testGetAttribute();
// A bit modified testcases from WebKit.
function testGetAttributeCaseInsensitive() { vardiv = document.createElement('div'); div.setAttribute("mixedCaseAttrib", "x");
// Do original case lookup, and lowercase lookup.
return div.getAttribute("mixedcaseattrib");
}
is(testGetAttributeCaseInsensitive(), "x", "(1)");
function testGetAttributeNodeMixedCase() { vardiv = document.createElement('div'); var a = div.ownerDocument.createAttributeNS("", "mixedCaseAttrib");
a.nodeValue = "x"; div.setAttributeNode(a);
return div.getAttributeNS("", "mixedCaseAttrib");
}
is(testGetAttributeNodeMixedCase(), "x", "(2)");
function testGetAttributeNodeLowerCase(div) { vardiv = document.createElement('div'); var a = div.ownerDocument.createAttribute("lowercaseattrib");
a.nodeValue = "x"; div.setAttributeNode(a);
return div.getAttribute("lowerCaseAttrib");
}
is(testGetAttributeNodeLowerCase(), "x", "(3)");
function testSetAttributeNodeKeepsRef(div) { vardiv = document.createElement('div'); var a = div.ownerDocument.createAttribute("attrib_name");
a.nodeValue = "0"; div.setAttributeNode(a);
// Mutate the attribute node.
a.nodeValue = "1";
return div.getAttribute("attrib_name");
}
is(testSetAttributeNodeKeepsRef(), "1", "(4)");
function testAttribNodeNameFoldsCase() { vardiv = document.createElement('div'); var a = div.ownerDocument.createAttribute("A");
a.nodeValue = "x"; div.setAttributeNode(a); var result = [ a.name, a.nodeName ];
return result.join(",");
}
is(testAttribNodeNameFoldsCase(), "a,a", "(5)");
function testAttribNodeNameFoldsCaseGetNode() { varbody = document.body; var a = body.ownerDocument.createAttribute("A");
a.nodeValue = "x"; body.setAttributeNode(a);
a = document.body.getAttributeNodeNS("", "a");
if (!a)
return "FAIL"; var result = [ a.name, a.nodeName ];
return result.join(",");
}
is(testAttribNodeNameFoldsCaseGetNode(), "a,a", "(6)");
function testAttribNodeNameFoldsCaseGetNode2() { varbody = document.body; var a = body.ownerDocument.createAttribute("B");
a.nodeValue = "x"; body.setAttributeNode(a);
a = document.body.getAttributeNodeNS("", "b");
if (!a)
return "FAIL";
// Now create node second time
a = body.ownerDocument.createAttribute("B");
a.nodeValue = "x"; body.setAttributeNode(a);
a = document.body.getAttributeNodeNS("", "b"); var result = [ a.name, a.nodeName ];
return result.join(",");
}
is(testAttribNodeNameFoldsCaseGetNode2(), "b,b", "(7)");
function testAttribNodeNameGetMutate() { varbody = document.body; var a = body.ownerDocument.createAttribute("c");
a.nodeValue = "0"; body.setAttributeNode(a);
a = document.body.getAttributeNode("c");
a.value = "1";
a = document.body.getAttributeNode("c");
return a.nodeValue;
}
is(testAttribNodeNameGetMutate(), "1", "(8)");
var node = document.createElement("div"); var attrib = document.createAttribute("myAttrib");
attrib.nodeValue = "XXX";
node.setAttributeNode(attrib);
// Note, this is different to what WebKit does
is((new XMLSerializer).serializeToString(node), "
var o = document.createElement("div");
o.setAttribute("myAttrib","htmlattr");
o.setAttributeNS("","myAttrib","123");
is(o.getAttributeNodeNS("","myAttrib").nodeName, "myAttrib", "nodeName should be case-sensitive.");
is(o.getAttributeNode("myAttrib").nodeName, "myattrib", "nodeName shouldn't be case-sensitive.");
is(o.getAttributeNodeNS("","myAttrib").value, "123", "Should have got the case-sensitive attribute.");
is(o.attributes.length, 2, "Should have two attributes.");
o.setAttribute("myAttrib2", "htmlattr");
o.setAttributeNS("", "myAttrib2", "123");
is(o.attributes.length, 4, "Should have four attributes."); var an = o.attributes.removeNamedItem("myAttrib2");
is(o.attributes.length, 3, "An attribute should have been removed.");
is(an.value, "htmlattr", "The removed attribute should have been the case-insensitive attribute.");
is(o.getAttribute("myAttrib2"), null, "Element shouldn't have case-insensitive attribute anymore."); var an2 = o.attributes.removeNamedItemNS("", "myAttrib2");
is(an2.localName, "myAttrib2", "The removed attribute should be case-sensitive.");
is(o.attributes.length, 2, "Element should have two attributes.");
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.