Posted
by
Zonk
on Tuesday January 24, 2006 @02:05PM
from the new-tricks-for-an-old-dog dept.

Ruliz Galaxor writes "IEBlog posts that Internet Explorer 7 will support a native XMLHTTPRequest object as manyotherbrowsers currently do. This will mean no more ActiveX MSXML objects to implement AJAX functionality. It looks like Microsoft is seriously trying to make the lives of us web developers easier. Of course you'll still need to use the Microsoft.XMLHTTP ActiveX object if you want to support IE6 and older."

> >
Hello, I'm Sunava Dutta and I am a Program Manager in the Internet Explorer team.
> >
It's OK, we understand...

1) We admitted we were powerless over the cruft - that the code base had become unmanageable.
2) Came to believe that a power greater than ourselves could restore us to sanity.
3) Made a decision to turn our specs and our code over to the care of Gates as we understood Him.
4) Made a recursive search and complete manifest of our source files.
5) Admitted to Gates, to ourselves, and to another developer the exact nature of our design flaws.
6) Were entirely ready to have Gates fire our sorry asses.
7) Humbly asked Him to allocate the budget for the security upgrades.
8) Made a list of all bugs we had let slip into the released codebase, and became willing to provide patches for them all.
9) Provided patches to such systems wherever possible, except when to do so would break existing functionality or introduce new security holes.
10) Continued to monitor the security mailing lists, and when we were notified of an exploit, promptly fixed the bug.
11) Sought through coding and specification to improve our conscious contact with Gates, as we understood Him, praying only for knowledge of His will for us and the power to carry that out.
12) Having had a spiritual awakening as the result of these steps, we tried to carry this message to program managers, and to practice these principles in all our projects.

Nope, the point is that the user will be able to turn off creation off "marked safe for scripting" ActiveX objects by ProgID. Any J(ava)Script/DOM object in IE is an ActiveX object, more precisely a IDispatch object. This has some technical consequences, as it means that reference counting, not garbage collection, is used.

Amen to that. To say that MS is finally fixing things like XMLHTTPRequest or PNG alpha transparency (which has only been around like what, 11 years or so?) in IE7 ONLY is somehow "making web developers' lives easier" when IE7 will only install to XP post SP2 or Vista is nonsense. You still have several different standards to code around until all those older versions fade into obscurity. Post some of these fixes back to 5.5 and 6.0 and maybe they'll actually make someone's life easier this decade.

They've lost some ground to Firefox et. al.; if they can keep corporate America convinced that IE is "just as good" for what businesses want their browser to do, they'll continue to hold the hammer-lock on browsers in the workplace (remember, M$ doesn't need to convince all of us, just the PHB's among us).

Riiiiight. I just read (and commented on) a comment that says that someone got owned on the 'net by just browsing with IE7, and I believe it (though the plural of anecdote is not data...) Granted, it's in beta, but it's not all that clear that there is any security to speak of. It was probably the WMF back door (I still want to call it this whether it's intentional or not, even though it's technically incorrect if it's not intentional) but even so, that doesn't seem like attention to sec

I'll believe it when I see it. Until then, I will continue to make my judgements based on Microsoft's past history of incompetence and neglect. So far Vista is vaporware and half of its functionality has been yanked out so they could release it only a few months late, which does not give me a warm fuzzy barrel of puppies feeling.

Personal bias aside (and IMC its a pretty big personal bias), IE7 will fill the bill for business use - it's got a fast rendering engine, it's compatible with the vast bulk of business internet/intranet sites (IE compatibility specifically, especially that downward-compatible part), and has just enough end-user features to keep the office geeks from blowing a gasket.

I won't speak to the matter of security - as long as ActiveX is on (see: IE compatibility above), IE will suffer from security problems. Acti

Never ran into the BarCode font issue, so I don't know how prevalent it is in businesses.

What I have run into is companies with websites (especially intranet websites) that rely completely on "the big blue 'e'". Companies may spend extra to make sure that Joe Websurfer sees their internet webpage correctly regardless of browser, but (with one or two exceptions) everywhere I've worked has intranet pages which require IE.

