Hello chkdsk, my old friend
I’ve got to run you once again
Cause my Windows box is acting weird
And the disk drive must need something cleared
And the error that was printed on my screen
Made me scream
And put aside my work
For chkdsk
Hello chkdsk, my old friend
I’ve got to run you once again
Cause my Windows box is acting weird
And the disk drive must need something cleared
And the error that was printed on my screen
Made me scream
And put aside my work
For chkdsk
Just got back from seeing "The School of Night" in LA. Good play. Awful drive. Must sleep.
It’s kind of redundant to post a "Get Firefox!" banner to someone already using Firefox, but it’s useful to show them an upgrade banner if they’re on an old version. It’s also useful to show Firefox users a banner for Spread Firefox.
This can be done easily with PHP or other server-side scripting languages, but sometimes you have to use static HTML files. That’s where client-side scripting becomes necessary. Last month I posted some sample code that used document.write, which doesn’t work with XHTML. (On top of that, the <noscript>
blocks I used ended up causing validation errors because of their location!)
I’ve redone everything with DOM scripting, which will work with either HTML 4 or XHTML 1.0.
function replaceFirefoxLink(linkID) { if(linkNode=document.getElementById(linkID)) { var newLink=document.createElement('a'); var newImg=document.createElement('img'); var change=0; if ( 0 <= navigator.userAgent.indexOf('Firefox/0') || 0 <= navigator.userAgent.indexOf('Firefox/1.0') ) { change=1; newLink.setAttribute('href','YOUR_UPGRADE_LINK'); newImg.setAttribute('alt','Upgrade to Firefox 1.5!'); newImg.setAttribute('title','Upgrade to Firefox 1.5!'); newImg.setAttribute('src','PATH_TO_BANNER'); } else if (0 <= navigator.userAgent.indexOf('Firefox')) { change=1; newLink.setAttribute('href','YOUR_REFERRAL_LINK'); newImg.setAttribute('alt','Spread Firefox!'); newImg.setAttribute('title','Spread Firefox!'); newImg.setAttribute('src','PATH_TO_BANNER'); } if(change) { newLink.appendChild(newImg); var parentNode=linkNode.parentNode; parentNode.replaceChild(newLink,linkNode); } } }
Use your regular Spread Firefox affiliate link and add a unique ID — let’s use id="FxLink"
as an example — to the <a> tag.
Load the script in your document’s <head> section:
<script type="text/javascript" src="sfxlinks.js">
Call the function in the body onload event using the ID you chose in step 2:
<body onload="replaceFirefoxLink('FxLink')">
When the page loads, the script will check the visitor’s browser to see if it’s an old version of Firefox or a current version of Firefox. If it’s an old version, it’ll replace your standard button with your upgrade button. If it’s a current version, it’ll replace it with a Spread Firefox button with your referral link. Otherwise, it leaves the button alone.
This has a lot of advantages over the old version, including XHTML compatibility, no need for <noscript>
blocks, easier validation, and it still degrades gracefully (if JS is unavailable or old, it leaves your normal button in place).
You can see it in action on my website, Flash: Those Who Ride the Lightning.
Originally posted on my Spread Firefox blog.