<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: An important lesson learned about AJAX and accessibility</title>
	<atom:link href="http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-ajax-and-accessibility/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-ajax-and-accessibility/</link>
	<description>Web development and Internet trends</description>
	<pubDate>Fri, 05 Dec 2008 09:51:03 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
		<item>
		<title>By: Why inline CSS and JavaScript code is such a bad thing - Robert&#8217;s talk - Web development and Internet trends</title>
		<link>http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-ajax-and-accessibility/#comment-477426</link>
		<dc:creator>Why inline CSS and JavaScript code is such a bad thing - Robert&#8217;s talk - Web development and Internet trends</dc:creator>
		<pubDate>Thu, 20 Nov 2008 20:54:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-axaj-and-accessibility/#comment-477426</guid>
		<description>[...] Company proxy servers filtering out code (for example, read An important lesson learned about AJAX and accessibility). [...]</description>
		<content:encoded><![CDATA[<p>[...] Company proxy servers filtering out code (for example, read An important lesson learned about <acronym title="Asynchronous Javascript and XML">AJAX</acronym> and accessibility). [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Learning the World &#187; Accessible Drop-Down Menus</title>
		<link>http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-ajax-and-accessibility/#comment-370039</link>
		<dc:creator>Learning the World &#187; Accessible Drop-Down Menus</dc:creator>
		<pubDate>Mon, 11 Aug 2008 08:06:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-axaj-and-accessibility/#comment-370039</guid>
		<description>[...] mobile devices often have problems with JavaScript or with layers. Some proxies in large companies filter JavaScript for security reasons, so you can&#8217;t rely on the ubiquitous availability, your script has to be [...]</description>
		<content:encoded><![CDATA[<p>[...] mobile devices often have problems with JavaScript or with layers. Some proxies in large companies filter JavaScript for security reasons, so you can&#8217;t rely on the ubiquitous availability, your script has to be [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: How to hide and show initial content, depending on whether JavaScript support is available - Robert&#8217;s talk - Web development and Internet trends</title>
		<link>http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-ajax-and-accessibility/#comment-272685</link>
		<dc:creator>How to hide and show initial content, depending on whether JavaScript support is available - Robert&#8217;s talk - Web development and Internet trends</dc:creator>
		<pubDate>Tue, 13 May 2008 22:17:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-axaj-and-accessibility/#comment-272685</guid>
		<description>[...] tells you if JavaScript is enabled or not in the web browser; not if it actually works. There are proxy servers out there cleaning out JavaScript files with what it thinks is inappropriate content, over-zealous antivirus programs, firewalls preventing [...]</description>
		<content:encoded><![CDATA[<p>[...] tells you if JavaScript is enabled or not in the web browser; not if it actually works. There are proxy servers out there cleaning out JavaScript files with what it thinks is inappropriate content, over-zealous antivirus programs, firewalls preventing [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: FACTA ET VERBA &#187; recursos y mas recursos AJAX</title>
		<link>http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-ajax-and-accessibility/#comment-6004</link>
		<dc:creator>FACTA ET VERBA &#187; recursos y mas recursos AJAX</dc:creator>
		<pubDate>Fri, 14 Jul 2006 14:09:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-axaj-and-accessibility/#comment-6004</guid>
		<description>[...] ne of a ticker script automatically, while the user is trying to read other content? Nope.  [...]</description>
		<content:encoded><![CDATA[<p>[...] ne of a ticker script automatically, while the user is trying to read other content? Nope.  [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Nyman</title>
		<link>http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-ajax-and-accessibility/#comment-4393</link>
		<dc:creator>Robert Nyman</dc:creator>
		<pubDate>Thu, 27 Apr 2006 08:37:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-axaj-and-accessibility/#comment-4393</guid>
		<description>Markus,

Not sure, actually...
And unfortunately I don't have any good environment to test. I like the creative thinking, though! :-)
It just might work!

Hakan,

Well, that might be an alternative fallback option, but , like you say, then we miss out on some functionality.</description>
		<content:encoded><![CDATA[<p>Markus,</p>
<p>Not sure, actually&#8230;<br />
And unfortunately I don&#8217;t have any good environment to test. I like the creative thinking, though! <img src='http://www.robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
It just might work!</p>
<p>Hakan,</p>
<p>Well, that might be an alternative fallback option, but , like you say, then we miss out on some functionality.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hakan Bilgin</title>
		<link>http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-ajax-and-accessibility/#comment-4387</link>
		<dc:creator>Hakan Bilgin</dc:creator>
		<pubDate>Thu, 27 Apr 2006 03:05:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-axaj-and-accessibility/#comment-4387</guid>
		<description>This is rather old news yet topical; XML islands.

Dean Edwards has recently wrote something about this.
&lt;a href="http://dean.edwards.name/weblog/2006/04/easy-xml/" rel="nofollow"&gt;XML Islands&lt;/a&gt;

But with XML islands, it's not possible to utilize the POST-method...

/hbi</description>
		<content:encoded><![CDATA[<p>This is rather old news yet topical; <acronym title="eXtensible Markup Language">XML</acronym> islands.</p>
<p>Dean Edwards has recently wrote something about this.<br />
<a href="http://dean.edwards.name/weblog/2006/04/easy-xml/" rel="nofollow"><acronym title="eXtensible Markup Language">XML</acronym> Islands</a></p>
<p>But with <acronym title="eXtensible Markup Language">XML</acronym> islands, it&#8217;s not possible to utilize the POST-method&#8230;</p>
<p>/hbi</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Markus Dresch</title>
		<link>http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-ajax-and-accessibility/#comment-4372</link>
		<dc:creator>Markus Dresch</dc:creator>
		<pubDate>Wed, 26 Apr 2006 17:48:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-axaj-and-accessibility/#comment-4372</guid>
		<description>what about eval("new Active" + "X" + "Object(...)")?</description>
		<content:encoded><![CDATA[<p>what about eval(&#8221;new Active&#8221; + &#8220;X&#8221; + &#8220;Object(&#8230;)&#8221;)?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Nyman</title>
		<link>http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-ajax-and-accessibility/#comment-4350</link>
		<dc:creator>Robert Nyman</dc:creator>
		<pubDate>Wed, 26 Apr 2006 14:05:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-axaj-and-accessibility/#comment-4350</guid>
		<description>Jeena,

Ha ha. :-)

Tanny,

I haven't tried it out, but I guess that might work. Not sure, though...

Jakob,

Yes, that's the kind of approach that needs to be done.</description>
		<content:encoded><![CDATA[<p>Jeena,</p>
<p>Ha ha. <img src='http://www.robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Tanny,</p>
<p>I haven&#8217;t tried it out, but I guess that might work. Not sure, though&#8230;</p>
<p>Jakob,</p>
<p>Yes, that&#8217;s the kind of approach that needs to be done.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jakob Heuser</title>
		<link>http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-ajax-and-accessibility/#comment-4332</link>
		<dc:creator>Jakob Heuser</dc:creator>
		<pubDate>Wed, 26 Apr 2006 08:39:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-axaj-and-accessibility/#comment-4332</guid>
		<description>Having looked at this before, we've used a very (cheap) load notifier which was placed at the end of each externally loaded js file:
&lt;code&gt;
filename = "myfile.js";
if (typeof ld_scripts != 'object') ld_scripts = new Object();
ld_scripts[filename] = true;
&lt;/code&gt;
Upon the included file being loaded, you can always check ld_scripts and make sure everything you need filewise has made it intact.

In our case, we were using it to ensure that all scripts loaded via document.write() had actually completed before we tried to reference objects and classes in those external files.</description>
		<content:encoded><![CDATA[<p>Having looked at this before, we&#8217;ve used a very (cheap) load notifier which was placed at the end of each externally loaded js file:<br />
<code><br />
filename = "myfile.js";<br />
if (typeof ld_scripts != 'object') ld_scripts = new Object();<br />
ld_scripts[filename] = true;<br />
</code><br />
Upon the included file being loaded, you can always check ld_scripts and make sure everything you need filewise has made it intact.</p>
<p>In our case, we were using it to ensure that all scripts loaded via document.write() had actually completed before we tried to reference objects and classes in those external files.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tanny O'Haley</title>
		<link>http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-ajax-and-accessibility/#comment-4315</link>
		<dc:creator>Tanny O'Haley</dc:creator>
		<pubDate>Tue, 25 Apr 2006 17:27:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-axaj-and-accessibility/#comment-4315</guid>
		<description>Instead of using ActiveX to initiate the xmlhttprequest object for Microsoft, how about trying the proprietary xml element?</description>
		<content:encoded><![CDATA[<p>Instead of using ActiveX to initiate the xmlhttprequest object for Microsoft, how about trying the proprietary <acronym title="eXtensible Markup Language">XML</acronym> element?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeena Paradies</title>
		<link>http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-ajax-and-accessibility/#comment-4310</link>
		<dc:creator>Jeena Paradies</dc:creator>
		<pubDate>Tue, 25 Apr 2006 16:26:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-axaj-and-accessibility/#comment-4310</guid>
		<description>Oh that's cool, I just set up my proxy to filter all files including the text &lt;code&gt;javascript&lt;/code&gt; ;-)</description>
		<content:encoded><![CDATA[<p>Oh that&#8217;s cool, I just set up my proxy to filter all files including the text <code>javascript</code> <img src='http://www.robertnyman.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Nyman</title>
		<link>http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-ajax-and-accessibility/#comment-4308</link>
		<dc:creator>Robert Nyman</dc:creator>
		<pubDate>Tue, 25 Apr 2006 15:59:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-axaj-and-accessibility/#comment-4308</guid>
		<description>Faruk,

Yes, isn't it great? :-)

Montoya,

&lt;blockquote&gt;Iâ€™m finding it hard to see how an application could be implemented with unobtrusive AJAX and still be infinitely-scalable.&lt;/blockquote&gt;
I guess it depends on the application. Not every application can offer a perfect matching fallback with JavaScript, but as far as possible, it's a good goal to have.

Jules,

&lt;blockquote&gt;Or, donâ€™t bother with JS because it is just too complicated.&lt;/blockquote&gt;

No, no, no. :-)
JavaScript is amazing when used right (and in the absence of terrible proxy filters... :-)).</description>
		<content:encoded><![CDATA[<p>Faruk,</p>
<p>Yes, isn&#8217;t it great? <img src='http://www.robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Montoya,</p>
<blockquote><p>Iâ€™m finding it hard to see how an application could be implemented with unobtrusive <acronym title="Asynchronous Javascript and XML">AJAX</acronym> and still be infinitely-scalable.</p></blockquote>
<p>I guess it depends on the application. Not every application can offer a perfect matching fallback with JavaScript, but as far as possible, it&#8217;s a good goal to have.</p>
<p>Jules,</p>
<blockquote><p>Or, donâ€™t bother with JS because it is just too complicated.</p></blockquote>
<p>No, no, no. <img src='http://www.robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
JavaScript is amazing when used right (and in the absence of terrible proxy filters&#8230; :-)).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jules</title>
		<link>http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-ajax-and-accessibility/#comment-4303</link>
		<dc:creator>Jules</dc:creator>
		<pubDate>Tue, 25 Apr 2006 13:46:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-axaj-and-accessibility/#comment-4303</guid>
		<description>Interesting!

Therefore, to ensure that your site/application works, you must test all JS-capable browsers, older JS browsers (to verify graceful degradation), current but JS-disabled browsers, and current JS-enabled browsers with empty JS-files.

Or, don't bother with JS because it is just too complicated. :-)</description>
		<content:encoded><![CDATA[<p>Interesting!</p>
<p>Therefore, to ensure that your site/application works, you must test all JS-capable browsers, older JS browsers (to verify graceful degradation), current but JS-disabled browsers, and current JS-enabled browsers with empty JS-files.</p>
<p>Or, don&#8217;t bother with JS because it is just too complicated. <img src='http://www.robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Montoya</title>
		<link>http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-ajax-and-accessibility/#comment-4301</link>
		<dc:creator>Montoya</dc:creator>
		<pubDate>Tue, 25 Apr 2006 13:32:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-axaj-and-accessibility/#comment-4301</guid>
		<description>Fortunately I've been able to make my latest project with Progressive Enhancement... but doing this is very difficult. I'm finding it hard to see how an application could be implemented with unobtrusive AJAX and still be infinitely-scalable. Maybe I'm just not experienced enough to see it.</description>
		<content:encoded><![CDATA[<p>Fortunately I&#8217;ve been able to make my latest project with Progressive Enhancement&#8230; but doing this is very difficult. I&#8217;m finding it hard to see how an application could be implemented with unobtrusive <acronym title="Asynchronous Javascript and XML">AJAX</acronym> and still be infinitely-scalable. Maybe I&#8217;m just not experienced enough to see it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Faruk Ates</title>
		<link>http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-ajax-and-accessibility/#comment-4289</link>
		<dc:creator>Faruk Ates</dc:creator>
		<pubDate>Tue, 25 Apr 2006 12:31:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-axaj-and-accessibility/#comment-4289</guid>
		<description>Ah, the wonderful hell that is clueless or violent proxy filtering.</description>
		<content:encoded><![CDATA[<p>Ah, the wonderful hell that is clueless or violent proxy filtering.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Nyman</title>
		<link>http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-ajax-and-accessibility/#comment-4286</link>
		<dc:creator>Robert Nyman</dc:creator>
		<pubDate>Tue, 25 Apr 2006 12:04:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-axaj-and-accessibility/#comment-4286</guid>
		<description>Marco,

My thoughts have been similar to yours...

To have some kind of variable or so that's initially false, but it gets set to true in the JavaScript file that contains the AJAX functionality.

I guess it's good practice then to separate the &lt;code&gt;XMLHttpRequest&lt;/code&gt; code into its own file, as not to ruin any other scripts in the web page.

Chris,

No, you understood me correctly, and it's a valid question.
My gut feeling is the approach mentioned above, to separate AJAX functionality into its own file, and to maybe also use varibles to set and check if they exist to make sure everything will work as intended.

Also, when possible, to have a proper fallback if the necessary JavaScript support isn't there.</description>
		<content:encoded><![CDATA[<p>Marco,</p>
<p>My thoughts have been similar to yours&#8230;</p>
<p>To have some kind of variable or so that&#8217;s initially false, but it gets set to true in the JavaScript file that contains the <acronym title="Asynchronous Javascript and XML">AJAX</acronym> functionality.</p>
<p>I guess it&#8217;s good practice then to separate the <code>XMLHttpRequest</code> code into its own file, as not to ruin any other scripts in the web page.</p>
<p>Chris,</p>
<p>No, you understood me correctly, and it&#8217;s a valid question.<br />
My gut feeling is the approach mentioned above, to separate <acronym title="Asynchronous Javascript and XML">AJAX</acronym> functionality into its own file, and to maybe also use varibles to set and check if they exist to make sure everything will work as intended.</p>
<p>Also, when possible, to have a proper fallback if the necessary JavaScript support isn&#8217;t there.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris</title>
		<link>http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-ajax-and-accessibility/#comment-4285</link>
		<dc:creator>Chris</dc:creator>
		<pubDate>Tue, 25 Apr 2006 12:04:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-axaj-and-accessibility/#comment-4285</guid>
		<description>But what can you do in fact against such problems? I mean, you can't foresee how a client machine or network filters your Javascript. Therefore you'll have to wait and react when an error occurs.

Or did I just misunderstood?</description>
		<content:encoded><![CDATA[<p>But what can you do in fact against such problems? I mean, you can&#8217;t foresee how a client machine or network filters your Javascript. Therefore you&#8217;ll have to wait and react when an error occurs.</p>
<p>Or did I just misunderstood?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Marco</title>
		<link>http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-ajax-and-accessibility/#comment-4283</link>
		<dc:creator>Marco</dc:creator>
		<pubDate>Tue, 25 Apr 2006 10:49:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.robertnyman.com/2006/04/25/an-important-lesson-learned-about-axaj-and-accessibility/#comment-4283</guid>
		<description>Hmm... this is an interesting issue indeed. It introduces a lot of problems on pure AJAX applications that for whatever reason don't allow a non-JS version. A good example is a &lt;a href="http://www.backbase.com/" rel="nofollow"&gt;BackBase&lt;/a&gt; powered pure AJAX web application.

I've seen those break horribly because of filtering proxies as well. Like you said, the noscript stuff won't work either because JS is actually enabled on the client.

I guess it may be worthwhile to look for a way to detect whether a filtering proxy is present or not, possibly by a piece of JS that won't get filtered out which detects the lack of certain other code....

Just thinking out loud here... :)</description>
		<content:encoded><![CDATA[<p>Hmm&#8230; this is an interesting issue indeed. It introduces a lot of problems on pure <acronym title="Asynchronous Javascript and XML">AJAX</acronym> applications that for whatever reason don&#8217;t allow a non-JS version. A good example is a <a href="http://www.backbase.com/" rel="nofollow">BackBase</a> powered pure <acronym title="Asynchronous Javascript and XML">AJAX</acronym> web application.</p>
<p>I&#8217;ve seen those break horribly because of filtering proxies as well. Like you said, the noscript stuff won&#8217;t work either because JS is actually enabled on the client.</p>
<p>I guess it may be worthwhile to look for a way to detect whether a filtering proxy is present or not, possibly by a piece of JS that won&#8217;t get filtered out which detects the lack of certain other code&#8230;.</p>
<p>Just thinking out loud here&#8230; <img src='http://www.robertnyman.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
</channel>
</rss>
