No Mod Required

Archive for the 'browsers' Category

Rejoice. "click to activate and use this control" is Now Dead.

So sayeth the IEblog:

IEBlog : IE Automatic Component Activation Now Available

The IE Automatic Component Activation (IE ACA) update is now available as part of the April 2008 Internet Explorer Cumulative Update. The "click to activate" behavior, formerly required for ActiveX controls embedded in some webpages, is now permanently removed from Internet Explorer. For detailed information on IE ACA, see our blog post from last November announcing this update.

This update replaces the IE ACA previews released in December 2007 and February 2008.

Which means I can stop using SWFObject and just dump Flash into the page like I used to way back when. SWFObject is really a nice piece of code, but I'm a lot happier when I'm not relying on JavaScript for something as basic as getting Flash embedded into a page. It's just an added layer of complexity and an extra download* that I don't need in my life and I'm damn glad to be rid of it.

Want an example of the complexity I'm talking about? check out this post I wrote a few months ago:

Belt and Suspenders- Flash Embed With SWFObject and Conditional Comments

While it works, it's WAY too complicated for anyone's good.

*although I do wrap all JS into a single file now, just appending SWFObject to the bottom of the file. Even doing that it adds a few KB to the download, so even in a single file situation it's overhead I'd rather be rid of…

An Explosion of Links.

As long as you're happy with 5 being the definition of an explosion :)

Craftsmanship

Markup & Style Society Talk - Bokardo

"For my talk, I picked something I’ve never talked about before: web craftsmanship. I chose this topic because I’ve been thinking a lot more about it since going out on my own last August. I also consider both Dan and Ethan craftsmen, obsessed with doing quality work vs. gaining notoriety or getting rich. So I thought it would be a good fit for the audience as well."

Not the greatest slideshare, but the very thought of it speaks to me as I'm trying to improve quality across the presentation layer at work and getting people to think in those terms is a key to getting the work I want to see produced on a consistent basis.

Wayback machine

jwz - Happy Run Some Old Web Browsers Day!

jwz has resurrected a ton of old Netscape/Mosaic history, including the old Mosaic Communications Corporation web site and some ancient versions of their software (with which to browse it.)

SEO

Free Firefox Rank Checker - Check Your Google, Yahoo!, and Microsoft Search Engine Rankings : SEO Book.com

Pretty self-explanatory, no? I took it for a test drive this morning and it's a fine tool.

A New Blog I Love

The Leila Texts

When you send a text message on the Verizon network, you can address your text by choosing a name out of your contact list, or you can address it by typing in a phone number. You can also type in a name. And if you type in L-E-I-L-A, then– bizarrely– your text will come to me.
This is a blog about the texts I have received. All of them are from strangers, intended for other Leilas, but obviously they missed their marks.

Just read it. It's not a big time investment and it's interesting/funny/weird/cool.

Creative Wins at PR

Message to Daniel_K - Sound Blaster - Creative Labs

Description cribbed from metafilter:

"A geek named daniel_k wanted to help his fellow Vista users. He created a set of drivers that would get their Creative sound cards working under Vista — something beyond the ken and expertise of Creative's engineering team. Creative VP Phil O'Shaughnessy, however, took umbrage. The results? A PR disaster with hundreds of users pledging to boycott. "

It made slashdot, digg, reddit, etc. Nice work Creative!

SaveTheDevelopers.org AKA Save Me From the Pain of IE6

SaveTheDevelopers.org :: Making The Web A Better Place

Say no to IE 6! Our current campaign focuses on assisting users in upgrading their Internet Explorer 6 web browser. This campaign will result in former IE 6 users having a more enjoyable experience on the web while (hopefully) creating a less stressful and complicated environment for web developers by hastening the retirement of an outdated browser.

Say it loud!

I've been writing about the slow adoption rate for a while now and it's still a source of frustration. Over the past month this site has seen 9,078 visitors using IE6.* Which is precisely 9,078 too many.

Honestly? In some sense it's a positive number, as the overall percentage of users on IE6 is shrinking. It's still not shrinking fast enough, however, so sentiments like the above speak to me like a call from up on high.

Sure, my site (and really all of my sites) looks fine in IE6, but it's still a pain to have to support it, even if it's just the extra bytes I have to serve other browsers (in the form of conditional comments.) And really, being the stickler for good experiences that I am, I still have to test and bug-fix for IE6 whenever I add new features or styles. Supporting two version of IE is awful, especially when one is so much better than the other.

I won't even get started on the issues at work.

Okay, maybe a little.

While I've got a hip, upgrading crowd that visits this site, the people we build for at work are generally running old, locked down machines running whatever browser their IT department wants to support. Care to guess what browser that might be?

Yeah.

IE6.

*sob*

*compared to 32,372 using Firefox and 15,385 using Internet Explorer 7.

