Scryptik javascript editor and validator

"Save Time Fixing Javascript Errors!"

ScrypTik is a shareware program for Windows™ that is a source code editor with a built in javascript parser to check, verify and validate your Javascript syntax. The Javascript code may be anywhere in the (x)html (functions inside <script> tags, include files or inline) and it will be extracted and validated. There is a 20 usage free trial, so download and try it out. This Javascript authoring tool could save you hours of frustration! This error checking is ideal for learners (especially programming beginners) and teachers of Javascript programming. Note, throughout this web site references to Javascript apply equally to JScript, ECMA-Script and ECMA-262. Also, it is not usual to refer to "Javascript" using two words - "java script".
 
You may have reached this site because you were trying to find "www.scryptik.com". Unfortunately that site is no longer available due to the incredible behaviour of a domain registrar called RegisterFly. ScrypTik remains fully supported from this new site. You can contact us here at our new email address. Update June 2007, Godaddy bought the Registerfly remnants and have saved the day!

"The value of ScrypTik Javascript editor"

"What ScrypTik Javascript editor does"

Get the free trial (full version, 20 usages, 1.3MB) Download now

View ScrypTik Javascript editor's Screenshot

Check out our java script poll results

Buy a license

Note, you need to be running the trial version before ordering and have your "machine code" available. You will receive your unlock key by email from us within a few hours.
 Prices 
a single user license US$29.00
a 2 to 10 user licenseUS$59.00
an 11 or more user licenseUS$99.00

"Who would use it?"


Example


The first indication of an error is a small warning icon in the lower left corner (status bar) of your browser such as this:
Double clicking the icon produces the dialog (you need to click "Show Details>>"). Javascript editor
This type of feedback can be difficult. The HTML file which is being displayed here is shown below in the ScrypTik editor. The error pane shows what is wrong in a user friendly way, and saves time by avoiding a trip to a browser to find errors.
ScrypTik java script editor A Javascript function is being called , initMyPage(), which cannot be found because it is declared with a lower case "p". The problem is presented to the user in a much clearer way than "Line: 15 Char: 1 Object expected" and it can be fixed and syntax checked in the editor immediately.

ScrypTik javascript validator is not primarily intended to be a front-line web page authoring tool although its quite capable for a non WYSIWYG editor. It is aimed at catching the syntax errors that inevitably occur when incorporating Javascript into HTML.
 

"How do I get ScrypTik?"

ScrypTik javascript editor is shareware. It runs on any MicroSoft 32 bit Windows(TM); operating system (Win95, 98, ME, NT, 2000, XP, 2003, Vista). You can download the trial version which will give you 20 free usages. After (or during) the trial you may purchase a license from PayPal. This license never expires for that major version and includes all minor upgrades free.
 
Details of how to purchase a license are in the "Register ScrypTik" option of the "File" menu and in the help.

Get the free trial, (full version, 20 usages, 1.3MB) Download now

Downloads

We have five downloads available, ScrypTik version 1.13 (August 2005), ScrypTik version 1.14 (April 2007), ScrypTik version 1.15 (May 2007), ScrypTik version 1.16 (June 2010) and the PAD file for shareware distributors. Note, the pad file is stored within the ScrypTik zip files.

ScrypTik is shareware, you get to try before you buy. There are 20 free trial usages.

Version 1.16 works on Win7. If you install this on an OS prior to Win7 over the top of an existing install, you will probably need a new unlock key. Just email us the new machine code and we will supply a new unlock key. If you have trouble unzipping, try the free open source program - 7zip.

Version 1.15 works on Vista, previous versions did not load the help file and crashed on exit.

Version 1.14 has some new features but may produce more "false" errors. If you find this, just install version1.13 over the top of it.

Existing users of 1.13 may require a new unlock key when upgrading to 1.14. Just email us the new machine code and we will supply a new unlock key.

Screenshot of editor

Screenshot of ScrypTik Java script editor

ScrypTik screenshot

Javascript libraries

Currently, several comprehensive Javascript libraries are receiving attention from web developers for Web 2.0 "richly interactive features" and AJAX implementation. Also, they insulate the web developer from the erratic and "non-standard" behaviour of the popular browsers. Below is a typical example of tabs providing access to different content. The content associated with each tab fades smoothly in and out as tabs are clicked. These were created using the "Tabs" plugin for jQuery from Klaus Hartl http://stilbuero.de/tabs/. These tabs record usage in browser history so the "back button" behaves as a user would expect (the jQuery plugin for this is "history_remote").

Jquery from John Resig and the jquery team. I use jQuery because it is packaged with the CMS I use (Drupal). I wrote a module to only include the plugin and associated css on specified pages.
MochiKit, a lightweight Javascript library. The slogan on their website is "MochiKit makes Javascript suck less", an interesting view, faint praise . . . !
Dojo is an Open Source DHTML toolkit written in JavaScript. It builds on several contributed code bases (nWidgets, Burstlib, f(m)), which is why we refer to it sometimes as a "unified" toolkit. Dojo aims to solve some long-standing historical problems with DHTML which prevented mass adoption of dynamic web application development.