It looks like Microsoft is seriously trying to make the lives of us web developers easier.

MS deserves credit for this sensible implementation of XMLHTTPRequest, and indeed for innovating XMLHTTPRequest in the first place.

Now if MS is "seriously trying to make the lives of us web developers easier" [when] will they implement the rest of the core W3C web standards?

FF, Opera and Safari and their respective communities are already well advanced with implementations of SVG, DOM, CSS, PNG, JPEG2000 and XForms. These standards are bread and butter for "seriously trying to make the lives of us web developers easier".

Sure it's not full support -- no one has that -- but at this point the rest of the major players (Firefox, Safari, Opera) all have much better support for CSS than IE does.

To make some numbers up, supporting 90% of the spec is still a lot better than supporting 70%, especially when people have found really nifty [meyerweb.com] things you can do [howtocreate.co.uk] with that extra 20%.

My point was that FireFox/Gecko is not the paragon of standards compliance, so dragging IE into the "you don't comply" mud is hypocritical. Indeed there are more important things to make work, but nevertheless, compliance is incomplete.

To that effect, since CSS2 came out in 1998, and CSS2.1 in 2005, I would have expected text-shadow (along with the other things you listed) to get fixed in that time frame. What have the FireFox de

I don't think you really understand the CSS standard. CSS2.1 replaces 2.0, in the process getting rid of some properties which proved too problematic. There are parts of the CSS2 spec which are contradictory. Should Firefox implement that too? ^_^ It doesn't matter whether 2.1 has "draft" status or not; it's the superior standard, and one the w3 advocates adhering to.

No it doesn't. CSS 2.1 has draft status. More accurately, text-shadow will be deprecated, for CSS level 2, once CSS 2.1 is finalised. And that only applies to CSS level 2 - CSS level 3 might put it back in again [w3.org].

No, inline-block is present in a draft of the CSS 2.1 specification. Before that, it was a proprietary Internet Explorer property. It wasn't part of CSS 2.0, it wasn't part of CSS 1.0, and it isn't part of any finished CSS specification yet.

The only really valid complaint you have there is their lack of support for the DOM. In particular, it would be very nice if they implemented DOM 2 Events, but I don't think that's likely to happen for Internet Explorer 7.

VML is not SVG in the same way that 1998 is not 2006 and your grandmother is not Jessica Alba. More than that, MS never came close to fully implementing its own spec for VML in IE. The rendering in IE does not even support line widths or relative coordinates, and the spec doesn't even mention compression.

I'm not trolling. I know VML is not SVG. SVG is featuritis run amok. What the hell are the W3C thinking, adding audio [w3.org], video [w3.org] and network request [w3.org] functionality to a vector image format?

SVG has been around since the year 2000, and yet browsers are only just starting to implement SVG Tiny (not even SVG Full). If the W3C continue to throw everything but the kitchen sink into SVG, browser support will never be finished.

As for compression, why should VML be concerned with that? SVG shouldn't be concer

Are you available for consulting work? I need to develop some silent graphical web content that doesn't reference any other data or content. The filesize must be enormous and I need it to work with IE4 yesterday.

Straw men, the lot of them. I'm not arguing for a silent web, I'm arguing that it shouldn't be a graphics format that does the sound. I'm not arguing that content on the web should be completely disconnected from everything else, I'm arguing that pictures shouldn't be the things talking to the server. I'm not arguing that filesizes must be enourmous, I'm arguing that a problem that has already been solved does not need to be solved again.

It does work, but it is not quite the same as the IE version. The long and short of it is that OWA uses ActiveX if the browser allows it, if not it uses a java implementation, which works but is not quite as slick as the ActiveX version. However, with WPF this will probably go away.

I think it's great what the IE developers are doing. There are, of course, a few features I'd love to see integrated into the latest version, but I'm extremely happy with what they're doing otherwise.

