McAfee Anti-Phishing filter for Internet Explorer causes onclick events to not fire?

I very often neglect writing here in favor of devoting that time to paying work. But recently I found something that might be helpful to somebody else so I thought I’d take advantage of that.

Over the last few months, a handful of our clients have had customers report issues with their websites. Online searches at the time didn’t turn up anything that sounded like the problem I was trying to fix so I figured writing about its resolution now might help someone else in the same boat I was.

The most common bug reported was that customers ended up on the site homepage when they clicked links that should go somewhere (or do something) else. For the few that reported it, clicking a tab on a Moosejaw product page to view additional details sent them to the homepage instead. Or clicking the Sign-In link up at the top of the same page sent them to the sign-in page instead of revealing a small inline sign-in form.

The sign-in link bug was more of a minor inconvenience since users still ended up at a sign-in page. They just missed the benefit of being able to do it without leaving their current page. The product tab issue was more critical however since users affected by the bug weren’t able to view information that may or may not affect their decision to buy.

All of the users who reported problems were using Internet Explorer 7 on either Windows XP or Vista. While the majority of the browsing public meets that criteria, we were still getting very few reports of problems. Unfortunately no one in our office or the clients’ could reproduce the problem. It had to be some setup unique enough that not every one using Windows/IE was experiencing it (thank god) but common enough among the half dozen people who took the time to report it.

Luckily we had a customer willing to help us diagnose the problem. He easily reproduced the error for us during a Go-To Meeting and also patiently labored through test pages that we tweaked on the fly to try to solve the problem. To no avail.

Without getting too bogged down in detail, the product tab links look like this:

<a href="#" onclick="somefunction();">tab text</a>

Normal behavior is that javascript code in somefunction is executed when the onclick event fires and the browser is prevented from changing its location to the value of the href attribute by a return false; statement at the end of somefunction. In this case, the content of each tab is written when the page is rendered and somefunction sets the display attribute of the clicked tab to block and the display attributes of the other tabs to none. Simple.

Except that for some users, clicking the tab was taking them to the location specified in the href attribute, #, the root of the site. At first we thought there was a scripting error that was causing the function to fail before the return false; could be executed. But Internet Explorer wasn’t reporting any errors on the page. We tried moving the return false; statement inside the onclick to be on the safe side.

<a href="#" onclick="somefunction();return false;">tab text</a>

That didn’t work either. Although with a return false; statement in the function itself and no script errors being generated, I didn’t really expect it to make any difference.

We tried changing the href attribute to

<a href="javascript: void();" onclick="somefunction();">tab text</a>

Which is a common technique for using a elements to execute code rather than changing locations. But all that did was stop the browser from going to the homepage. Our tab content still wasn’t showing. somefunction was still not being executed.

Eventually fixing the bug ended up on the back burner because of the extremely low volume of people reporting it. My heart sank recently when another complaint surfaced. What were we going to tell this customer when we had exhausted possible solutions before and come up with nothing?

Luckily the most recent complainant was pretty comfortable technically and started investigating possible causes on his own. The best news came when he reported that restoring Internet Explorer to its default settings and disabling all his add-ons solved the problem and the onclick events started behaving as expected again. Then he re-enabled his add-ons until he isolated the cause as the McAfee anti-phishing filter installed by his McAfee anti-virus suite.

At the time of this writing, a Google search for ‘McAfee anti-phishing filter’ has only turned up complaints of it causing sites to load slowly. Nothing regarding its effect on Javascript code. I couldn’t find any evidence on McAfee’s website that this is a known issue. Supposedly, the customer reported it to McAfee so hopefully I’ll have additional details soon. Such as a possible work-around. Other than simply disabling the filter. Interestingly, Internet Explorer’s built-in anti-phishing filter does not exhibit the same behavior.

On a side note, this bug draws attention to an interesting usability question. The product tabs, whose href attribute is set to #, completely failed for those users affected by the bug. While the Sign-In link, whose href attribute was set to a sign-in page URL, was still usable even though the onclick event’s failure to fire prevented the inline sign-in form from appearing.