Their website is Drupal too, jquery and dojo playing together!
Prototype is a JavaScript Framework that aims to ease development of dynamic web applications. Featuring a unique, easy-to-use toolkit for class-driven development and the nicest Ajax library around, Prototype is quickly becoming the codebase of choice for web application developers everywhere.

Its development is driven heavily by the Ruby on Rails framework, but it can be used in any environment.
The Yahoo! User Interface (YUI) Library is a set of utilities and controls, written in JavaScript, for building richly interactive web applications using techniques such as DOM scripting, DHTML and AJAX. The YUI Library also includes several core CSS resources. All components in the YUI Library have been released as open source under a BSD license and are free for all uses.

Their website has fantastic video presentations from Douglas Crockford and others on Javascript, the DOM and browsers in general, I recommend them.
I guess all Javascript programmers are interested to know what libraries are being used. If you use one of these libraries, please vote for one listed below. If I have omitted a popular library, please drop me an email and I will add it.

You can see the results of this poll here.

Your favourite Javascript library?

All the errors, warnings and hints

A list of over 200 possible problems reported by ScrypTik javascript validator including dialogs, hints, warnings and errors.
Notes:
  • The letter "n" means some number, usually a line number.
  • "identifier" means a user defined (programmer) name for a variable, function, object property or method etc.
  • Some errors are dependent on the options selected, eg the warning for declaring global variables inside a function is optional.
  • Sometimes the line number reported for an error is beyond where the error actually is. This is because parsers are expecting something which may be missing, and by the time it is realised that it is missing, the parser is examining the next line or beyond. Mostly this is caused by a missing semicolon on the previous line.
  • The "parsing stopped, correct previous error(s)" means the parser has got stuck. These situations are being corrected (if possible) as they are discovered. Please note the code that causes this and submit a bug report.
Application Dialog Errors
Explanation
File "FileName'' does not exist Can only happen when opening a file from Windows Explorer and Windows dde fails with the association somehow.
This file has been changed by another application! OK to Re-load this file now? If you edit and save this file with another application eg notepad, then you get one chance to re-load it. Very confusing to edit the same file concurrently from different applications, you can easily lose changes.
File: "FileName" is already open! ScrypTik does not allow the same file to be opened more than once. It is too confusing to have the same file opened more than once, eg saving a copy that does not have the latest changes.
File: "FileName", has changed. Save now? Content has changed, you can save changes or discard them by not saving.
Document "Name" has changed, do you want to save before viewing in Browser? If you do not save before viewing in the browser, you will not see the latest changes.
File "FileName" not found, must Save before viewing. A new file must be given a name and saved before viewing.
No further occurence of ''SomeText'' found. Repeat search (F3) could not find another occurence.
File extension not same as selected filter. Please confirm you wish to save file as "?????" The filters are .htm, .html, .js etc. If you select a filter and name your file using a different extension, this warning appears.
File: "FileName" is already open! ScrypTik does not allow you to "Save As" this name. Can't save as a file that is already open in ScrypTik.
File: "FileName"' no longer exists. This entry will be removed from the Reopen list. ScrypTik remembers the last 10 files worked on. A file in the reopen list has been deleted or moved. The list entry will be removed. You will have to locate it and open it using "open".
No browser selected! If a choice of browser is offered at view time, you must select one to proceed.
Table not complete, non numeric entry in table details Could not create HTML table because an entry in one of the numeric fields (cols, rows, border etc) was invalid.
List not complete, non numeric entry in list items Could not create HTML list because an entry in one of the numeric fields (number of items) was invalid.
Non numeric entry in margin details The print dialog has options for margin size. An entry for one of them was invalid.
#
Syntax Check Hints
Explanation
1
recommended to avoid an identifier name of "identifier" The list of names to avoid is checked for every variable, parameter etc. The list is a subset of the DOM keyword list. This is probably a redundant check.
2
recommended to use "var" when declaring variables in a function, "identifier" will be treated as global! In Javascript, variables may be created without using the keyword "var". If the "var" keyword is omitted when declaring variables inside a function, then those variables are global, not local.
#
Syntax Check Warnings
 