When the IE blog began I was angered that they didn't seem to be worried about the numerous CSS flaws, among other bugs. They seemed like they were just trying to beef up security. As time marched on, though, the developers seemed to be taking notice to what most of the replies were about. The IE developers listened and really went the extra mile where the concerns of web developers everywhere are concerned.

While there are a few things I'd love to see (like the ability to properly deliver XHTML), I'm happy (for now) with the changes they're implementing. It sounds like they're really committed to helping web developers from having to design their website three or more times before they get a version that's decent looking in all browsers.

Let's give the guys some credit where credit is due... who knows, maybe the rest of Micro$oft will take the hint.

This is neat-o, and stuff, but I've been using the ActiveX object for back end services for many years now (4+ years?). I really hope that they keep the COM version up to date. It's been incredibly useful for longer than Firefox has even existed!

As all the DOM in IE is exposed as COM objects to friendly BHOs (Google Toolbar and the like) and the less friendly ones (countless spyware), and the scripting on a web page is manipulating the very same objects, it's more than likely that the compatibility syntax will just be a new way to access the very same MSXML COM object.

You think that we're going to have to load the IE runtime in memory to access it, though? As it is right now, it's just a relatively simple, stand-alone object that doesn't need a running copy of IE. Overhead for what we're using it for would go through the roof if we had to instantiate IE every time we needed to get to those methods.

It's good that MS is supporting web standards, but I doubt the reason is to play nice and make the lives of web developers easier. IMHO, MS realized that they have lost a lot of ground, credibility and following in the browser market. Any new "innovations" coming from MS will NOT be adopted very easily these days unless Firefox, Safari and Opera endorse it. So, before it can repeat what it did to Netscape, MS needs to re-capture its lost browser market share. The easiest way to do that is to come up with a really great browser that supports all the current web technologies, and that is easier to code for than other browsers. Classic 'embrace'. Once it has done that, and it has all the time and money in the world for it to do that, only then can it can start phase 2, the 'extend' phase where it renders all other browsers obsolete.

The only way to combat MS on this front is to keep innovating, staying a step in front of it. Netscape made the mistake of not updating their browser soon enough, and they paid dearly. I hope Opera, Firefox and Safari have learned that lesson.

The only way to combat MS on this front is to keep innovating, staying a step in front of it. Netscape made the mistake of not updating their browser soon enough, and they paid dearly. I hope Opera, Firefox and Safari have learned that lesson.

But it won't happen that way this time. When Netscape died (the first time), there really were only two browsers in the market. When one didn't keep up, the other took over.

This time around, there are lots of different browsers all working independently. Even if one br

Isn't that a bit unfair considering that the feature in question first appeared in IE? They're just making it simpler to access. I'm not sure you can accuse them of 'embracing' something they came up with in the first place. It's a bit like saying that with Vista they're going to 'embrace and extend' the NTFS file system format.

Microsoft invented XMLHttpRequest. Not Firefox, not opera, not KHTML. They all copied it from IE.

So it would be Firefox/Opera/KHTML that are doing the "embracing and extending" in this case.

On a side note, I don't see why this is a big deal. They are likely still going to use a COM object underneath. All this is is a coding shortcut, that no one will be able to use anyway because you're still going to have to support IE6 for the next 3 years at least.

"On a side note, I don't see why this is a big deal. They are likely still going to use a COM object underneath. All this is is a coding shortcut, that no one will be able to use anyway because you're still going to have to support IE6 for the next 3 years at least."

If you RTFA you'll see the benefit is for those organisations that have ActiveX turned off for security reasons (lots of em).

On the IEBlog you have a code snippet showing how you create the native XMLHttpRequest object for Opera, FF and IE7, while fall back to ActiveX for IE6 and earlier.

So there IS benefit. And no, it's not a simple scripting shortcut at all.

It's nice that MS is making this change but I'm more curious about whether their web applications will work without MSIE specific technologies. Example: Outlook Web Access isn't feature full on non-IE browsers. Also live.com and the new hotmail interface are still limited. Project Web Access is another one. Until these applications work without IE it won't be possible for a lot of businesses to move away from IE.