Acid3 Test Released. I Took Some Screen Captures. Lots of Fail.

Screen Shots

[update! 3-27-2008] As everyone now knows, we've had a winner in the race to pass Acid3. Congrats to the WebKit team

acid-3-passed.jpg

These were done with browsercam, so the test may or may not have fully run its course by the time the 15 second delay was up. Still, it's not like any of these browsers were close, so a few seconds isn't going to save them if, in fact, they were cut off before the rendering was over.

As a note, I tried to do the Capture in Konqueror and it pretty much made Browsercam cry and/or vomit ("Do NOT Try The Capture Again!") I'm going to log in shortly to see what the actual damage is.

[update]It's a known bug[/update]

Reference Rendering:

reference-rendering.png

And now the Fail parade:

Camino 1.51 Mac OS 10.5

camino-151-mac.png

Firefox 2 Mac OS 10.5

firefox-2-mac-105.png

Firefox 3 Mac OS 10.5

firefox-3-mac.png

Internet Explorer 6 Windows XP

ie-6-xp.png

Internet Explorer 7 Windows Vista

ie-7-vista.png

Internet Explorer 7 Windows XP

ie-7-xp.png

Firefox 2 Windows XP

firefox-2-xp.png

Firefox 3 Windows XP

firefox-3-xp.png

Safari 3 Mac OS 10.5

[update]as seen in the comments the latest build is now scoring 87/100[/update]

safari-3-105.png

[update]Sorry Opera! I had the capture, but forgot to post it in my rush to get out the door today[/update]

Opera 9.24 Windows Vista

opera-924-vista.png

Here's Konqueror built from SVN 2008.03.06 (thanks to Ronald Hummelink and everyone else that sent in Konqueror captures)

acid3_konqueror_20080306.png

And here's IE8 Beta:

ie8-acid3.png

Opera 9.5:

acid3-opera-95.jpg

Firefox 3 Beta 4 on Windows XP

firefox-3-beta-4-acid3.jpg

Now, the press release:

Acid3: Putting Browser Makers on Notice, Again. - The Web Standards Project

Acid3: Putting Browser Makers on Notice, Again.

Released: 3 March 2008 | Author: The Web Standards Project

The Web Standards Project (WaSP) today announced the release of Acid3, the latest in a line of tests designed to expose flaws in the implementation of mature Web standards in Web browsers. By making sure their software adheres to the test, the creators of these products can be more confident that their software will display and function with Web pages correctly both now and with Web pages of the future.

The Acid3 Test is designed to test specifications for Web 2.0, and exposes potential flaws in implementations of the public ECMAScript 262 and W3C Document Object Model 2 standards. Collectively known as DOM Scripting, it is these technologies that enable advanced page interactivity and power many advanced web applications such as web-based email and online office applications.

As a series of 100 mini-tests, Acid3 has already been found to expose flaws in all tested browsers, including Internet Explorer, Firefox, Opera, and Safari. WaSP hopes that Acid3 will prove useful to browser makers during the development of future versions of their products.

WaSP has a history of such initiatives. In 1997, emeritus member Todd Fahrner, together with a group of crack Web developers dubbed the “CSS Samurai,” created an “Acid Test” that highlighted shortcomings in browser support for CSS. The Acid Test was instrumental in moving the industry much closer to the goal of consistent rendering of Web pages in different browsers. This was followed by Acid2 in 2005, designed to expose flaws in the implementation of mature Web standards such as HTML, CSS, and PNG. Acid3 builds on and extends this legacy to web applications in 2008.

Acid3 can be found online at http://www.webstandards.org/acid3/

The Netscape Browser is Dead. Long Live the Netscape Browser.

The Netscape Browser is Dead.

Long Live the Netscape Browser.

I'd say it's a sad day, but the Netscape browser has been dead to me for a long, long time. Between the unbearable crappiness of the 4.* branch, the sale to AOHell and Internet Explorer clobbering them in the browser wars, I've long grown accustomed to a world without a Netscape branded browser (in any real sense.) And anyway, the heart of the project lives on in the form of the Mozilla project and the Firefox browser, so the loss of the Netscape brand doesn't mean all that much in the grand scheme of things. To be honest, with the way Firefox is growing it's like revenge of the Netscapes or something.

Still, Netscape was the web way back when, so seeing that part of Internet history go by the wayside is something to note. Even if it's a shriveled relic of what it once was.

Belt and Suspenders- Flash Embed With SWFObject and Conditional Comments

If you're using Flash and you want the best possible coverage (meaning it works with users who don't have JS turned on) while still using something like SWFObject where possible to get around the "click here to activate and use this control" ActiveX message in Internet Explorer, then take a look at the ridiculous pattern below.

Warning- not for the squeamish…