Should the tab links have real values in their href attributes? Since each tab content doesn’t have its own URL, where should the link point to? Is it necessary to create server-side programming that accepts URL querystring parameters and uses it to show the appropriate tab in the event the onclick event fails and the page is redirected? I know in at least one case, the failure of the product tabs code caused a customer to order from a competitor where he could view the information he needed to make his decision.

FlickScreen and Collecting for Creativity

FlickScreen Flickr Uploader

People who rely on their creative juices to make a living have always ‘collected’ inspirational items. Images, textures, toys, etc. get stored in the ‘bank’ for later use.

In the past I’ve made several unsuccessful attempts to keep track of website designs that I like. But simple bookmarking has never really worked for me. I rarely make the effort to go back and organize the bookmarks so I always end up with one giant list. Saving a URL doesn’t really take a ‘snapshot’ of the inspirational design, sites get redesigned, URLs change, etc. So my already unmanageable list can eventually be filled with designs different than those that originally inspired me or invalid URLs. There’s got to be a better way.

Matthew Smith, author of the recent Digital Web Magazine article about collecting for design was having similar problems with screen captures. So he approached a Cocoa-programming friend of his who came up with FlickScreen. FlickScreen allows for convenient uploading of screen captures directly to your Flickr account.

FlickScreen runs in your Apple menu bar. A dropdown allows you to choose between uploading a capture of your entire screen or just a specific portion of it. Users can easily enter titles, descriptions, and keywords for their captures and even put them in specific sets. It takes about 10 seconds to classify and upload a capture. All without leaving the page.


Green Hosting


Green Web Hosting! This site hosted by DreamHost.

I’m pleased to announce that Radiant Skin Clinic, a client of mine, is now a certified green site!

Over the last few weeks we had been experiencing a lot of performance problems with our old host. The situation didn’t seem to be improving and after a few days of truly abysmal loading times, we decided it was time to move to a new host. I’ve always heard great things about Dreamhost so we went with them. With 500GB (increasing weekly) of storage and 5TB (increasing weekly) of bandwidth, their pricing and plans can’t be beat. It’s an added bonus however that Dreamhost purchases Renewable Energy Credits to offset the carbon emissions generated by their business activities.

While I wouldn’t recommend selecting any service provider based solely on whether they’re carbon neutral or not, so far Dreamhost service and the features have been impressive. Clicking on the “green site” badge above will take you to a Dreamhost page with more details on other steps they’re taking to minimize the effects of their business activities.

Work work work…

Now that my MacBook is back, my plan for the weekend is to get Ruby, Rails, and MySQL up and running using Dan Bemjamin’s tutorial at HiveLogic. I got everything running pre-hard drive crash but never had the chance to play around and learn Ruby.

Unfortunately it’s also time to buckle down and do some much needed maintenance and upgrades to some WordPress and other applications I have out in the wild.

Yaeger, Treviso & Associates, Inc.

http://www.yt-a.com/

I’m pleased to announce the release of the NEW Yaeger, Treviso & Associates, Inc. website! It was great to work with Jon and Chuck on redesigning their existing website. They’re excited about the idea of clients being able to upload Quickbooks and other financial files directly to them. And because tax season is so busy, they’re always on the lookout for additional talent. Prospective employees can upload resumes as well.

What’s New With Me…

It’s been a while since I’ve written here.

I always say it’s because I’ve been busy. And it’s true. In the last month, I’ve moved this site to a different host and started everything but the content from scratch. Oh yeah, I also moved cross country.

Aside from the move, the important stuff is that I’m no longer with CUNet. I’m currently freelancing and looking for something web development/design related that really interests and inspires me. If you think you have the thing, please check out my portfolio site for examples of my work and contact information.

I summed up the latest changes to this site in another post so I won’t go into it again now. The newest of the new though is the LinkedIn icon that appears at the top of the middle column. I’ve always gotten good traffic and leads from my LinkedIn profile. Now that I’m left to my own devices for employment, I’m going to try to better leverage LinkedIn. Afterall, there’s a wealth of good information there about me. It acts as a resume of sorts, outlining my work experience. Even better, it contains loads of endorsements and recommendations from my coworkers and clients.

DropIn Hood River

DropIn bus in Hood River

I spotted this a week or so ago in the grocery store parking lot not far from where I mountain bike. The sight of it (almost) made me giddy like a school girl ;)

