WebFund 2024F Lecture 13

From Soma-notes

Video

Video from the lecture for October 31, 2024 is now available:

Notes

Lecture 13
----------

For tutorial 6, you'll be playing with a (slightly) cleaned-up version of the validator application we've been using.

Note that I use the validator (and text formatted assignments) because the TA's grade the assignments per questions, not per assignment, and so I need a way to split up assignments into questions.
 - this could be done directly through brightspace, but I don't think anyone likes doing things through brightspace if they can avoid it

Note that for Tutorial 6, we are doing *client side JavaScript* (and HTML, and CSS).

Web browsers are all about rendering HTML documents
 - client-side JavaScript runs within the context of an HTML document
 - this means that objects are defined that allow JavaScript code to access and modify the HTML of the document
    - the object is "document" in JavaScript
 - to manipulate the HTML, you normally need to selecct something on the page
    - page is represented as a tree, with each HTML tag being a node
    - to get a node in this tree, you normally use the getElementById method,
      which will refer to a specific "id=" tag in the HTML

Two entry points to the code:
 - hideAnalysis()
   - run onload
 - loadAssignment()
   - run onchange of filename

onload events happen when the page (HTML tag) is finished loading

In C and JavaScript
 - \n in a string represents newline (linefeed character, LF)
 - \r in a string represents return (carriage return, CR)

UNIX text files end lines with LF
MS-DOS/Windows text files end lines with CRLF

So client-side JavaScript seems pretty powerful right?
 - can load files, process them, and display results in a GUI
   (by manipulating the HTML of the document)

But what can't you do?
 - cannot save data anywhere, is living in a sandbox
 - that's why we have web servers: to serve pages and save results/process data from users