unsigned-long-reflection.html 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. <!DOCTYPE html>
  2. <script src="../include.js"></script>
  3. <script>
  4. test(() => {
  5. function testProperty(elementName, propertyName, propertyGetter, propertySetter) {
  6. const attributeName = propertyName.toLowerCase();
  7. function setValue(value) {
  8. let element = document.createElement(elementName);
  9. element.setAttribute(attributeName, value.toString());
  10. println(`${elementName}.getAttribute("${attributeName}") after ${elementName}.setAttribute("${propertyName}", "${value}"): ${element.getAttribute(`${attributeName}`)}`);
  11. println(`${elementName}.${propertyName} after ${elementName}.setAttribute("${attributeName}", "${value}"): ${propertyGetter(element)}`);
  12. element = document.createElement(elementName);
  13. try {
  14. propertySetter(element, value);
  15. println(`${elementName}.getAttribute("${attributeName}") after ${elementName}.${propertyName} = ${value}: ${element.getAttribute(attributeName)}`);
  16. println(`${elementName}.${propertyName} after ${elementName}.${propertyName} = ${value}: ${propertyGetter(element)}`);
  17. } catch (e) {
  18. println(`${elementName}.${propertyName} = ${value} threw exception of type ${e.name}`);
  19. }
  20. }
  21. setValue(0);
  22. setValue(1);
  23. setValue(2147483647);
  24. setValue(2147483648);
  25. setValue(4294967295);
  26. }
  27. testProperty("img", "hspace", (img) => img.hspace, (img, value) => img.hspace = value);
  28. testProperty("input", "size", (input) => input.size, (input, value) => input.size = value);
  29. testProperty("marquee", "scrollAmount", (marquee) => marquee.scrollAmount, (marquee, value) => marquee.scrollAmount = value);
  30. testProperty("marquee", "scrollDelay", (marquee) => marquee.scrollDelay, (marquee, value) => marquee.scrollDelay = value);
  31. testProperty("textarea", "rows", (textarea) => textarea.rows, (textarea, value) => textarea.rows = value);
  32. testProperty("textarea", "cols", (textarea) => textarea.cols, (textarea, value) => textarea.cols = value);
  33. });
  34. </script>