2024-11-26 16:46:55 -03:00
<!DOCTYPE html>
< script src = "../include.js" > < / script >
< script >
test(() => {
2024-11-29 14:45:07 -03:00
function testProperty(elementNameOrFactory, propertyName, propertyGetter, propertySetter) {
2024-11-26 16:46:55 -03:00
const attributeName = propertyName.toLowerCase();
function setValue(value) {
2024-11-29 14:45:07 -03:00
let element;
let elementName;
if (typeof elementNameOrFactory === "string") {
element = document.createElement(elementNameOrFactory);
elementName = elementNameOrFactory;
} else {
element = elementNameOrFactory();
elementName = element.tagName.toLowerCase();
}
2024-11-26 16:46:55 -03:00
element.setAttribute(attributeName, value.toString());
println(`${elementName}.getAttribute("${attributeName}") after ${elementName}.setAttribute("${propertyName}", "${value}"): ${element.getAttribute(`${attributeName}`)}`);
println(`${elementName}.${propertyName} after ${elementName}.setAttribute("${attributeName}", "${value}"): ${propertyGetter(element)}`);
element = document.createElement(elementName);
2024-11-28 13:08:14 -03:00
try {
propertySetter(element, value);
println(`${elementName}.getAttribute("${attributeName}") after ${elementName}.${propertyName} = ${value}: ${element.getAttribute(attributeName)}`);
println(`${elementName}.${propertyName} after ${elementName}.${propertyName} = ${value}: ${propertyGetter(element)}`);
} catch (e) {
2024-11-29 14:45:07 -03:00
println(`${elementName}.${propertyName} = ${value} threw exception of type ${e.name}`);
2024-11-28 13:08:14 -03:00
}
2024-11-26 16:46:55 -03:00
}
2024-11-28 13:08:14 -03:00
setValue(0);
2024-11-26 16:46:55 -03:00
setValue(1);
setValue(2147483647);
setValue(2147483648);
setValue(4294967295);
2024-11-30 19:29:22 -03:00
setValue(4294967296);
2024-11-26 16:46:55 -03:00
}
2024-11-29 14:45:07 -03:00
const imageButtonInputFactory = () => {
const input = document.createElement("input");
input.type = "image";
return input;
}
2024-11-29 13:04:35 -03:00
testProperty("canvas", "width", (canvas) => canvas.width, (canvas, value) => canvas.width = value);
testProperty("canvas", "height", (canvas) => canvas.height, (canvas, value) => canvas.height = value);
2024-11-30 19:56:41 -03:00
testProperty("colgroup", "span", (colgroup) => colgroup.span, (colgroup, value) => colgroup.span = value);
2024-11-29 12:32:37 -03:00
testProperty("img", "height", (img) => img.height, (img, value) => img.height = value);
2024-11-26 16:46:55 -03:00
testProperty("img", "hspace", (img) => img.hspace, (img, value) => img.hspace = value);
2024-11-29 12:32:37 -03:00
testProperty("img", "width", (img) => img.width, (img, value) => img.width = value);
2024-11-30 17:00:53 -03:00
testProperty("input", "maxLength", (input) => input.maxLength, (input, value) => input.maxLength = value);
2024-11-30 17:06:38 -03:00
testProperty("input", "minLength", (input) => input.minLength, (input, value) => input.minLength = value);
2024-11-28 11:33:53 -03:00
testProperty("input", "size", (input) => input.size, (input, value) => input.size = value);
2024-11-29 14:56:24 -03:00
testProperty(imageButtonInputFactory, "height", (input) => input.height, (input, value) => input.height = value);
2024-11-29 14:45:07 -03:00
testProperty(imageButtonInputFactory, "width", (input) => input.width, (input, value) => input.width = value);
2024-11-26 17:40:48 -03:00
testProperty("marquee", "scrollAmount", (marquee) => marquee.scrollAmount, (marquee, value) => marquee.scrollAmount = value);
testProperty("marquee", "scrollDelay", (marquee) => marquee.scrollDelay, (marquee, value) => marquee.scrollDelay = value);
2024-11-29 08:19:31 -03:00
testProperty("select", "size", (select) => select.size, (select, value) => select.size = value);
2024-11-30 19:29:22 -03:00
testProperty("td", "colSpan", (tableCell) => tableCell.colSpan, (tableCell, value) => tableCell.colSpan = value);
2024-11-30 19:29:22 -03:00
testProperty("td", "rowSpan", (tableCell) => tableCell.rowSpan, (tableCell, value) => tableCell.rowSpan = value);
2024-11-30 19:00:16 -03:00
testProperty("textarea", "maxLength", (textarea) => textarea.maxLength, (textarea, value) => textarea.maxLength = value);
2024-11-30 18:57:18 -03:00
testProperty("textarea", "minLength", (textarea) => textarea.minLength, (textarea, value) => textarea.minLength = value);
2024-11-26 18:14:32 -03:00
testProperty("textarea", "rows", (textarea) => textarea.rows, (textarea, value) => textarea.rows = value);
testProperty("textarea", "cols", (textarea) => textarea.cols, (textarea, value) => textarea.cols = value);
2024-11-26 16:46:55 -03:00
});
< / script >