<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>
<channel>
	<title>Comments on: text-shadow hack for firefox</title>
	<atom:link href="http://verens.com/archives/2005/02/28/text-shadow/feed/" rel="self" type="application/rss+xml" />
	<link>http://verens.com/archives/2005/02/28/text-shadow/</link>
	<description>php, linux, ajax, javascript, kae verens</description>
	<pubDate>Tue, 06 Jan 2009 07:25:33 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Richard</title>
		<link>http://verens.com/archives/2005/02/28/text-shadow/comment-page-1/#comment-55567</link>
		<dc:creator>Richard</dc:creator>
		<pubDate>Mon, 13 Aug 2007 12:04:01 +0000</pubDate>
		<guid isPermaLink="false">http://verens.com/archives/2005/02/28/text-shadow/#comment-55567</guid>
		<description>Ah, I forgot to add last time, but CSS3 will be included in Opera 9.5. And since opera users are more tech-aware then IE users, they'll update to the new version quicker.

So that will be 3 of the 4 main rendering engines all supporting text-shadow (which will be something like 8 of the top 9 browsers!)</description>
		<content:encoded><![CDATA[<p>Ah, I forgot to add last time, but CSS3 will be included in Opera 9.5. And since opera users are more tech-aware then IE users, they&#8217;ll update to the new version quicker.</p>
<p>So that will be 3 of the 4 main rendering engines all supporting text-shadow (which will be something like 8 of the top 9 browsers!)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Richard</title>
		<link>http://verens.com/archives/2005/02/28/text-shadow/comment-page-1/#comment-55566</link>
		<dc:creator>Richard</dc:creator>
		<pubDate>Mon, 13 Aug 2007 11:41:04 +0000</pubDate>
		<guid isPermaLink="false">http://verens.com/archives/2005/02/28/text-shadow/#comment-55566</guid>
		<description>I recently found this Firefox plugin:

http://piro.sakura.ne.jp/xul/_textshadow.html.en

It's only a matter of time before this is incorporated into nightlies by defailt.</description>
		<content:encoded><![CDATA[<p>I recently found this Firefox plugin:</p>
<p><a href="http://piro.sakura.ne.jp/xul/_textshadow.html.en" rel="nofollow">http://piro.sakura.ne.jp/xul/_textshadow.html.en</a></p>
<p>It&#8217;s only a matter of time before this is incorporated into nightlies by defailt.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kae Verens</title>
		<link>http://verens.com/archives/2005/02/28/text-shadow/comment-page-1/#comment-54270</link>
		<dc:creator>Kae Verens</dc:creator>
		<pubDate>Wed, 01 Aug 2007 08:14:23 +0000</pubDate>
		<guid isPermaLink="false">http://verens.com/archives/2005/02/28/text-shadow/#comment-54270</guid>
		<description>It's a fair cop. As mentioned in the title, this script is just a hack, and should not be considered as absolutely correct. It was done to demonstrate that it is possible to do text-shadow in Firefox even if Firefox does not yet do it natively.

To be fair, though, screen readers should probably not be running JavaScript anyway, so this script should be safe in that case.

(I'm also on the mailinglist for the &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=10713" rel="nofollow"&gt;Firefox bug entry&lt;/a&gt; for this, btw)

If you liked this hack, please also see my &lt;a href="http://verens.com/archives/2005/11/24/curved-borders-with-valid-css-and-unobtrusive-javascript/" rel="nofollow"&gt;border-radius&lt;/a&gt; hack.</description>
		<content:encoded><![CDATA[<p>It&#8217;s a fair cop. As mentioned in the title, this script is just a hack, and should not be considered as absolutely correct. It was done to demonstrate that it is possible to do text-shadow in Firefox even if Firefox does not yet do it natively.</p>
<p>To be fair, though, screen readers should probably not be running JavaScript anyway, so this script should be safe in that case.</p>
<p>(I&#8217;m also on the mailinglist for the <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=10713" rel="nofollow">Firefox bug entry</a> for this, btw)</p>
<p>If you liked this hack, please also see my <a href="http://verens.com/archives/2005/11/24/curved-borders-with-valid-css-and-unobtrusive-javascript/" rel="nofollow">border-radius</a> hack.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Piro</title>
		<link>http://verens.com/archives/2005/02/28/text-shadow/comment-page-1/#comment-54258</link>
		<dc:creator>Piro</dc:creator>
		<pubDate>Wed, 01 Aug 2007 05:38:00 +0000</pubDate>
		<guid isPermaLink="false">http://verens.com/archives/2005/02/28/text-shadow/#comment-54258</guid>
		<description>FYI, the add-on includes a solution of the problem:
&#62; This technique seems to have another issue that I didn’t see mentioned: it duplicates the text multiple times, which is bad for text selection; un?semantic; and, I would imagine, poor for assistive technologies such as screen readers.</description>
		<content:encoded><![CDATA[<p>FYI, the add-on includes a solution of the problem:<br />
&gt; This technique seems to have another issue that I didn’t see mentioned: it duplicates the text multiple times, which is bad for text selection; un?semantic; and, I would imagine, poor for assistive technologies such as screen readers.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Piro</title>
		<link>http://verens.com/archives/2005/02/28/text-shadow/comment-page-1/#comment-54257</link>
		<dc:creator>Piro</dc:creator>
		<pubDate>Wed, 01 Aug 2007 05:34:07 +0000</pubDate>
		<guid isPermaLink="false">http://verens.com/archives/2005/02/28/text-shadow/#comment-54257</guid>
		<description>I've made an add-on version for Firefox users.
http://piro.sakura.ne.jp/xul/_textshadow.html.en
(I discovered this entry after I published the addon...)</description>
		<content:encoded><![CDATA[<p>I&#8217;ve made an add-on version for Firefox users.<br />
<a href="http://piro.sakura.ne.jp/xul/_textshadow.html.en" rel="nofollow">http://piro.sakura.ne.jp/xul/_textshadow.html.en</a><br />
(I discovered this entry after I published the addon&#8230;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Patrick Garies</title>
		<link>http://verens.com/archives/2005/02/28/text-shadow/comment-page-1/#comment-54238</link>
		<dc:creator>Patrick Garies</dc:creator>
		<pubDate>Tue, 31 Jul 2007 22:55:03 +0000</pubDate>
		<guid isPermaLink="false">http://verens.com/archives/2005/02/28/text-shadow/#comment-54238</guid>
		<description>This technique seems to have another issue that I didn’t see mentioned: it duplicates the text multiple times, which is bad for text selection; un?semantic; and, I would imagine, poor for assistive technologies such as screen readers.

Quote (Mardeg): I’ve found out that the reason for this is Opera strictly adhere’s to the W3C spec of .addEventListener only being applicable to nodes, and since it doesn’t consider window. a real node, then window.addEventListener() doesn’t exist in Opera.

The correct code is document.defaultView.addEventListener anyway.

Quote (Mardeg): (document.addEventListener)document.addEventListener(”DOMContentLoaded”, textShadows, null);

I don’t believe that DOMContentLoaded is supported by Safari. The easiest way to get this effect is to call the script as it’s loaded by calling it at the end of the body element instead of within the head element. In this case, the call to the (on)load and/or DOMContentLoaded events becomes unnecessary.</description>
		<content:encoded><![CDATA[<p>This technique seems to have another issue that I didn’t see mentioned: it duplicates the text multiple times, which is bad for text selection; un?semantic; and, I would imagine, poor for assistive technologies such as screen readers.</p>
<p>Quote (Mardeg): I’ve found out that the reason for this is Opera strictly adhere’s to the W3C spec of .addEventListener only being applicable to nodes, and since it doesn’t consider window. a real node, then window.addEventListener() doesn’t exist in Opera.</p>
<p>The correct code is document.defaultView.addEventListener anyway.</p>
<p>Quote (Mardeg): (document.addEventListener)document.addEventListener(”DOMContentLoaded”, textShadows, null);</p>
<p>I don’t believe that DOMContentLoaded is supported by Safari. The easiest way to get this effect is to call the script as it’s loaded by calling it at the end of the body element instead of within the head element. In this case, the call to the (on)load and/or DOMContentLoaded events becomes unnecessary.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mardeg</title>
		<link>http://verens.com/archives/2005/02/28/text-shadow/comment-page-1/#comment-14873</link>
		<dc:creator>Mardeg</dc:creator>
		<pubDate>Fri, 23 Jun 2006 20:01:40 +0000</pubDate>
		<guid isPermaLink="false">http://verens.com/archives/2005/02/28/text-shadow/#comment-14873</guid>
		<description>Oops, the document.write line for the IE hack disappeared from the above post. Use this line and replace the [ ] with normal angle brackets for tags:

    document.write("[script id=__ie_onload defer src=javascript:void(0)][\/script]");</description>
		<content:encoded><![CDATA[<p>Oops, the document.write line for the IE hack disappeared from the above post. Use this line and replace the [ ] with normal angle brackets for tags:</p>
<p>    document.write(&#8221;[script id=__ie_onload defer src=javascript:void(0)][\/script]&#8220;);</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mardeg</title>
		<link>http://verens.com/archives/2005/02/28/text-shadow/comment-page-1/#comment-14870</link>
		<dc:creator>Mardeg</dc:creator>
		<pubDate>Fri, 23 Jun 2006 19:54:13 +0000</pubDate>
		<guid isPermaLink="false">http://verens.com/archives/2005/02/28/text-shadow/#comment-14870</guid>
		<description>This is best initiated as soon as the text appears on the page instead of after all the binary content is loaded, so at the beginning of the file replace:

if(window.addEventListener)window.addEventListener('load',textShadows,false);
else if(window.attachEvent)window.attachEvent('onload',textShadows);

with:

if (document.addEventListener)document.addEventListener("DOMContentLoaded", textShadows, null);
/*@cc_on @*/
/*@if (@_win32)
    document.write("");
    var script = document.getElementById("__ie_onload");
    script.onreadystatechange = function() {
        if (this.readyState == "complete") {
            textShadows(); // call the onload handler
        }
    };
/*@end @*/


and to stop textShadows() from being called by more than one onload event, insert the following lines at the very beginning of the textShadows() function:

	if (arguments.callee.done) return;
	arguments.callee.done = true;

Btw, this still doesn't work in Opera 9, and still messes up when the browser is resized.

I'm wondering if anyone has tried this as a greasemonkey script (the Firefox extension that lets you insert javascript into any page)?</description>
		<content:encoded><![CDATA[<p>This is best initiated as soon as the text appears on the page instead of after all the binary content is loaded, so at the beginning of the file replace:</p>
<p>if(window.addEventListener)window.addEventListener(&#8217;load&#8217;,textShadows,false);<br />
else if(window.attachEvent)window.attachEvent(&#8217;onload&#8217;,textShadows);</p>
<p>with:</p>
<p>if (document.addEventListener)document.addEventListener(&#8221;DOMContentLoaded&#8221;, textShadows, null);<br />
/*@cc_on @*/<br />
/*@if (@_win32)<br />
    document.write(&#8221;");<br />
    var script = document.getElementById(&#8221;__ie_onload&#8221;);<br />
    script.onreadystatechange = function() {<br />
        if (this.readyState == &#8220;complete&#8221;) {<br />
            textShadows(); // call the onload handler<br />
        }<br />
    };<br />
/*@end @*/</p>
<p>and to stop textShadows() from being called by more than one onload event, insert the following lines at the very beginning of the textShadows() function:</p>
<p>	if (arguments.callee.done) return;<br />
	arguments.callee.done = true;</p>
<p>Btw, this still doesn&#8217;t work in Opera 9, and still messes up when the browser is resized.</p>
<p>I&#8217;m wondering if anyone has tried this as a greasemonkey script (the Firefox extension that lets you insert javascript into any page)?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: &#187; multiple text-shadows &#171; klog</title>
		<link>http://verens.com/archives/2005/02/28/text-shadow/comment-page-1/#comment-10555</link>
		<dc:creator>&#187; multiple text-shadows &#171; klog</dc:creator>
		<pubDate>Sat, 03 Jun 2006 11:58:34 +0000</pubDate>
		<guid isPermaLink="false">http://verens.com/archives/2005/02/28/text-shadow/#comment-10555</guid>
		<description>[...] I took that as a challenge, and have upgraded my old text-shadow hack to handle multiple shadows. [...]</description>
		<content:encoded><![CDATA[<p>[...] I took that as a challenge, and have upgraded my old text-shadow hack to handle multiple shadows. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rick</title>
		<link>http://verens.com/archives/2005/02/28/text-shadow/comment-page-1/#comment-3159</link>
		<dc:creator>Rick</dc:creator>
		<pubDate>Thu, 23 Feb 2006 19:42:29 +0000</pubDate>
		<guid isPermaLink="false">http://verens.com/archives/2005/02/28/text-shadow/#comment-3159</guid>
		<description>Excellent javascript!  However, it doesn't seam to work with Opera 8.5.</description>
		<content:encoded><![CDATA[<p>Excellent javascript!  However, it doesn&#8217;t seam to work with Opera 8.5.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