10
unknown escape sequence "\" + Character, (maybe a correct URL or file path) The valid escape codes are:- \b, \t, \n, \v, \f, \r, \", \', \\, \000 (octal number 0 -377), \xHH (hex), \uHHHH (unicode) where H is a Hex value (0 - F)
11
local var "varName" already declared on line n Declaring the same variable again - warning only.
12
local var "varName" same name as a function parameter A local variable "shadows" a parameter by using the same name. Very likely an error.
13
missing semicolon If the option to warn on every missing semicolon is active, this message appears for every line with a missing semicolon.
14
duplicate function - "functionName". Browsers will use the last one without reporting any error! You may have several functions named the same and browsers do not report any error. Not a good idea!
15
empty block "{...}" or missing "{" in function Function may be under construction - warning only.
16
the "arguments" property of functions is deprecated Meaning this will eventually not be a feature of later versions of Javascript and therefore use of "arguments" is not a good idea.
17
ECMAscript doesn''t allow line terminators between "throw" and expression To adhere to ECMA you can't have a line-break between "throw" and expression.
18
catch Id same name as a function parameter Catch Id should have a unique name.
19
catch Id same name as a local variable ditto
20
catch Id same name as a global variable ditto
21
Identifier named "Var" is probably meant to be keyword "var" Possible typing error.
22
variable/function name "identifier" is a reserved word or DOM object Should not use Javascript reserved words, preferable not to use DOM object names.
23
global var "identifier" already declared on line n Declaring the same variable again - warning only.
24
";" after "if (expression)", "if" now redundant The semicolon terminates the if which is probably not what you want.
25
empty block in "do . . while" No statements inside do . . while, maybe under construction.
26
should probably be test for equality "==" not assignment "=" Common mistake to use one = (assignment) when you should use two == (are two values the same?)
27
";" after "while (expression)", will only loop expression instructions The semicolon terminates the while which is possibly not what you want.
28
"while" empty No statements inside while loop body, maybe under construction.
29
";" after "for", will only loop instructions inside ( ) The semicolon terminates the for which is possibly not what you want.
30
empty "for" loop body No statements inside for loop body, maybe under construction.
31
preferable to have expression and ++ or -- on same line If your code ever encounters automatic semicolon insertion, you risk an error.
32
empty array initialiser Warning only.
33
invalid array index expression The expression inside [] is invalid.
34
Include File "FileName" has been changed but not saved When checking syntax, ScrypTik always reads include files from disk, NOT from the editor.
35
HTML Name "identifier" missing "]" An HTML named element has an opening index [ without matching ].
36
tag name/id "identifier" is a DOM property/method Try to avoid using these names.
37
HTML Name/Id "identifier" is duplicated Browsers don't seem to mind this, but it does not seem exactly "robust"!
38
Name and Id attributes have different values "HTMLName" & "HTMLId" Warning only.
39
check number of equals ("=") symbols (or "s)) HTML tags with attributes are checked for the number of "=" symbols being the same as the number of attributes. It is better (compulsory in XHTML) that every attribute value is quoted (inside ' or ").
40
Form name/id "FormName" is a DOM property/method Try to avoid using these names.
41
</form> tag found without preceding <form> tag (maybe in dynamic HTML) Tag pairing, should normally match unless the opening <form> tag is created dynamically.
42
</script> tag missing No closing tag found for a <script> tag.
43
</form> tag missing No closing tag found for a <form> tag.
44
HTML comment tag never closed with a "-->" tag This can mean that large parts of a document are ignored because they are treated as a comment. May need a closing comment tag.
45
HTML object "identifier" referenced earlier than declaration on line n. Global or inline Javascript code which refers to HTML objects that are at higher line numbers than the code can cause browser errors. Move the <script> section to after the closing body </body> tag.
46
function "functionName" not called from Javascript or HTML Maybe a redundant function that you can remove, or maybe about to be used.
47
possible HTML closing comment tag "-->" found within script If it really is meant to be an HTML comment, then it should be preceeded by a Javascript/Jscript comment symbol "//".
48
The update part of a "for" loop should change a variable by assignment or pre/postfix operator. Usually the third part of a for ( ; ; ) changes something eg count++.
49
space between < and input causes problems with some browsers The word "input" must be immediately after the opening tag symbol "<".
50
empty block or missing statement in "if" No statements after "if", maybe under construction.
51
empty block or missing statement in "else" No statements after "else", maybe under construction.
52
function name "identifier" is duplicated in HTML Names Some browsers don't like Javascript function names duplicating HTML object names.
53
function "identifier'" is an object method Object methods should only be called via an object instance, not directly.
54
return expression missing or invalid Missing or faulty expression following a return instruction.
#
Syntax Check Errors
 
60
invalid #'?' character constant Invalid character or missing "'"
61
invalid exponent part in a decimal literal Non digit (0-9) in an exponent literal
62
\x used with invalid hex digit in following 2 chars \x expects two valid hex characters to follow
63
\u used with invalid hex digit in following 4 chars \u expects four valid hex characters to follow
64
\c used with invalid following char, only A - Z \c expects one character in range A - Z.
65
\octal value bigger than 0377

Valid octal values only 0 - 377

