Given by Geoffrey C. Fox at Tango Group Seminar on 26 March 99. Foils prepared 26 March 99
Outside Index
Summary of Material
We describe the latest JavaScript shared browser which builds on the old WebWisdom system as well the newer production Java shared browser |
We describe architecture and some of the key JavaScript concepts including event handlers and signed scripts |
We describe high level JSSB event structure and ability to selectively trap, archive and replay |
We finish by noting this as a a "flawed" model of what could be possible in sharing rich objects and point out importance for universal access |
Outside Index Summary of Material
Geoffrey Fox NPAC Syracuse University |
111 College Place |
Syracuse |
New York |
13244-4100 |
gcf@npac.syr.edu |
We describe the latest JavaScript shared browser which builds on the old WebWisdom system as well the newer production Java shared browser |
We describe architecture and some of the key JavaScript concepts including event handlers and signed scripts |
We describe high level JSSB event structure and ability to selectively trap, archive and replay |
We finish by noting this as a a "flawed" model of what could be possible in sharing rich objects and point out importance for universal access |
Null Window Holds All |
Permanent |
Data |
Tango |
Launches and Positions auxiliary windows |
Cannot be signed Cannot do SetTimeout |
(has LiveConnect restrictions) |
Clock and Event Record |
Position Control Bar |
Can be Destroyed without restarting |
Tango Session |
Originally we used WebWisdom which was a specialized JavaScript Shared Browser
|
Current Java SB determines URL changes by inspecting URL on Master in a "tight loop" |
New JSSB uses same strategy but can add capabilities by inspecting further document properties such as forms and links
|
Web Pages can access general server side resources which can either be specified by URL (web-linked database) or by data (input in form and/or calculated by JavaScript handlers) and URL.
|
Sharing forms and links and implied JavaScript generalizes to sharing the web page "object properties" |
Thus JSSB becomes (TangoInteractive) synchronous sharing technology for W3C DOM (Document Object Model)
|
There are some "standalone" capabilities of JSSB on a single machine with and without TangoInteractive
|
Pages can change even if URL does not
|
Pages can change due to:
|
Netscape allows no (known to me) rigorous detection of page changes |
Allow WebWisdom pages defined as those with an internal structure interfacing to JSSB
|
Allow general pages using heuristics to best identify relevant actions
|
One must NEVER access an undefined variable
|
Until page fully formed, any of its properties can be undefined |
Modern JavaScript allows one to test if variables are defined and so avoid these errors |
in a.b.c.d.e type reference, one must first test if a exists, then b, then .... |
WWutility.js includes
|
Signed Scripts to allow one to read data from general web pages
|
Ability to "capture" events and either
|
Most important events are CLICK CHANGE but potentially others (MOUSEOVER MOUSEOUT ONLOAD ONUNLOAD) |
With <body onload="signifyload()" > signifyload is called when page is fully loaded and DOM fully constructed
|
One can either
|
JSSB implements the "shared event" of collaboration! |
Major Events are page or frame loads |
Minor Events are form button clicks, pointer movement etc. |
Events have properties which are defined in Wwjstangoevent.js. |
This includes functions to print events either to Java console or to a spawned web browser page |
This allows one to specify type (string, integer ..) of properties |
This allows one to allow an event to include arrays of "child" events |
Serialize events as an Ascii string -- used to transmit via TangoInteractive and to archive events as values of hidden fields in History Page
|
Deserialize, Initialize, Clone, Compare .....
|
Should probably be done using XML but currently simple adhoc protocol
|
All major events are generated from minor events
|
Minor events are sent by master via Tango to nonmasters |
Minor events are NOT immediately processed in nonmaster but rather queued
|
Queues processed in two ways
|
Clicks on frames/layers if on form/link
|
General clicks on WebWisdom Pages implying very application specific actions |
Could share mouseover, mouseout ... |
Can veto clicks or other events on nonmaster side
|
Form Contents at any time
|
Resizing so master and nonmaster have same scaling |
Scrolling |
Sharing can be customized from dialog window |
Note JSSB knows where each nonmaster is in event queue and has information on download times
|
JSSB does monitor nonmaster page to detect unwanted page changes |
One can archive a session by "saving from Netscape" the History Page where all events (or a subset) are recorded in serialized fashion in hidden fields |
Session can be restored (or added to existing events) by loading history page from a local file with archived information |
Note events include timing information and so archives should be linkable to LecCorder |
Sessions can be replayed from master or nonmaster either locally or for broadcast |
Web pages have a rich set of properties and events inducing (or indicating) their change
|
W3C DOM is gradually defining a more elegant structure but unclear that they have got it right |
TangoInteractive with its JavaScript API is one of most serious tests |
We can use nonmaster customization to support user dependent rendering and so achieve universal (cross disability) access
|