The DropIn bus is the home away from home for a half dozen or so pro and semi-pro mountain bikers. It’s a series on Canadian TV that I got turned onto about 5 years ago. I watched the first season religiously (then available only on the Internet in the States) and even bought the DVDs. At the time they were traveling throughout Northwestern Canada searching for great spots to ride and filming themselves ripping it up. Four seasons later they’ve been all over Canada, the Western United States, and even spent a season in New Zealand.

Life happened and I got away from riding for a while. I had forgotten all about the show until I had some downtime recently and decided to watch the DVDs again. It’s a weird coincidence that a few days later I’d spot the bus in my “neighborhood”. It was even more of a surprise to go out to the mailbox and find Dylan Tremblay riding down the sidewalk toward me. We chatted for a while about the local riding and their next destination. I also checked out his new bike (in the video below). It was definitely cool to personally meet a guy whose riding I respect and whose skill level I’d like to reach.

The “New”

Well, here is the new “design”. I opted to go the theme route because I find I get bored with a design by the time I’ve got it all fleshed out for Word Press. Besides, like I said, I’ve been pretty busy with paying work lately.

Over the last few weeks I’ve upgraded Word Press to implement some security updates as well as take advantage of some widgets and plug-ins available for more recent versions. The Recent Reading and My Flickr sections of the footer are new to the site.

I’ve also updated the directory structure and moved some things around a little. It’s been tested locally but please let me know (in the comments here) if you click on something that doesn’t work as expected.

As I mentioned in my previous post, Coming…soon(?), this website also has a new home with Bluehost. They came highly recommended and they offer RoR hosting so hopefully you’ find some posts about Ruby here in the near future.

Coming…soon (?)

Unfortunately this site has been largely neglected (in favor of paying work). But hopefully soon all that will change…

I’m trying out a new host and this will be the first domain to switch over. When it does, it will have a new (sorely needed) look. The new host supports RoR so I hope to play around with (and write about that) here.

OMG…the music!

I have an ipod and an FM transmitter for the car. If you don’t know, it plugs into my ipod and sends the music to an empty FM station so I can listen through the car stereo. It’s very cool because I’m done with CDs and all my music is stored on the computer and ipod (for portability).

The transmitter needs to be tuned into a pretty empty station in order to work and be heard clearly (without static). Unfortunately there were hours and hours of driving time through the Midwest and above that for whatever reason, I couldn’t find a station empty enough to make it worth tuning into. Instead I spent hours hitting scan and bouncing between country and religious stations.

S– and I were headed out to run a quick errand today and she wanted to listen to a CD. I popped open the changer and what did I find…?

Six great CDs ranging from Tom Petty and System of a Down to Wyclef. They were there the whole time! Oh well.

Hood River, Oregon

I made it into Hood River, Oregon about 1:30 PST today.

The alarm on a car outside my hotel room window last night went off about every 20 minutes it seemed. Finally about 4 I decided it was’t going to stop so I might as well hit the road.

Idaho was beautiful and the mid-June snowstorm I encountered in Lookout Pass between Montana and Idaho was certainly unexpected.

The tip of Northern Idaho went fast but Washington was painful. Most of what I drove through was desert-like and knowing I was so close…but still hours away made it all the more painful.

I finally crossed over into Oregon about noon with a few more hours left to go. Battling the winds shooting down the Columbia River Gorge with four bikes on the car (acting as a big sail) seemed to make me go backwards.

Ah…finally sweet relief and a place to crash…Hood River.

Check out the Flickr pictures from the trip.

Missoula, Montana

I spent most of the morning in the Badlands and Black Hills Forest taking pictures. With lots of time to make up, I drove about 15 hours today for a total of almost 950 miles. Ouch!

I’m spending the night in Missoula and shooting for finishing the trip through Idaho, Washington and Oregon tomorrow. The legwork and extended time in the car today should leave me with an “easy” 7 to 8 hour day tomorrow.

Murdo, SD

Tonight I’m in Murdo, South Dakota, a few hours East of Montana/Wyoming borders. In almost 800 miles of driving today, I crossed all of Iowa and most of South Dakota. I’m beat and headed to bed even though it’s only 8:30p here.

Tomorrow’s agenda is a quick stop at Mount Rushmore for pictures, Custer National Forrest to see some bison, and hopefully make it as far as Coeur D’Alene, Idaho.