Here's the HTML:

<!--[if IE]>
   <noscript> 
   <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="1004" height="281">
      <param name="movie" value="_assets/flash/homepage.swf" />
      <param name="quality" value="high" />
      <embed src="_assets/flash/homepage.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="1004" height="281"></embed>
</object>
</noscript>

<![endif]–>
<!–[if !IE]> <–>
   <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="1004" height="281">
      <param name="movie" value="_assets/flash/homepage.swf" />
      <param name="quality" value="high" />
      <embed src="_assets/flash/homepage.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="1004" height="281"></embed>
   </object>
<!–> <![endif]–>

Here's the SWFObject script served to Internet Explorer and ONLY Internet Explorer

<!--[if IE]>
<script src="_assets/js/swfobject.js" type="text/javascript"></script>
<![endif]–>

And here's the SWFObject call:

        //use conditional compilation to hide this call from non-IE browsers
	/*@cc_on @*/
        /*@if (@_win32)
	if ($("home")){
		var so = new SWFObject("_assets/flash/homepage.swf", "mymovie", "1004″, "281″, "8″, "#336699″);
	   	so.addParam("wmode", "transparent");
	   	so.write("messaging");
	}
	/*@end @*/

Before I go further, let me just say I'm counting the days until I can just dump a SWF into the page and be done with it. I hate all of these script based machinations to get a SWF out to the browser. This is code overhead that really bugs me…

Anyway, here's the HTML logic.

  • We use Microsoft's conditional comments to show/hide content
  • In the "This is IE" block we use a noscript tag to present a traditional embed to IE users who might have JS turned off.
  • Every other IE user with JS turned on will see the SWF embedded by SWFObject so no "click to activate and use this control" will be visible to the user. Since the majority of people on the web use IE and the majority of them surf with JS turned on, most users will fall into this category.
  • Then, in the "This is not IE" block, we just embed the Flash the old school way. Since the Eolas suit doesn't come into play with other browsers, embedding the SWF the old way is fine (at least in terms of the "click here…" nonsense.) As an additional benefit there's no concern over whether or not the user has JavaScript turned on. JavaScript or no, the only issue is whether or not they have the plugin. Whereas with SWFObject there's a possibility (however slim) that a user could have the Flash plugin installed but be surfing with JavaScript disabled. As I mentioned, this is for the best possible coverage… Also, if they don't have the plugin they get the "download this plugin" notification. I head reports that that wasn't happening with SWFObject running* so getting that to work properly is definitely a bonus. It was actually that bug report that got me into this whole mess :)

As for how it works technically, the following

<!--[if IE]>

Is read by IE as a test (if the browser is Internet Explorer.) Every other browser reads it as an open comment. Since it's an open comment everything up until the close comment (<![endif]–>) will be ignored by non-IE browsers. IE, on the other hand will go ahead and process that markup normally since it recognizes that pattern as a conditional and its test will evaluate to true.

As a note, I don't like using this stuff all over the place**, but in a situation like this conditional comments are a great option to have.

On the flip side All other browsers read this pattern:

<!–[if !IE]> <–>

As a completed comment, opened and closed on the same line. Therefore everything that follows is rendered normally by Firefox, safari and all the rest. IE, on the other hand, reads it as the beginning of a "If the browser is NOT IE" conditional. Since that resolves to false, everything down to the end of the conditional endif (<!–> <![endif]–>) is ignored by Internet Explorer. That allows us to go back to the future and embed flash in the old school way for everything but IE.

Oh the pain.

Still, if you absolutely need the best possible coverage and want to use SWFObject, this is a way to go. Is it the best? Probably not, since it's horrifyingly hack-y and won't validate. But it might be useful for someone out there…

*and I could figure out how to make it happen…
**I mostly use it to attach IE specific style sheets. For those of you keeping track, that looks like this:

<!--[if gte IE 5.5]>
<![if lt IE 7]>
<link rel="STYLESHEET" type="text/css" href="_assets/styles/ie6.css" />
<![endif]>
<![if gte IE 7]>
<link rel="STYLESHEET" type="text/css" href="_assets/styles/ie7.css" />
<![endif]>
<![endif]–>

Did you know- 8 Bit PNG transparency is just like an old school transparent Gif

Don't believe me? Check it out:

There's nothing fancy going on there at all. Here's the full document:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Untitled Document</title>
  <style type="text/css">
  <!–
  #png {
  background: url(sample-bg.jpg);
  height: 200px;
  width: 200px;
  }
  –>
  </style>
  </head>

<body>
  <div id="png">
  <p><img src="png-sample.png" alt="PNG Sample text" width="94" height="50" /></p>
  <p><img src="png-sample.png" alt="PNG Sample text" width="94" height="50" /></p>
  <p><img src="png-sample.png" alt="PNG Sample text" width="94" height="50" /></p>
  </div>
  </body>
  </html>