66
unterminated "name" The closing ' or " was missing. Can be a new line or end of script reached before the closing quote.
67
missing string constant closing quote The closing ' or " was missing. Can be a new line or end of script reached before the closing quote.
68
label "identifier" already declared Labels must be unique.
69
duplicate embedded function "identifier" A nested function duplication.
70
duplicate parameter name, "identifier" Each function parameter name must be unique.
71
label "identifier" not found break or continue with an unknown "goto" label.
72
"else" without an "if" "else" is an optional part of "if" and cannot be a statement on its own.
73
extra closing block symbol "}" found The number of opening and closing block symbols must be the same.
74
unrecognised symbol found An unexpected symbol found so there is no specific error reported.
75
parsing stopped, correct previous error(s) See note at the top of this page.
76
on previous lines n opening block symbol "{" found without matching "}" The number of opening and closing block symbols must be the same.
77
missing symbol or operator between identifiers or literals (or space in identifier) Usually two variables or literals are separated by an operator, eg myVar + 1.
78
missing identifier or literal between operators Usually two operators without a variable or literal does not make sense eg, / *
79
missing "." between DOM elements or identifiers Dot expected but not found.
80
invalid space between comparison symbols The combined two-character comparison symbols !=, <= and >= can't have a space between them.
81
"!" is not a relational symbol "!" is a unary operator not a conditional.
82
( expected Opening parenthesis expected eg after if
83
".arguments" property only applies to current function name, not "identifier" The "arguments" property may be preceded by the exact current function name.
84
function parameter expected Comma found in parameter list without following parameter.
85
function name expected A valid identifier must follow the key word "function".
86
) expected Closing parenthesis expected eg after if (expression
87
";" found after function definition In some browsers this causes a function to do nothing without reporting any error.
88
: expected in object literal Property/value pairs must be separated by a colon.
89
} expected to complete object literal The comma separated list of property/value pairs must be enclosed in curly brackets.
90
global label "identifier" duplicated Labels must be unique.
91
"label" statement fail or missing ";" An error with a label.
92
"continue" only inside a loop Can only use "continue" instruction inside a for, while or do while loop.
93
"break" only inside a loop or switch Can only use "break" instruction inside a for, while or do while loop or switch.
94
   
95
"with" expression invalid Faulty expression following a with ( instruction.
96
invalid or no statements in "with" block Some error with the contenets of { } following with
97
"throw" expression invalid Faulty expression following a throw instruction.
98
invalid expression in "( )" The expression inside ( ) of a selection, iteration or function call is invalid.
99
{ expected Start of block symbol expected eg after a function declaration.
100
"case" expression fail Faulty expression following a case : statement inside a switch instruction.
101
":" expected after case expression After case expression there must be a :
102
"case" action statement(s) fail Faulty statement(s) following a : in case.
103
use "default" not "else" in switch Switch has its own keyword default for non-specified conditions. else only applies to if.
104
parse switch fail Some general failure with a switch statement.
105
"}" missing to end switch statement Switch must terminate with an }.
106
"try" block parse statement fail Faulty statements following "try".
107
"catch" or "finally" expected "Try" block must be followed by "catch" or "finally"
108
identifier expected An identifier such as a variable or function name is expected.
109
exception statement fail or empty Invalid (or no) statement following catch or finally.
110
"finally" block statement(s) fail Faulty statements following "finally".
111
only one "catch" permitted in Javascript Other languages permit multiple catch blocks but not Javascript.
112
"catch" must be before "finally" Can't have catch after finally, finally must be last.
113
var initialiser expression fail Expression following = when declaring a variable is invalid.
114
declared variable can only be initialised by assignment ("=") Cannot initialise with += or -= etc, only =
115
invalid character(s) after variable name Variable name can only be followed by assignment, comma, list closing symbol or statement separator.
116
variable name is a reserved word or DOM object You cannot name a variable with one of Javascript's "reserved" or "key" words such as "if" or "for".
117
identifier expected after comma Comma indicates another variable to declare, but no identifier found.
118
no variable(s) declared after "var" Need to name the variable.
119
"=" or "+=" expected after status/defaultStatus status/defaultStatus must be followed by "=" or "+=".
120
invalid expression following "=" Invalid right hand side of assignment operator (=).
121
expression fail in "if" The expression inside ( ) following if is invalid.
122
; expected in "for" Inside the ( ) after for you need three optional expressions separated by two compulsory ;.
123
} expected Closing block symbol expected.
124
";" after "do" The semicolon terminates the do while which is probably not what you want.
125
"while" expected Must be while after the do block
126
"(" expected after "while" Expected boolean expression enclosed in ( ) after while
127
"while" expression fail Invalid expression inside ( ) after while
128
) expected after expression Closing bracket expected.
129
"(" expected after "for" for must be followed by expression inside ( )
130
identifier expected after comma in "for" Comma indicates another variable or statement, but no identifier or statement found.
131
invalid initialiser in "for" Start value for control variable(s) is invalid.
132
continuation expression fail in "for" The expression which controls how long the for loop keeps repeating is invalid.
133
update expression fail in "for" The expression which increments or decrements variable(s) in a for loop is invalid.
134
identifier expected after "in" Must be an identifier after "in" in for .. in.
135
only one variable allowed in "for .. in" The for .. in statement can only control one variable.
136
failed all iteration parsing Something general wrong with while, do .. while or for loops..
137
expression expected after comma General error where there should be an identifier or expression following a comma in a list.
138
assignment(=) only to a variable, object property or defaultStatus The left hand side of an assignment can only be a variable, object property or DOM read/write property such as defaultStatus.
139
rhs of assignment(=) missing or invalid The right hand side of an assignment must be valid.
140
statement block { } invalid in "? :" The ternary operator can only contain a single statement for each branch.
141
invalid statement after ? The ternary operator must be followed by a valid statement.
142
";" not valid in "? :" As the ternary operator only permits single statements, statement separators are invalid.
143
":" expected Ternary operator expects a : to separate each branch statement.
144
invalid statement after : In ternary operator, must be valid statement after :.
145
logical OR fail Error in combining boolean conditions with "||".
146
logical AND fail Error in combining boolean conditions with quot;&&".
147
bitwise OR fail Error in bit matching with "|".
148
bitwise XOR fail Error in bit matching with "^".
149
bitwise AND fail Error in bit matching with "&".
150
logical equality fail Error with "==" or "!=" or "===" or "!==".
151
invalid relational expression Error with "<" or ">" or "<=" or ">=" or "!".
152
shift fail Error with a bitwise shift operator.
153
add or subtract fail Error with add or subtract expression.
154
multiply, divide or modulus fail Error with multily, divide or modulus (%).
155

