My general philosophy is still always to put as _little_ Javascript as
possible. Thus my way-too-clever idea to have some javascript which
actually sends the Google (or similar) API response back to my server
via AJAX for _real_ processing. :)

But if you DO want or need to do javascript-heavy stuff, I _highly_
encourage you to take a look at some of the various Javascript client
libraries that are out there, like Prototype. Such libraries can
provides support for easy 'inheritance' in Javascript (implemented
through behind the scenes fakery), as well as ways to see what
versions/functions of javascript are supported in the browser.

But if you are trying to make things available without client javascript
at all... if a given API like Google _requires_ it, well, then there's
no way to have Google results used by the interface in a non-javascript
client. That's obviously just a syllogism. [It's interesting to know
though that, contrary to popular belief, recent versions of JAWS _do_
support javascript. But only some kinds of javascript done in certain
ways. Doing javascript that will work for JAWS is yet another layer of
complexity, yet another headache. Added headaches and layers of
complexity is why I try to minimize my javascript altogether. And JAWS
is just one kind of 'accessibilty'. And the rules you have to follow
whether you like it or not for 'accessibility' may or may not actually
be rationally related to actual accessible use cases, like it or not.]

Joe Hourcle wrote:
On Mon, 17 Mar 2008, Jonathan Rochkind wrote:

Of course, all these things _can_ be done with only client-side
javascript API. To my perspective, it is quite a bit more complex to do
it that way. And complexity is the enemy of maintainability, especially
in my limited staff resources library environment.

But perhaps my perspective is not sufficiently "2.0" (or "3.0"); I've
been a software developer for a long time, but doing client side
javascript stuff for less. Maybe I'm wrong. I dunno. To me, it looks
quite a bit more complex to try and provide these services with the same
level of control and customization in a "don't repeat yourself" modular
way accross all my various display systems that need this functionality,
using client side javascript services.  Other developers, do you think
I'm wrong?

I agree, but mostly because I'm concerned with the differing ECMAScript
implementations out there (JavaScript, JScript, different versions,
etc.),
and the lack of the ability to test for the existance of a function ...
you can test for what version the client thinks it can run, but that
doesn't given you fine control.  (and as try/catch wasn't included 'til
1.3, I had to go through elaborate hoops to try to verify that the code
would run cleanly)

... then there's the issue that I need to support Section 508
requirements, and our normal procedure is to make sure that whatever
features we have don't require client-side support -- they can be
_enhanced_ by client-side scripting, but even without scripting turned
on,
the applications are at least usable.

I'm also not a fan of how '<NOSCRIPT>' is handled in web browsers.  Say
for instance, that I actually know which spec I'm coding to, and I have
some functionality that requires 1.0, and some that requires 1.3.  I'd
want the <NOSCRIPT> to be directly tied to the <SCRIPT> tag, so I can
give
appropriate messages when they have scripting completely turned off and
both don't load, vs. when they're running a 1.2 spec, and can't load the
1.3 code.

       http://www.w3.org/TR/html401/interact/scripts.html#h-18.3.1

Now, in the HTML spec, they describe that the original intent was for
people to embed other languages ... but they don't ever say how you'd
handle the case where the browser loaded javascript, but not tcl.  Of
course, they've also deprecated the 'language' attribute, so it's more
difficult to handle the code based on the version of the language that's
supported.

...

It may be that I was stung by trying to move over to client-side
scripting
too early (10 years ago?), and I've used it in small amounts through the
years, but I'm currently working on my first 'real' JavaScript
application, where it's going to require significant amounts of
processing
to render output ... but I have no idea how much memory is safe to
use, or
if my text machines are representative of our user base ... and I've
already found that the render time is more than doubled in FireFox
compared to Safari or IE.

... okay, this is slowly getting into a rant -- but yes, I agree -- I
have
less control, more worries about security implications, issues with
debugging, etc.  I think the only reason I've gone along with the change
is because it's giving me a chance to clean up some of the UI code and I
can get a better separation between it and the back-end logic.

...

oh -- and the inability to inherit code from within JavaScript is a major
step backwards -- I have to have whatever HTML file (or whatever
generates
the HTML) know what the full chain of dependancies are for each script I
load.  JSAN looked promising when it was announced, but it doesn't
seem to
have taken root:

       http://openjsan.org/doc/c/cw/cwest/JSAN/0.10/lib/JSAN.html


-Joe


--
Jonathan Rochkind
Digital Services Software Engineer
The Sheridan Libraries
Johns Hopkins University
410.516.8886
rochkind (at) jhu.edu

Reply via email to