As you can see, I'm just grabbing the images and dumping them into the doc. This fails in IE4 and Netscape 4.78. It works in everything else Browsercam offers.

This is different than 32 Bit PNG transparency (24 Bit color depth with 8 Bit alpha,) but still a useful thing to know if, like me, you're transitioning over to PNGs from GIFs for web graphics.

I Might Have to Start Bribing People to Upgrade to Internet Explorer 7- Fun With The CSS :hover pseudo-class.

There's absolutely nothing groundbreaking about the following code sample. People (who are lucky enough to have more time to mess around) have been doing this sort of experimentation for a while now. Thing is, this one is so simple and so plainly useful I just have to toss it out there for your (my?) enjoyment.

Check out the following sample. It's just a simple show/hide, but I just love the simplicity of the code that runs it.

With a class="more" attached the DL, all we need to run the above is this


dl.more dd{
display:none;
}
dl.more:hover dd{
display:block;
}

There are two things I like about that:

  1. It's as simple as it gets. The only thing simpler than coding that would be not coding anything.
  2. It makes sense. A lot of times those "more" links are the spitting image of a dt dd pair, except it's unrelated tags in an arbitrary structure (something like DIV > P + DIV) so using ready-made structure just feels right.

Yeah, there are potential issues. The one that sticks out to me is it's not accessible, since with no mouse there's no :hover. That said, with any solution involving a mouse, accessibility becomes an issue, so it's not better or worse than any other solution that doesn't address the mouse-less users.

The other obvious issue is that IE6 doesn't support :hover on anything but links, so there would need to be a script based solution to get this to work in what is still one of the biggest browsers out there.* But I can dream, can't I?

*For this site, Firefox is actually the number one browser, followed by IE6 and then IE7. The combination of IE versions are still the dominant browser platform.

Destroy a CSS Layout in Safari 1.*-2.0 With One Character

I got a bug report this morning about the recently launched Innocentive site failing to render properly in some versions of Safari. This was surprising to me as I test layouts in Safari 3 for the PC regularly, and I'd run a full Browsercam test on the site just last week and turned up no major issues. As the following screen shot shows it truly is a major issue:

u-g-l-y.gif

I validated both the HTML and CSS. The HTML turned up nothing major. The CSS spit back this:

27 #wrapper #content #messaging Parse Error - ;1 }

Looking at the style sheet, I saw the following rule:

#wrapper #content #messaging {
	height: 281px;
	width: 1004px;
	position: relative;1
}

Deleting the "1″ fixed the issue:

it-works.jpg

Here are the results of some other tests:

CSS Result
position: relative;
1;
Renders correctly
position: relative;
1
Broken Layout
position: relative;w00t Renders correctly
position: relative;? Broken Layout
position: relative;! Broken Layout
position: relative;# Broken Layout
position: relative;/ Broken Layout
position: relative;. Broken Layout
position: relative;_ Renders correctly
position: relative;- Broken Layout
position: relative;
-;
Renders correctly
position: relative;this is some crazy testing stuff right here Renders correctly

Basically it looks like Safari defines a valid property name as beginning with [a-z] or "_" (unless I'm mistaken [0-9] and "-" would also technically be valid*) and it completely craps out with an invalid property name if it's not stopped by a semi-colon ";"

This is changed for Safari 3, but could still potentially be useful if one needed to serve styles to just Safari. Define the majority of the sheet as if you were coding for Safari exclusively, then you could redefine the styles as needed for other browsers below the ;1 combination.

I went ahead and wrote it up because it was an interesting bug to me personally so I just ignored this question earlier, but- is this something people have seen before?

*anyone know for certain? I actually have to get back to work so I'm going to be unable to research that one.

The Wii Remote API posted by Opera…. and then (mysteriously?) pulled

I had this link to The Wii Remote API saved in my Reddit feed on Bloglines for a few days, waiting for just the right moment to crack open the link and check out the keys to some hot Wiimote magic. Clicking through- it's all blank page and "access denied." Oh no! Completely confused, I started poking around and caught this thread on their forums where people are all five flavors of "wha?!" about the fact that the article was pulled. Me, I've decided to work on the world's greatest conspiracy theory to explain why it was pulled. It will involve crazed terrorists, a man dressed in a foam Mario suit, Wii Sports, fifteen pounds of peanuts, Satoru Iwata, and a large albino African elephant. If my conspiracy theory were to be made into a movie, I would want Angelo Badalamenti to write the soundtrack, but I would force him to rework the songs of John Philip Sousa.

Thankfully I was able to save the mirrored document. In theory I could actually have real, business use for some Wii-More scripting knowledge. How often does that happen? a real business case for using perversely bleeding edge technology? Never.