expression expected after "typeof"

The syntax is typeof(someExpression).
156
unary expr fail Error in "void", "typeof", "+", "-", "++", "--", "~" or "!".
157
"]" expected Missing closing square bracket after [ expression.
158
"new" fail Error with the object being created.
159
can't instantiate a "Math" object Math is the only built-in object you cannot instantiate.
160
invalid expression after "[" Error with expression following [.
161
identifier expected after "." Eg this. and omitting the identifer that should follow the dot.
162
"(" expected after setTimeout setTimeout must be followed by two expressions inside ().
163
"," or "]" expected In a list inside [ ] an expression must be followed by a comma or the closing ]
164
invalid parameters inside "( )" Error from the argument parser.
165
invalid expression in DOM parameter In a DOM identifier, an invalid expression was found inside ( ).
166
invalid expression in DOM [ ] In a DOM identifier, an invalid expression was found inside [ ].
167
Include File "FileName" does not exist. The file referenced in the "src=" attribute of a <script> tag could not be found.
168
unmatched opening and closing parethesis ( ) A HTML tag has a mismatch in the number of opening and closing brackets.
169
uneven number of double quotes " A HTML tag has a mismatch in the number of double quotes.
170
unmatched opening and closing curly brackets { } A HTML tag has a mismatch in the number of opening and closing curly brackets.
171
<script> tag found within <script> section, fix and try again Cannot nest <script> sections, must close one off before opening another.
172
<script> tag found without "language = Javascript/Jscript", ignoring script section Because ScrypTik only checks Javascript and Jscript, not VBscript, the language must be specified in order for the script to be checked.
173
</script> tag found without preceding <script> tag Cannot close a <tag> that isn't opened.
174
missing closing quote A HTML attribute value has an opening quote without a closing quote.
175
duplicate form name/id "identifier" found Browsers don't seem to mind this, but it does not seem exactly "robust"!
176
duplicate object or applet name/id "identifier" found HTML object tag name is duplicated.
177
Object method, variable or parameter "identifier" not found In an object constructor function a right hand side method, variable or parameter could not be found.
178
new object "identifier" not found Creating a user defined object with new, the constructor function could not be found.
179
constructor or instance "identifier" not found The constructor function or instance could not be found when adding a property or method (maybe by using prototype).
180
function or method "functionName" not found, (maybe constructor?) A called function could not be found.
181
global label "identifier" not found Missing label referred to by a "break" or quot;continue".
182
global var (or function, prototype or object property/method) "identifier" not found Missing variable from global code.
183
HTML object "identifier" not found An identifier referenced by myForm.myIdentifier.value could not be found.
184
"identifier" not found in local/global vars or HTMLNames Missing variable. It has not been declared using "var" keyword, as the left hand side of an assignment or established as an HTML object.
185
Object method or propery "identifier" not found in "constructor" or local variables Missing property or method referred to by an object's method using "this.identifier".
186
"identifier" not found in local/global vars, parameters, functions or object properties/methods Missing identifier referred to within a function.
187
"identifier" not found in constructor "identifier" properties Missing identifier referred to by "this.identifier" within an object's method.
188
event uses "identifier" not found in HTML Names Event links to another HTML object's onClick event with "identifier.click" that can't be found.
189
"=" expected following "id" or "name" "id" or "name" should be followed by "=" then identifier name.
190
expression expected after : in object literal Must follow ":" with valid expression.

What our users say

Read what two course controllers at tertiary institutes say about using ScrypTik javascript editor and validator for teaching advanced web application development.
 
"I have used ScrypTik with our Advanced Web Application development course, a second year degree course which involves advanced HTML, cascading style sheets and Javascript. We have up to 48 students and they all found ScrypTik easy to use and very productive."
 
Stephen Corich MBS, BSc
Course Controller
Eatern Institute of Technology
Hawkes Bay, New Zealand.


 
"At Whitireia, ScrypTik has made Javascript (and with it, elementary programming) accessible to a wider range of students. An otherwise arcane topic has been rendered colourful, interactive and fun, working in that most familiar of environments - a web page. The user interface is simple and intuitive, yielding instant feedback on defects in code. Its likely that browsers will become less tolerant of sloppy code; in this regard, ScrypTik is one step ahead by enforcing these standards now."
 
Rob Cambell
Course Controller
Whitireia Community Polytechnic
Porirua, New Zealand.

Frequently Asked Questions

Q. How do I download scrypTik?
 
A. Try one of these:

  • Select "downloads" from the menu top left, then click on "ScrypTiknnn.zip".
  • There is also a direct link to the zip file on the home page - "Get the free trial".
  • Easiest way, click here to download ScrypTik Javascript Editor!

 
Q.Where do I find the "machine code"?
 
A. You run ScrypTik and from the "File" menu select "Register ScrypTik". This screen will show you the machine code and instructions on registering.
 
Q. Why do I get an error running my script in my browser when ScrypTik reports no errors?
 
A. ScrypTik checks (validates) the syntax and some semantics of all Javascript code. It is still possible to get "run-time" errors with logic mistakes such as null object references. This behaviour is no different from most other programming languages. Edit, compile and test, that's software development.
 
Q. Why is it called "ScrypTik"?
 
A. Any or all of these:

  • It sounds (and is spelt a bit) like "cryptic", and computer programming often seems cryptic to beginners.
  • The "Scrypt" part is similar to "Script" and we are dealing with a scripting language.
  • The "Tik" part sounds like "tick" which is a universal mark for correctness, so ScrypTik can give your code a stamp of approval! (The program icon is a tick too.)
  • Its just a name!

 
Q. What are tokens? Why does it tell me how many tokens there were after a check?
 
A. A token is a parsed item of javascript, each keyword, symbol, literal, variable etc is a token. The token count indicates how much javascript code there is, most people will ignore it.
 
Q. I had to replace my hard disk drive and after re-installing the operating system and ScrypTik, the registration code no longer works?
 
A. This is because the machine code is generated from various hardware serial numbers and it will have changed. E-mail our support to get a new registration code. You will need to supply the new machine code and the name you originally registered under. We will then give you a new registration code.
 
Q. Will ScrypTik run on a local area network (LAN)?
 
A. Yes, there are two multi-user licenses, either 2 - 10 users or 11+ users. Install (ie run the setup.exe once unzipped) on a server. Give workstation users a desktop shortcut and/or a menu item which links to the exe on the mapped network drive (the server). Each user will have their own ini file stored on their personal drive in a folder named "ScrypTik". An alternative is to install the exe on each workstation and the ScrypTik License Server (ScryLSrv) on a server. After configuring IP and port number for both server and workstation (plus retry count and other protocol stuff), each workstation ScrypTik will check with the License Server for registration when it starts execution. Contact us if you require the License Server.
 
Important, when supplying the machine code to register multi-user ScrypTik, it must be the machine code from the "server" machine, not one of the workstations where you trialled the software. It is easy to inadvertently use the trial machine when registering, as the trial is designed to only run on a local machine, not from a network drive.
 
Another option once you have a multi-user license, is to just get as many unlock keys as you require, one for each workstation. Again, just email us and we will supply the keys.
 
Q. How have you tested ScrypTik?
 

A. The basic test data is all the samples (about 300) from Danny Goodman's "Javascript Bible". Then there are additional tests for object oriented issues and nested functions.

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++)
          document
    .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) {
      this
    .anotherObject = new AnotherObj(); // this sets up anotherObject
      this
    .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.

Revision history

All details about each revision of ScrypTik javascript editor and validator.
 
17 May 2007 version 1.15 released
  • Loads help file on Vista Home Basic (and hopefully all versions of Vista).
  • Doesn't attempt to unload help if it didn't load. Could only be stopped on Vista from task manager arrrrrgh!
  • Fixed bug with semicolon after {} in certain circumstances.
17 April 2007 version 1.14 released
  • [CDATA] recognised.
  • Some SVG features recognised.
  • Changed references to web site and support to this new site.
27 August 2005 version 1.13 released
  • Fixed Access Violation (in ntdll.dll) when closing editor tabs if lines had been deleted.
  • Added PayPal option to Register screen and Help.
8 August 2005 version 1.12 released
  • Fixed status bar display on higher screen resolutions.
  • Now saves and restores pane sizes on closing/opening.
  • Added how to get machine code to FAQ in the Help.
  • Various minor bug fixes.
21 June 2005 version 1.11 released
  • Added File Directory (explorer) to left view pane.
  • Added ability to load javascript code from a remote site into a read-only editor, for example, <script type="text/javascript" src="http://www.somesite.com/jsutil.js">.
  • Fixed range error with a timing counter that would cause splash screen to display forever! Only happened if Windows had been running for about 20 days.
  • Various minor bug fixes.
12 April 2005 version 1.10 released
  • Fixed absolute file path with include files.
  • Open file filter now includes *.wsf files.
  • Closing <script> tag with /> (xhtml) now recognised.
  • Various minor bug fixes.
24 February 2005 version 1.09 released
  • Now recognises XMLHTTPRequest object and methods.
  • Update expression in for ( ) now recognises moveNext and movePrevious.
  • Fixed case sensitivity of file extensions.
  • Fixed large integers overflow error.
  • Fixed backspace updating of cursor pos when moving to other lines.
  • Changed error reporting of semi-colon after a block, IE allows it but not strict ECMA.
  • Various minor bug fixes.
25 November 2004 version 1.08 released
  • Projects feature added, files may be grouped together.
  • Display of "parent" navigation tree and errors remains viewable when editing included files.
  • FTP to load and save remote files.
  • Can automatically check the website to see if there is a newer version of the software.
  • Various minor bug fixes.
7 September 2004 version 1.07 released
  • Firefox browser recognised.
  • View in browser has option to process the file with a web server (.php .asp etc).
  • Various minor bug fixes.
29 July 2004 version 1.06 released
  • Fixed random memory Access Violation on close if help file was left open (ActiveX timing issue).
  • Various minor bug fixes.
27 June 2004 version 1.05 released
  • License server option for multi-user registration.
  • File Open dialog will open multiple selected files.
  • Include file names with query string (?xyz=2 . . .) handled correctly.
  • Enumerator and WScript now recognised.
  • No more false errors on the methods and properties of ActiveXObjects.
  • Editor improvements, can set tab size, optionally tabs as spaces, autoindent, autounindent.
2 April 2004 version 1.04 released
  • Undo right back to beginning marks file as unmodified.
  • File close shortcut now Cntl F4 instead of Alt X
  • Recognises <defanged_script . . .> but syntax highlighting ignores.
  • JSON (JavaScript Object Notation) partially recognised (.method and .inherits).
  • Installation no longer overwrites an existing .ini file.
  • Fixed Access Violation if changing syntax colors after closing file(s).
  • if (foo in bar) now parsed.
  • Unix fwd slashes in include path name now handled. Also ../ and .../ stepping up levels handled.
9 Feb 2004 version 1.03 updated

  • Improved color selection from web safe and web named colors.
  • More options for warnings and navigation tree.
  • Fixed dialog layouts when large fonts selected.
  • Fixed bugs with prototypes for user defined objects.

12 November 2003 version 1.03 released as shareware

28 August 2003 version 1.03 released

  • Javascript code tree view added.
  • Tidy up of the Help.
  • Numerous, minor bug fixes.

6 May 2003 version 1.02 released

  • Server side scripting (eg JScript in ASP) handled separately from client side.
  • Tip of the day feature added.
  • Numerous, minor bug fixes.
15 January 2003 version 1.01 released
  • Print preview added.
  • List of files to be (optionally) automatically opened on start-up.
  • Option to perform syntax check on file open.
  • HTML tags, attributes etc now all lower case to comply with XHTML standard.
  • Option to make single tags XHTML compliant (<br> becomes <br /> etc)
  • Hovering over an error displays additional information about the error.
  • Dynamic HTML tags extracted.
  • Nested functions now parsed.
  • Prototype inheritance handled.
  • Internal efficiency improvements, minor editor bugs fixed, missing semicolon count fixed.
It all began on 22 October 2002 with beta version 1.0 released to training providers within New Zealand.

Software license

Does anybody actually read software licenses? Well if you do, here it is.

ScrypTik © 2002-2025 Purple Oar Software. All Rights Reserved.

Software License

ScrypTik - PRODUCT LICENSE INFORMATION

NOTICE TO USERS: CAREFULLY READ THE FOLLOWING LEGAL AGREEMENT. USE OF THE SOFTWARE PROVIDED WITH THIS AGREEMENT (THE "SOFTWARE") CONSTITUTES YOUR ACCEPTANCE OF THESE TERMS. IF YOU DO NOT AGREE TO THE TERMS OF THIS AGREEMENT, DO NOT INSTALL AND/OR USE THIS SOFTWARE (IF ALREADY INSTALLED, REMOVE ALL SOFTWARE FILES FROM YOUR STORAGE DEVICES AND CEASE TO USE THE PRODUCT). USER'S USE OF THIS SOFTWARE IS CONDITIONED UPON COMPLIANCE BY USER WITH THE TERMS OF THIS AGREEMENT.

1. LICENSE GRANT. Purple Oar Software grants you a license to use one copy of the version of this SOFTWARE on any one system for as many licenses as you purchase. "You" means the company, entity or individual whose funds are used to pay the license fee. "Use" means storing, loading, installing, executing or displaying the SOFTWARE. You may not modify the SOFTWARE or disable any licensing or control features of the SOFTWARE except as an intended part of the SOFTWARE's programming features. When you first obtain a copy of the SOFTWARE, you are granted twenty (20) evaluation usages, after which you must pay for the SOFTWARE according to the terms and prices discussed in the SOFTWARE's documentation, or you must remove the SOFTWARE from your system. This purchased license is not transferable to any other system, or to another organization or individual. You are expected to use the SOFTWARE on your system and to thoroughly evaluate its usefulness and functionality before making a purchase. This "try before you buy" approach is the ultimate guarantee that the SOFTWARE will perform to your satisfaction; therefore, you understand and agree that there is no refund policy for any purchase of the SOFTWARE.

2. OWNERSHIP. The SOFTWARE is owned and copyrighted by Purple Oar Software. Your license confers no title or ownership in the SOFTWARE and should not be construed as a sale of any right in the SOFTWARE.

3. COPYRIGHT. All copyrights to ScrypTik are exclusively owned by Purple Oar Software. The SOFTWARE is protected by New Zealand copyright law and international treaty provisions. You acknowledge that no title to the intellectual property in the SOFTWARE is transferred to you. You further acknowledge that title and full ownership rights to the SOFTWARE will remain the exclusive property of Purple Oar Software and you will not acquire any rights to the SOFTWARE except as expressly set forth in this license. You agree that any copies of the SOFTWARE will contain the same proprietary notices which appear on and in the SOFTWARE.

4. REVERSE ENGINEERING. You agree that you will not attempt to reverse compile, modify, translate, or disassemble the SOFTWARE in whole or in part.

5. NO OTHER WARRANTIES. PURPLE OAR SOFTWARE DOES NOT WARRANT THAT THE SOFTWARE IS ERROR FREE. PURPLE OAR SOFTWARE DISCLAIMS ALL OTHER WARRANTIES WITH RESPECT TO THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES OR LIMITATIONS ON HOW LONG AN IMPLIED WARRANTY MAY LAST, OR THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THE ABOVE LIMITATIONS OR EXCLUSIONS MAY NOT APPLY TO YOU. THIS WARRANTY GIVES YOU SPECIFIC LEGAL RIGHTS AND YOU MAY ALSO HAVE OTHER RIGHTS WHICH VARY FROM JURISDICTION TO JURISDICTION.

6. SEVERABILITY. In the event of invalidity of any provision of this license, the parties agree that such invalidity shall not affect the validity of the remaining portions of this license.

7. NO LIABILITY FOR CONSEQUENTIAL DAMAGES. IN NO EVENT SHALL PURPLE OAR SOFTWARE OR ITS SUPPLIERS BE LIABLE TO YOU FOR ANY CONSEQUENTIAL, SPECIAL, INCIDENTAL OR INDIRECT DAMAGES OF ANY KIND ARISING OUT OF THE DELIVERY, PERFORMANCE OR USE OF THE SOFTWARE, EVEN IF PURPLE OAR SOFTWARE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IN NO EVENT WILL PURPLE OAR SOFTWARE' LIABILITY FOR ANY CLAIM, WHETHER IN CONTRACT, TORT OR ANY OTHER THEORY OF LIABILITY, EXCEED THE LICENSE FEE PAID BY YOU, IF ANY.

8. GOVERNING LAW. This license will be governed by the laws of New Zealand as they are applied to agreements between New Zealand residents entered into and to be performed entirely within New Zealand. The 1980 United Nations Convention on Contracts for the International Sale of Goods is specifically disclaimed.

9. DISTRIBUTION. The unregistered shareware version of the SOFTWARE may be freely distributed, provided the distribution package is not modified. No person, company or organisation may charge a fee for the distribution of this SOFTWARE without written permission from the copyright holder.

10. ENTIRE AGREEMENT. This is the entire agreement between you and Purple Oar Software which supersedes any prior agreement or understanding, whether written or oral, relating to the subject matter of this license.

HTML editor

ScrypTik is a fully competent html/xhtml editor as well as meeting its original purpose of being a smart Javascript editor. It has many useful features for plain (x)html, such as one click insertion of most tags. If (when) you get into Javascript, you will find this editor indispensible.

  • Shareware for any WindowsTM OS
  • Syntax highlights html tags as well as javascript code
  • Can edit multiple files

Read more about it here.

Links to other sites

Javascript

Kiwi stuff

Javascript tutorials

Arty-farty

Java

Shareware, other editors

Web Hosting and other services