Archive for the ‘We Love... Technology’ Category

Google’s almost Flash indexing

A month ago that Google announced it had enhanced its robot’s crawling to index the text embedded within Flash movies (with the help of Adobe). At the time there was cheering, whooping and it even made the BBC website - which made it pure fact.

As the dust settled however, gaps started appearing in the official press release. The announcement was incredibly vague - the basic gist was that something had been changed to make this happen. Developers, it seemed, had to work out what had changed themselves. And it turns out this is exactly the way it was meant to happen. Two main points were particularly mind-boggling, leaving many questions unanswered:

“…if your web page loads a Flash file via JavaScript, Google may not be aware of that Flash file, in which case it will not be indexed.”

Due to Internet Explorer activation action, all websites must use JavaScript to embed their content. Does this mean that they will not be indexed? What would be the point of indexing flash if you can’t view any of them?

“We currently do not attach content from external resources that are loaded by your Flash files…[if your movie] loads an HTML file, an XML file, another SWF file, etc., Google will separately index that resource”

Any self-respecting Flash Developer will be loading their text content dynamically. Again this will make the indexing completely useless for most well developed websites - but if the XML content is indexed separately Google will lead the user to the XML content instead! Beautiful.

Thankfully Google responded in the comments of the original post (why not a new post to clear things up?) and we now know that the external content linking and javascript flash embedding problems are being fixed - but it looks like there’s still going to be a long wait for true indexing of flash content.

IE666

All web developers could bond on the tedium of supporting IE6. There’s nothing like designing in FireFox, the couple of fixes for IE7 and switching to IE6 only to see complete mayhem. All your pngs have light blue backgrounds, the javascript crashes the whole browser every other load and the layout, well it isn’t layed out anymore. There are campaigns to Save A Developer and Stop IE6, a million blog posts about giving up on IE6 completely (some high profile people actually have) and idiots that start posts with “I’m a webmaster. I hate IE6. Period.”

The problem is, we don’t have a choice. It’s hard to grasp but less than 1% of the people using the internet know what IE6 is and yet 40% of them are using it. Sticking a modal pop-up over your site isn’t going to get these people to update their browser. If for some reason you didn’t support IE6 people won’t think “Oh, what a terrible browser I’ve got”. They’ll either think that your website is broken or, even worse, that it’s broken their computer. And you’ll lose 40% of your potential users just like that.

Of all the reasons that people use IE6, none will go away. They either have to use it (at work), dislike change (click “no” to every update dialog) or don’t know what they’re doing (parents). We’ll just have to wait this out and while we’re waiting, here’s a few things to help:

  • Reset your html. The default rendering of many of IE6s elements differs greatly from modern browsers (it is 7 years old after all). Resetting your CSS will give you a level playing field to start off with.
  • Use conditional comments. If all those hacks start targeting other browsers in the future you’re going to be in a lot of trouble. Conditional comments will only ever target the one browser and give you one place to store all your IE6/7 changes.
  • Production with IE6 in mind. With a complicated design, many uses of the IE6 png fix on one page can lead to slow rendering times. Chop up your designs with this in mind and leave the background in.

Of course by the time IE6 has gone, we’ll all be whinging about IE7 not supporting anything we want.

Communicating between panels in eyeblaster

On our recent push-down banner for The Dominion Plaza development, we came to a slight stumbling block in communicating between each panel to synchronise the animation. The documentation was slightly patchy so here’s a basic rundown of how we achieved this effect on the eyeblaster platform.

Eyeblaster have a “SyncAds” component that uses the LocalConnection class to communicate between your panels - or ads on the same page - and allows you to run functions. As LocalConnection isn’t available to you on the eyeblaster platform, this proxy class is your best bet.

Usage is relatively simple: register a connection, create a listener to find the panel’s connection and execute the function on the panel when it loads. For the steps below the banner is the “sender” and the panel is the “receiver”. This effect can be used to great effect with multiple ads on the page.

First off, place your SyncAds component in the second frame of your banner (and your panel) and give it an instance name - I’ve called mine “syncAd_mc”. Create a function in the root, first frame of the overlay/push-down panel to handle the data passed from the banner. For this simple example we’re simply passing a frame number to move to, but you’d probably want to do more than this.

function gotoFrame(iFrame:Number) {
	gotoAndPlay(iFrame);
}

And in frame 2 of your panel:

syncAd_mc.openConnection("panel");

You can see that we always have to open a connection with the openConnection method of the syncAds component. This is required before any communication can be made between panels.

Now, on the rollover event of your banner, use the findConnection method of your SyncAds component to listen for the panel opening (there will be a delay before the panel opens depending on connection speed etc. of the user).

syncAd_mc.openConnection("banner");
clickthrough.onRollOver = function() {
	syncAd_mc.findConnection("panel");
}
syncAd_mc.onConnectionFound = function() {
	syncAd_mc.callConnection("panel", "gotoFrame", _currentframe);
}

The onConnectionFound event handler is called when the panel has loaded and the function “gotoFrame” is called, passing the currentframe of the banner.

It’s pretty easy when you get down to it!