Known issues

These are the currently known issues that can trip up the validator (and the user!).

  • Frames, ScrypTik is currently designed to work with a single HTML file and any of its javascript code in *.js include files. If a HTML file which is part of a frameset refers to an identifier in another file in the frameset for example "parent.propertyXyz" then "propertyXyz" will not be found. ScrypTik can treat groups of files as a "project" and depending on feedback, could syntax check them together.
  • There are literally hundreds of Built-in, Browser and DOM properties and methods attached to the various HTML <tag>s, some are obscure to say the least. Eg, the <img> tag has a property called "loop". ScrypTik copes with the more common DOM properties and methods and the list is added to frequently as more samples of code are tested (there are now over 750). You may get false errors as unrecognised DOM properties and methods are incorrectly interpreted as user-defined identifiers. You can see an alphabetic list of the properties and methods checked from the "view" menu or editor pop-up menu. A side-effect of this large number of DOM "keywords" is that it is very easy to inadvertantly use one as a user-defined identifier, eg "width". ScrypTik warns about this usage and it would seem preferable to avoid the DOM "keywords" as identifiers.
  • Layers are not resolved correctly which results in errors. Depending on feedback ScrypTik could keep a list of Layer names and reconcile them.
  • Regular expressions (between the / . . . /) are not thoroughly checked. Also, quotes within a regular expression constant cause highlighting weirdness (will be fixed, maybe regexp constants get their own color?).
  • Dynamic HTML created by Javascript which constructs names and id's may produce errors as the names cannot be reconciled. ScrypTik is a parser and has no concept of what happens at run time, e.g.
    for(var i=0; i<10; i++)
    .writeln("<input type='text' name='frmInp" + i +"' size='20'>");

    then if there is a statement like this:

        var xyz = frmInp3.value; // frmInp3 will not be found

  • If objects are passed as parameters, and constructors assign the parameter to properties or methods, then the parser has no idea that the property or method is itself an object. A work around is:

    function anObject(param1, param2) {
    .anotherObject = new AnotherObj(); // this sets up anotherObject
    .anotherObject = param1;
  • Table column identifiers created with <th>identifier</th> tags are not extracted and reconciled. Therefore when these identifiers are referenced they will be unresolved and give syntax errors. Maybe fixed depending on feedback.
  • An XHTML tag such as this: <input type="radio" name="btn2" checked onClick="normalColor()"> will produce a 'check the number of "=" symbols . . ' error. Browsers are happy with just checked, interpreting it as checked = "checked", however ScrypTik requires an equals sign following checked. Note that XHTML will insist on the long version of checked = "checked".
  • If HTML syntax highlighting is selected, the highlighting of </script> when this tag does not start on a new line is ignored. This means that all highlighting continues with whatever has been set for Javascript. A workaround is to make the </script> tag start on a new line. Will be corrected in a future version.
  • Variables constructed with eval( ) can't be reconciled, so ScrypTik parser may report false errors. ScrypTik can only validate syntax and has no knowledge of what happens at run time.