Someone else talked about this above; when it's on IE it uses ActiveX and when it isn't it uses Java. It's entirely possible that they will just move to a proper AJAX implementation and ditch the ActiveX version entirely - on one hand, it reduces the motivation to use IE, but on the other, they only have to maintain one version that way.

I was wondering about this very thing just last week. It's definitely a step in the right direction. Now if only MS would care enough to create a browser that behaves and renders more closely to the already superior browsers like Firefox and Safari. Web designers would no longer have to go through the anguish of browser detection for things as simple as page layouts. There's nothing like spending 2+ hours trying to get a single page template to render the same in IE and Safari/Firefox using only CSS. N

I'm guessing you've never tried to layout a (simple) page using CSS - then comparing it in IE against pretty much every other browser. Certainly they all have their problems, though IE really does suck more than most - that would be why. I'd give examples, but google and 'IE css problems' should get you several days reading material.:-)

OK, so what is wrong with using iFrames? Is AJAI not a sexy enough acronym?

Seriously. IFrame support has been around for quite some time and works well in most major browsers. You just hide the iframe and communicate to the server through it. I've done this lots of times, long before AJAX was around. It even worked in IE 4 and NS 4.7x if I remember right.

Sure, its not as elegant as using XMLHTTPRequest, but when is cross-browser javascript ever elegant? Is it better to have a hidden iframe on your

When you use Prototype [conio.net] to its full capability. Yes it requires a 'modern' browser, but your page should work without Javascript anyway. If you're going to use Javascript you may as well use it to its full extent. Prototype bridges an awful lot of gaps... I daresay more than 99% of JS developers could ever manage on their own, and it does it with style.

What IE really needs right now, if it wants to be taken seriously as a platform for AJAX web applications, is proper DOM/CSS support. The following would be a good start (my current peeve list with IE6):

Implement document.importNode()

Support setting of opposite side CSS positioning properties at the same time, i.e., setting "left" and "right or "top" and "bottom" properties on same element.

Fix other problems with SELECT element, e.g., the fact that it is not possible to add a ListBox-style select to a document using DOM manipulation.

Fix bug where the presence of a vertical scrollbar adjacent to a 100% wide table inside of a CSS positioned element results in a horizontal scrollbar due to incorrect width calculations.

Fix issue where 100% wide textareas expand to be a bit wider (creating a horizontal scrollbar) once text is entered. This also only occurs if the text area resides in a CSS positioned DIV.

Correctly monitor the DOM for updates and repaint appropriately. Currently there are cases where IE will not repaint the screen even though the DOM has changed, requiring the developer to perform additional DOM manipulations just to trigger a repaint.

