run.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. var browser = require("../../lib/jsdom/browser/index");
  2. var dom = new browser.browserAugmentation(require("../../lib/jsdom/level2/html").dom.level2.html);
  3. var sax = require("./sax");
  4. var sys = require("sys");
  5. // TODO: change this example to use pluggable parser
  6. /**
  7. setup innerHTML setter
  8. */
  9. dom.Element.prototype.__defineSetter__('innerHTML', function(html) {
  10. // first remove all the children
  11. for (var i=this.childNodes.length-1; i>=0;i--)
  12. {
  13. this.removeChild(this.childNodes.item(i));
  14. }
  15. var currentElement = this, currentLevel = 0;
  16. /**
  17. setup sax parser
  18. */
  19. parser = sax.parser(false);
  20. parser.onerror = function (e) {
  21. };
  22. parser.ontext = function (t) {
  23. var ownerDocument = currentElement.ownerDocument || currentElement;
  24. var newText = ownerDocument.createTextNode(t);
  25. currentElement.appendChild(newText);
  26. };
  27. parser.onopentag = function (node) {
  28. var nodeName = node.name.toLowerCase(),
  29. document = currentElement.ownerDocument || currentElement,
  30. newElement = document.createElement(nodeName),
  31. i = 0,
  32. length = (node.attributes && node.attributes.length) ?
  33. node.attributes.length :
  34. 0;
  35. for (i in node.attributes)
  36. {
  37. if (node.attributes.hasOwnProperty(i)) {
  38. newElement.setAttribute(i, node.attributes[i]);
  39. }
  40. }
  41. currentElement.appendChild(newElement);
  42. currentElement = newElement;
  43. };
  44. parser.onclosetag = function(node) {
  45. currentElement = currentElement.parentNode;
  46. }
  47. parser.write(html).close();
  48. });
  49. var doc = new dom.Document("html");
  50. var implementation = new dom.DOMImplementation(doc, {
  51. "HTML" : "1.0",
  52. "DisableLiveLists" : "1.0"
  53. });
  54. var notations = new dom.NotationNodeMap(
  55. doc,
  56. doc.createNotationNode("notation1","notation1File", null),
  57. doc.createNotationNode("notation2",null, "notation2File")
  58. );
  59. var entities = new dom.EntityNodeMap(doc);
  60. var doctype = new dom.DocumentType(doc, "html", entities, notations);
  61. doc.doctype = doctype;
  62. doc.implementation = implementation;
  63. doc.innerHTML = '<html><head></head><body><div class="who"></div></body></html>';
  64. var window = {
  65. alert : function() { sys.puts(sys.inspect(arguments)); },
  66. document : doc
  67. };
  68. window.Sizzle = require("../sizzle/sizzle").sizzleInit(window, doc);
  69. var $ = require("./pure").pureInit(window, doc);
  70. $("div").autoRender({"who":"Hello Wrrrld"});
  71. sys.puts(doc.innerHTML);