GithubHelp home page GithubHelp logo

imclab / domino Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fgnass/domino

0.0 1.0 0.0 1.19 MB

Server-side DOM implementation based on Mozilla's dom.js

License: BSD 2-Clause "Simplified" License

domino's Introduction

Server-side DOM implementation based on Mozilla's dom.js

Build Status dependency status dev dependency status

As the name might suggest, domino's goal is to provide a DOM in Node.

In contrast to the original dom.js project, domino was not designed to run untrusted code. Hence it doesn't have to hide its internals behind a proxy facade which makes the code not only simpler, but also more performant.

Domino currently doesn't use any harmony features like proxies or WeakMaps and therefore also runs in older Node versions.

Speed over Compliance

Domino is intended for building pages rather than scraping them. Hence Domino doesn't execute scripts nor does it download external resources.

Also Domino doesn't implement any properties which have been deprecated in HTML5.

Domino sticks to the DOM level 4 working draft, which means that Attributes do not inherit the Node interface. Also Element.attributes returns a read-only array instead of a NamedNodeMap.

Note that because domino does not use proxies, Element.attributes is not a true JavaScript array; it is an object with a length property and an item(n) accessor method. See github issue #27 for further discussion.

CSS Selector Support

Domino provides support for querySelector(), querySelectorAll(), and matches() backed by the Zest selector engine.

Usage

var domino = require('domino');

var window = domino.createWindow('<h1>Hello world</h1>');
var document = window.document;

var h1 = document.querySelector('h1');
console.log(h1.innerHTML);

Tests

Domino includes test from the W3C DOM Conformance Suites as well as tests from HTML Working Group.

The tests can be run via npm test or directly though the Mocha command line:

Screenshot

License and Credits

The majority of the code was written by Andreas Gal and David Flanagan as part of the dom.js project. Please refer to the included LICENSE file for the original copyright notice and disclaimer.

domino's People

Contributors

cscott avatar cspotcode avatar fgnass avatar fortes avatar saebekassebil avatar subbuss avatar welwood08 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.