Fix this completely insane bug [blogspot.com] (scroll down to a few paragraphs or search for the text "worst bug ever in Internet Explorer 6."

And last but definitely not least, simply bring the performance up to a level relative to Firefox/Opera/Konqueror/Safari, especially when dealing with reasonably complex and interactive DOMs.

I've posted this on ieblog before. I sincerely hope that somehow someone on the IE team sees one my numerous implementations of the above list of rants and implements solutions for them. It'll make the professional lives of many AJAX developers quite a bit more pleasant.

I believe the issue you raised about the SELECT is being addressed in IE7. I had a problem with IE and SELECTs the other day and I googled around and came across a blog where it was mentioned that it is being completely rebuilt (the select objcet).

"What IE really needs right now, if it wants to be taken seriously as a platform for AJAX web applications, is..."Sorry but your list sounds like a random wishlist for what YOU want, so to consider IE a serious platform.

Microsoft instead, decided to listen to the feedback of more than one developers, and if you go to IEBlog you'll see a list of improvements and bugfixes that the majority of the developers need from the browser.

I'd say they're hitting the jackpot with the stuff they fix in beta 2 and for the

IMO, document.addEventListener() is more important than any of those. Many of your issues can be worked around, and some of them can be worked around rather trivially. However, there is no way in IE to match the functionality of addEventListener, with any amount of hacking.

IMO, document.addEventListener() is more important than any of those. Many of your issues can be worked around, and some of them can be worked around rather trivially. However, there is no way in IE to match the functionality of addEventListener, with any amount of hacking.

Definitely agree that all my listed issues can be worked around, but I wouldn't go as far as to say it's trivial to do so. Here are the current workarounds I use in IE for these problems:

For work, I guess I will still have to plan workarounds for IE6. However, I generally only support such browsers officially as long as they receive actual support from their publishers. So, as soon as MS drops support for IE6, so will I (unless I'm ordered to keep it up).

Personally, I code to whatever standard I've chosen for the day. If I decided to code to CSS 2.1 and I can see it properly in my browser, well, then I'm happy. Because it's my personal stuff. And if IE7 supports something and IE6 doesn't, well too bad. And same goes for Firefox, Safari, Konqueror, and Opera (although it'll be rare that Opera causes me problems, except when a version has tried to pretend it was IE, but that was work anyway).

Mostly now, since I've grown into being some lazy business analyst with a messy house under renovation, I just blog anyway.

Secondly, this is one hell of a misleading headline. Internet Explorer has supported this interface since Internet Explorer 5.0, released in the year 2000. All that's different in Internet Explorer 7 is that it's implemented as a native object, rather than with ActiveX.

Finally, this matters to practically nobody. Any decently-written code will work just fine in Internet Explorer 7 with no modification whatsoever. Even code written to use browser detection instead of feature/object detection, (a bad idea [jibbering.com]) will work just fine, assuming that the ActiveX interface sticks around too.

This matters because it will allow people to use sites like GMail while still disabling or tightly restricting ActiveX for security purposes. It doesn't make a bit of difference to web developers, but it most definitely matters.

This will mean no more ActiveX MSXML objects to implement AJAX functionality.

I assume you are not a native English speaker? To native English speakers, this is synonymous with "you don't need to use ActiveX MSXML object to implement Ajax functionality". It does not mean "they have taken away ActiveX MSXML objects".

If you check TFA, you will see that they will not take away the ActiveX MSXML objects. I quote:

I'm the web architect of gather.com [gather.com] and we use an invisible iframe as a pipe for our AJAX stuff instead of XMLHttpRequest. This works in a uniform way across all browsers we've tested it on with - even way old ones. The Javascript is 1.0-level stuff and IFRAME is standard since HTML 4.
I wonder why more people don't use this approach? I know people hate IFRAMEs, but the ones we use are invisible and 0x0 pixels, so they're little more than an offscreen paint buffer (like BitBlt!:) )
The general approach we're taking is described in this years-old posting on Apple Developer Connection [apple.com]. Anyone else have experience with this approach?

I was doing dynamic web stuff with this before xml was even a buzzword. You can do a lot of cool stuff just passing javascript objects back and forth without even touching xml. In some ways it's even more usefull than xmlhttprequest objects.

But everyone got so swept up in the hype of all this AJAX stuff that hardly anyone even remembers this stuff anymore

There are several benefits to the XMLHttpRequest object over IFRAME. I won't go into all of them, but essentially XMLHttpRequest provides an object interface (with all of its due properties and methods) to help you as the developer manage the synchronization and transmission status at a lower level. On a related note, if one is running PHP, one can also user another alternative:http://www.phpit.net/article/ajax-php-without-xmlh ttprequest/ [phpit.net]

It wasn't an iframe but a website developed by Media X, Inc. (now defunct) for Creative Labs called "MuVo" (note: now name of flash player[s]) had a rating widget on the page that was ajax-style. It was done with a tiny, offscreen popunder window that carried out the communications through standard HTML requests. I didn't do it, but someone I worked with did, of course. I'd rather use AJAX these days, but that was a pretty well cross-browser implementation.

I started using the iframe method back in 2001, and I've pretty much converted entirely over to xmlHttpRequest. The two main reasons:1) IE makes a 'click' sound every time you navigate to a new url in a window or frame. using xmlHttpRequest gets rid of this.

2) Using xmlHttpRequest doesn't pollute your history, so it makes it a easier to make something useful happen when the user hits the back or forward button.

Generally speaking, compatibility isn't a problem- most of the time that I need to implement som

the advantages of frames over AJAX is supporting the browsers history so the back/fwd button still works

Most of the time it seems like having the back button work on an ajax page would be a bug, not a feature. Why not just implement your own back/forward buttons if people need them so badly? Seems a lot easier, if not simpler for the user...

> "It looks like Microsoft is seriously trying to make the lives of us web developers easier."

Microsoft often moves to support standards, but then tweaks their behavior in such a way that the net result favors their implementation. This behavior even has a name. [wikipedia.org] Yes, I see that the Microsoft employee says their implementation is consistent with other browsers, but for how long? And how consistent is it now, really?

You're welcome to be upbeat about Microsoft's intensions, but history has shown other

I work on solution designs for a fairly large ISV, anything that increases browser compatibility is a good thing all around. Most of our end-user interfaces and make use of XML with some XSLT on the client, we also use XMLHTTPRequests..

Due to pure market pressure from our existing userbase we develop for the IE platform. IE isn't for everyone and ideally we'd like to target every browser from a technical standpoint and we know it increases the number of potential customers we have. We move one step closer to genuine cross browser compatibility with this.

Despite this we still need ActiveX right now for a couple of key things:
- File uploading, we used Java already and it went badly. Our customers had real problems with getting correct JRE versions out to their users, the users complained about the lack of standardisation in basic things like the Common Dialog. We've had a lot less problems with ActiveX controls but understandably network admins really don't like it.
- MS Office Automation. Part of our product is business reporting, it has features around automated generation of Powerpoint Presentations and Excel Spreadsheets from the web interface. We can't influence our customers decisions around Office systems but we've never encountered pushback over MS Office from anybody. MS Office automation needs ActiveX and is way outside sandbox (local processes are launched and these have access to all kinds of things).

In short, this helps but we are still a way off from being able to deliver fully functional web-based business systems with this but it helps. As an enthusiast I like it, as a real world solution developer it doesn't quite make a dent.

This is like reporting about the 12th man to finish a particular marathon. Not really what I'd call newsworthy.

OK...slightly newsworthy...
The guy's an inbred, with dumb-as-dirt parents.
The guy's an overweight diabetic needing constant dialysis.
The guy's a cripple with glass for bones that can and will break whenever touched.
AND...The guy is the paperboy/newsman (information provider) for hundreds of thousands of people.

Meanwhile, the rest of reality requires that once people start using GetDiskFreeSpace() that it should always yield useful results, even when you really want people to start using GetDiskFreeSpaceEx() unless you want people with disks that have 30GB free to get "out of disk space errors" when they try to install a 300K application.

So why on earth should they support the XMLHTTPRequest they invented?
The real point is that they had a good idea (none can deny this). Implementation, documentation and support has not been of the same level of the idea.While Mozilla's implementation (of a non original idea) has proved to be much better!

XMLHTTPRequest was first implemented as an ActiveX component, making it hard to implement in other OS's.

No, it didn't make it difficult to implement in other operating systems, it just meant that instantiation should be different. Remember that other browsers don't have to copy Microsoft's implementation, merely the interface.

Good documentation should document both interfaces and behaviour!
Good standards should allow anyone to implement it the very same way!
Therefore I'd say that Microsoft invented the XMLHTTPRequest objec, but the standard is not its!

Slower? Umm, no. Firefox is great for casual viewing, but when you doing research for a paper and have 10 to 20 tabs open. Its dog slow and uses 400 megs of ram which is insane. IE is faster than firefox, and opera is faster than IE and if you're on a mac, safari blows them all out of the water in sheer speed and memory usage.

Imagine if every web site said, "to continue, click 'Install' when the installation box appears" and a wave of XPI spyware swept over the earth.

Except for a long while now you have to manually add a site to the list of allowed sites that can install XPI software. If Firefox were the only browser do you think people who would actually not know better about clicking "Install" would be smart enough to figure that out?