I’d like an easy day of driving Sunday to finish up this trip. We’ll see what happens.

I’m Not Dead…Yet.

I think that line is from Monty Python…technically I think it’s, “He’s not dead yet”. At any rate, I’m not dead. I’m just in Illinois.

Some of you know and some of you do not. I’m currently driving cross country to Portland, Oregon. I’m relocating.

That’s part of the reason I haven’t written here since I don’t even know when. Too busy with house and packing and moving preparations.

I hoped to post pictures here of my travels. I’m taking them. Unfortunately it seems I’ve packed the USB cable for my camera who knows where. So pictures will have to wait until I unpack. Stay tuned…

Fully Subverted

Since implementing Subversion at work, I’ve been anxious to get some of my own files here at home under source control.

I’m now pleased to announce that it’s complete and went rather painlessly. I installed Subversion this weekend using one of the graphical installer packages. After I got that up and running, I chose Tortoise SVN as the client, mostly because we use it at work but it also integrates nicely with Windows. Tortoise gives you a contextual menu right in Windows explorer that allows you to manage all your version controlled files (or add files to source control) by simply right-clicking.

If you’re new to setting up source control and repositories (like I am), it doesn’t get any easier than these two applications. Now I just need to setup up my repository so I can connect to it from my laptop.

Hulkamania!

After sleeping for maybe an hour in 10 to 15 minute intervals on the red-eye from the West Coast, I was in no mood to get my picture taken when my parents met me at the airport this morning.

Until I saw this guy:

The Hulkster at our local airport

Oops…let’s rethink that URL

I spend WAY too much time online reading blogs, news, etc. This is the funniest thing I’ve seen in a long time. This guy found company URLs that when read the right way probably aren’t exactly what that company had in mind when they purchased them. Enjoy!

Top 10 Worst Company URLs

The New…

  • Single
  • Empty house
  • Job
  • ColdFusion
  • Free time lunch

Hackers & Painters

I just finished Hackers & Painters Big Ideas From The Computer Age by Paul Graham. For those of you not familar, Graham was the co-founder of Viaweb, the web’s first online e-commerce store generator. Graham and Robert Morris sold Viaweb to Yahoo! in 1998. Hackers & Painters is a collection of Graham’s essays on topics ranging from the education system to the ideal programming language.

I like Graham’s essays because although his topics are wide in scope, he breaks it down in a manner that lets you know he’s really spent a lot of time thinking about it. Now I’m no Paul Graham but I think I spend an almost painful amount of time thinking about a variety of different things. It’s almost relaxing to read the thoughts of someone who thinks more than I do.

I’m not sure if it’s because this topic came at the end of the book so it’s freshest or because this is a big topic lately at work but there’s a paragraph or two that’s been stuck in my head since I read it. It’s in the essay titled Revenge of the Nerds under the Recipe heading. It’s about “best practices” and “standards”.

Graham suggests that managers push for the adoption of best practices and standard technology because they’re safe choices. Any company can fail at any given time. Graham proposes that failure of projects that use best practices aren’t viewed as failures of management but rather as failures of technology and the industry that chose it (at least as far as those managers are concerned).

Don’t get me wrong, I think standards are a good thing. I try to construct all my sites using and validating against W3C standards. In the 1800s, it was nice to know that railroad tracks constructed in the West using a certain gauge would match up with those constructed starting in the East using the same guage. It’s also nice for those building skyscrapers to know that a steel beam will support the same weight whether it’s purchased from Metal X or Y Steel. I also think usability standards are also important. Web users have come to expect certain behaviors from certain web controls and it doesn’t help anyone to deviate from them.

On the other hand, I think Graham’s point is that innovation doesn’t come from safe choices or doing what everyone else does. This is where small companies excel. Maybe nobody told them things aren’t done a certain way or maybe they have nothing to lose. Graham quotes Erann Gat as saying that “what industry best practice actually gets you is not the best, but merely the average”. I don’t think any company can afford to be average. What do you think?

A Sign of the Times

Of all the tyrannies, a tyranny exercised for the good of its victims may be the most oppressive.

I found this quote by C.S. Lewis is some recent reading and wanted to share it. I think its extremely timely.