Designing for Add-on Performance [New Window]
As we worked towards the recent release of Internet Explorer 8 Beta 1, the IE team focused hard on performance. As part of our effort to improve IE, our investigations have revealed several add-on performance problems. In this post, I want to share some of the common themes that we have discovered.First, I would like to thank those of you who have provided feedback on this blog, in the IE Beta NewsGroup, and around the web. The Internet Explorer team has been working hard on performance in IE8 and it is great to see the results of some of our early investments. We still have room (and plans) to improve, but for now you can find out more about the performance improvements in IE8 Beta1 from our developer whitepapers.If you are new to the world of developing IE add-ons and want some background material, here are a few great links to get you started:Building Browser Helper Objects with Visual Studio 2005 Building Stable Browser Extensions Add-on Development Broadly speaking add-on performance issues typically impact IE users in two areas:Opening/Closing the IE window or individual tabs Browser responsiveness Opening and closing speeds are largely impacted by add-ons performing lots of expensive work every time they are created. One particularly common problem is that add-ons check for updates during either browser startup or shutdown.Registry misuse has been a common problem leading to poor responsiveness. Many add-ons perform expensive registry operations that can reduce Internet Explorers responsiveness.In the sections below I discuss these two areas and provide some guidance for designing performance into add-ons.Add-on Initialization and Checking for UpdatesPrinciple 1: Be lazy give hard work to another thread Principle 2: Dont pay a toll every time you start the car During startup, Internet Explorer checks the registry for installed add-ons. When IE detects an installed Browser Helper Object (BHO) or toolbar it calls CoCreateInstance to instantiate each installed and enabled add-on. Essentially, Internet Explorer creates add-ons as inproc servers, executing in the context of IEs main UI thread. For backwards-compatibility Internet Explorer follows these steps for every opened tab. This behavior is important for several reasons, and youll see why as I discuss some of the most popular problems encountered by add-ons.Be lazy give hard work to another threadOne common trend in many of the popular add-ons today is integration with online content. Maintaining this integration with live data invariably entails some update mechanism. In many of the cases we have investigated, add-ons perform synchronous update checks when IE hands control over to the add-ons SetSite implementation during initialization.From my description of how add-ons are initialized in Internet Explorer, you can guess what the potential impact is from these types of update checks. Consider the following flow:IE begins initialization IE detects that the Foo Toolbar has been installed IE calls the Foo Toolbars SetSite method Foo Toolbar contacts http://foo.example.com to check for updated content Foo Toolbar returns control to IE IE continues initialization and displays the users homepage See the problem yet? Consider step 4 above what happens if the Foo Toolbar finds lots of content that needs to be updated, if the users connection to the content server is slow, or if the user is working offline? The answer is, (since add-ons execute in the context of the UI thread), that the toolbar can cause IE to become unresponsive for long periods of time or can lead to IEs startup and shutdown times inflating faster than a balloon at a clown convention. A better approach is to create a worker thread that can perform the content update asynchronously. The preferred way is to use SHCreateThread (when developing an add-on in C++) as follows:STDMETHODIMP SetSite(IUnknown* pUnkSite) {if (pUnkSite != NULL && IsUpdateRequired()) { SHCreateThread(Update, NULL, CTF_COINIT | CTF_PROCESS_REF, NULL); } else { // Release cached pointers and other resources here. } // Return the base class implementation return IObjectWithSiteImpl<CHelloWorldBHO>::SetSite(pUnkSite);} DWORD WINAPI Update(LPVOID pParam) { DWORD dw = 1; // Perform update here return dw;}DWORD WINAPI IsUpdateRequired() { DWORD dw = 1; // Perform a low-cost check here to verify that an update should be // performed. This can be accomplished by checking a registry key. return dw;}Notice that in the above example SetSite creates a new thread to execute the Update method. Using this approach SetSite does not run the risk of blocking the UI thread for extended periods of time, and the add-on is still able to update its content. Also notice that by establishing a suitable frequency for update checks (for example, every 2 or 3 days) add-ons can be updated quickly without forcing users to pay the price of the update check with every browser or tab opening.Adopting this approach can help move long-running operations off of IEs main UI thread and can lead to better perceived performance. It is important to remember, however, that moving to a worker thread is not a panacea. There are many potential issues, including the possibility that numerous expensive cross-thread COM calls could outweigh the benefit of moving to a worker thread.Pay the toll when you get to the boothHanding off long-running operations to a worker thread helps avoid UI hangs. Nevertheless, users may still pay an avoidable up-front cost every time your add-on is initialized. Users often start IE without taking advantage of the updated content. In these cases both the users and content providers are paying extra costs associated with the update checks without any commensurate dividend.When performing content updates an extreme approach would be to pay the costs only when users have explicitly announced that they want new content by clicking on the Check for Updates menu item, for example. That solution is, however, unrealistic in many cases because it could compromise the add-ons performance. For example, consider a user clicking on a drop-down menu, and having to wait a second to view the associated drop-down while updated content is downloaded yikes!There are a variety of techniques that more effectively balance user experience and up-front costs. For example, toolbar developers might want to consider moving their update checks out of SetSite entirely and do them either the first time the user mouses over the toolbar, or update on a fixed schedule. Exact solutions will vary from add-on to add-on, so its important to stay creative and try to avoid forcing fixed costs on users whenever possible. In almost every case there is a way to avoid doing lots of work in either SetSite or in an OnDocumentComplete handler. Taking the extra time to push work out of these areas is a great way to avoid performance problems and ensure that users are happy to install your add-on.Using the RegistryPrinciple 3: Caching is your friend Principle 4: Break the habit Dont flush! Caching is your friendUsing the registry is sometimes reminiscent of the Macarena circa 1996 a few people knew the steps, fewer people were actually good at it, but neither of those facts prevented everyone else from taking part. Registry overuse is common among Windows applications, and we have been working hard to reduce our registry accesses with IE8.Overusing the registry is discouraged because the overhead of registry operations can be significant opening, reading, and closing a cached key can cost tens of thousands of cycles. Since it is relatively common for individual add-ons to perform hundreds, thousands, or even tens of thousands of registry accesses during startup, these costs can quickly add up to a noticeably slower browser. Fortunately, it is possible to reduce the cost of using the registry. First and foremost, optimize for the common case. It is very likely that most registry values are not going to be changed during the course of an add-ons execution, so reading the value once and then maintaining a cache can significantly reduce the number of individual registry accesses.Where it is not possible to eliminate registry accesses, you can often reduce the cost of the remaining operations. It turns out that accessing keys using full registry paths (e.g. HKEY_LOCAL_MACHINE\Foo\Bar) can be two to three times as expensive as using relative paths, depending on number of levels separating the target key from the provided root. Add-ons typically have the vast majority of their settings available under a key or a small set of keys. For example, suppose an add-on wanted to retrieve the associations used by IE. The following registry keys would need to be accessed (under HKEY_LOCAL_MACHINE):\SOFTWARE\Microsoft\Internet Explorer\Capabilities\FileAssociations \SOFTWARE\Microsoft\Internet Explorer\Capabilities\MIMEAssociations \SOFTWARE\Microsoft\Internet Explorer\Capabilities\UrlAssociationsUsing the Win32 method RegOpenKey each of the regkeys could be accessed with the following snippet of code (using FileAssociations as an example):HKEY hk;RegOpenKey(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Internet Explorer\\Capabilities\\FileAssociations", &hk);The remaining keys could be accessed in a similar fashion using HKEY_LOCAL_MACHINE as the root. However, a better approach in these cases is to create a handle to the Capabilities key and then perform additional relative-path RegOpenKey operations to retrieve the remaining values, as follows (again, using FileAssociations as an example):HKEY hkRoot;RegOpenKey(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Internet Explorer\\Capabilities", &hk);HKEY hkFileAssoc; RegOpenKey(hkRoot, L"FileAssociations", &hkFileAssoc);Break the habit - Dont flush!Lastly, in the past we have seen add-ons using the RegFlushKey to ensure that their registry values were in fact pushed out to disk. In some cases this is done in an attempt to maintain state between two instances of an add-on running in separate tabs or windows. As noted in the MSDN documentation for RegFlushKey, there is rarely a need to use this API. Furthermore, calling RegFlushKey can be surprisingly expensive as it will ensure that all the data backing the registry has been written to disk. That activity may take hundreds of milliseconds to return control to the calling program. Even worse, accesses to the registry will be blocked while it completes.As a result, calls to RegFlushKey can have an impact not only on IE but can reduce performance throughout the system. Rather than flushing the registry, add-ons using the registry for synchronization between instances can use RegNotifyChangeKeyValue to maintain state. Larry Osterman and Raymond Chen have blog posts on (mis)use of the registry that are worth reading for more detail: Psychic Perf Analysis, or "RegFlushKey actually DOES flush the registry key" by Larry Osterman The performance cost of reading a registry key by Raymond ChenI hope my guidelines on improving add-on performance help you understand some of the common problem areas we have encountered. Thanks for contributing great add-ons to the Internet Explorer ecosystem, and I look forward to your comments.Christian Stockwell Program Manager Performance Geek
Fri, 4 Apr 2008 12:33:00 -0500
Internet Explorer 8 Beta 1 for Developers Standards Highlights Part 2 [New Window]
With Internet Explorer 8 Beta 1 for Developers now out in the wild, we have received a good deal of positive feedback regarding our plans for CSS. The feedback includes the need for the specifics around CSS support for IE8 Standards Mode for both the current Beta and what is projected for the final release. This information allows you, the developer community, to test your sites and give quality feedback for features that are actually implemented in the current beta release. These details are posted up on MSDN in the following document: CSS Compatibility and Internet Explorer. Once again, we thank you for your support and passion for building great products.Doug Stamper Principal Program Manager Lead Internet Explorer Developer Experience Team
Wed, 26 Mar 2008 17:01:00 -0500
Internet Explorer 8 and Adaptive Zoom [New Window]
Hi! I am Saloni Mira Rai, a program manager on the Layout team, and Id like to walk you through the changes in Zoom for Internet Explorer 8.Zoom lets you enlarge or reduce the view of a web page to improve readability. The feature is particularly useful on really large and really small displays, allowing for scaling of content while maintaining the intended layout of the page. The second iteration of the zoom feature (first shipped in Internet Explorer 7) focuses on improving the existing experience by providing a higher quality, more predictable, and persistent zooming experience. What You Can ExpectAs you zoom, IE8 will size the text and images and reflow the page to make it easier to read. You will not see a horizontal scrollbar for most mainstream scenarios. Its easier to show than explain, so heres an example:Zooming the IE Blog to 150% in IE7 looked like this:Notice that text moves off the screen and a horizontal scrollbar appears at the bottom of the screen.Here is the same page zoomed to 150% in IE8 Beta 1:Text is now being wrapped and no horizontal scrollbar is needed.Digging In A Little DeeperNOTE: This section is for readers who want to understand the internal workings of Adaptive Zoom, and how it might affect site design.Internet Explorer 8 Adaptive Zoom is founded on the concept of scaling elements pre-layout. This is significantly different from Internet Explorer 7 Zoom behavior, which was analogous to magnifying the webpage elements were scaled post layout and then re-drawn on screen.Due to this important change, horizontal scrollbars are introduced only when the fixed width of the scaled content is greater than the width of the viewport. This is exactly like resizing regular layout on an un-zoomed webpage.Also, text wrapping is affected by this change. In IE7 Zoom, line lengths and line breaks were not recalculated as the zoom factor increased / decreased. This led to situations where text lines were either too small (resulting in lots of white space) or too large (resulting in text runs that would go off the screen, requiring horizontal scrollbars). In IE8, line lengths are recalculated based on available space before the text is rendered on screen. Then, line breaks are inserted all the while taking the new lengths into account.In addition, it is important to understand how common page elements and properties respond to zoom.Fonts and text: The glyph itself is not scaled. Rather, the font size is scaled and then the appropriate glyph is used. The important thing to note is that fonts do not scale linearly by design. For example, if text at 12pt is scaled to 110%, the resulting font size is calculated as 13.2pts. However this font size does not exist, therefore it is rounded to the nearest available size 13pt. Fixed, auto and relative sizing: Dimension scaling is one of the most important improvements in IE8s Adaptive Zoom. Dimensions specified using absolute units (e.g.: in, cm, mm, etc) or device and font dependent units (e.g.: px, ex, em, etc) are scaled as per the zoom level. Therefore, at 200%, 100px becomes 200px and 20pt becomes 40pt. Content-dependent dimensions, i.e. percent and auto, are not scaled as they are computed during layout. Therefore, at 200%, a width of 50% of the viewport does not become 100% of the same. This is a marked change from Zoom in IE7. Positioning: Positioned elements grow and shrink like in-flow elements. However their new position is determined by the properties set, and the offsets used. An absolutely positioned element, if offset to the left by 100px, will shift towards the right when zoomed in. It is possible for it to go off screen. Similarly, floats will be positioned with respect to their container as per the normal rules of CSS. If the width of the container changes with zoom, then the position of the float will change. Zooming of adjacent floats is exactly like resizing the window if the width of the viewport is not large enough to accommodate the floats, the last one in markup will drop to the next line.DHTML properties: In IE7 zoom, some properties were treated as physical (e.g.: mouse coordinates) while others were logical (offset). This implementation essentially required web developers to be aware of or manually calculate the zoom state based on the property being used. In IE8 zoom, all DHTML properties are now assumed to be logical. This enables some key scenarios such as fly-out menus and drag-and-drop. There are a few known issues, such as the incorrect scaling with screen.width and screen.height, that were not addressed in Beta 1. These will be fixed in a future release. For more details and information on the scenarios mentioned above, and additional scenarios, such as those involving overflow, tables, etc., please see the Windows Internet Explorer 8 Beta 1 for Developers: Technology Overview.Getting Your Site Ready For Internet Explorer 8 ZoomWeb developers should not expect to write any special code for adaptive zoom. Since all properties are logical, and scaling is purely internal, developers do not even have to be aware of zoom.If you are interested in improving your site user experience with zoom, I recommend you test your site with different zoom factors, resolutions and window dimensions. Here are some initial things to think about as you do this:At what point do horizontal scrollbars appear? Does the user need to scroll to read a single line of text? Does content quickly go off screen because of fixed sizing and positioning? Does the overflow:hidden value on any elements make content inaccessible? Do fly-out menus adapt to available screen real estate, or do options go off screen making them inaccessible to the user? Thanks for reading and I look forward to your feedback! Saloni Mira Rai Program Manager
Tue, 25 Mar 2008 14:19:00 -0500
Add-on Management Improvements in Internet Explorer 8 [New Window]
One of our goals with Internet Explorer 8 was to improve the experience of managing add-ons by bringing more types of add-ons into the management experience, and to make that experience more usable. Originally introduced in Windows XP Service Pack 2, weve updated the management UI in a big way for IE8.Heres a screen shot of the new UI:A familiar interfaceWhen you look at the Manage Add-ons UI, youll probably feel comfortable with it quickly it looks a lot like a Windows File Explorer window or the Control Panel in Windows Vista. You choose a category of object types from the left to view that list on the right. Select any item in the list and the details pane at the bottom will display information about the selected add-on.Most changes you make in Manage Add-ons take effect immediately, although some (like disabling a toolbar or explorer bar) might still require you to restart Internet Explorer. with lots of improvements over IE7You can resize the window to fit your screen resolution and personal preference, and can choose custom columns, grouping, and sorting order. These preferences will be remembered the next time you open Manage Add-ons.Additionally:You can select multiple Add-ons from the list (CTRL+click or drag to multi-select) The list supports right-click context menu actions Details about add-ons can be copied to the Windows clipboard and into email, a document editor, or a spreadsheet so you can share the list with tech support (or friends or family) more easily No updates are required to existing controls to show up in this listDevelopers do not need to make changes to existing controls to continue to be managed in IE8. However, with the richer set of information and controls put in the hands of the user in IE8, control authors might wish to provide more detailed information with their controls. While the same set of information (such as publisher or version) is available in IE8 as was available in IE7, now its easier for users to view it. Add-ons without sufficient information (like an empty publisher name or version number) are often removed or disabled by users.Add-on developers should read this article and this blog post about ActiveX best practices for more information on how to properly develop IE add-ons.Its easier to get information about installed add-ons and find new add-ons with IE8More detailed information about installed add-ons is available at a glance with IE8. Weve also added links to make it easy to accomplish common tasks:Find more add-ons with a single click. Just click Find more add-ons Dont know what an add-on does? Click Search for this add-on via default search provider and well help you find information about it online via your current default search provider Want to know more about add-ons in general? Click Learn more about add-ons Clicking More information displays more detailed technical information about installed add-ons, including file names, versions, and other properties. You can even view or clear the list of websites that ActiveX controls are allowed to run on for per-site installed ActiveX controls Right-click any add-on to get easy access to common actions (like enable or disable) New types to manageIn Internet Explorer 8, the list of add-ons you can manage has been expanded to include Explorer Bars, Search Providers, and Activities. Explorer BarsExplorer Bars are an extensibility type like toolbars that are supported by previous versions of Internet Explorer and IE8, but not listed in Manage Add-ons prior to IE8. With IE8 they are available so you have more control over whats running in your browser.Search ProvidersIn IE7 we added support for OpenSearch Search Providers, but they had their own, separate management window. Weve kept the functionality of the management experience for Search Providers in IE8, but moved it here. IE8 helps you to quickly see what Search Providers are installed, which is your default, and where it is sending information when you submit a search. Additionally, you can change the order that Search Providers are listed (IE7 always sorted them alphabetically).Internet Explorer 8 continues to support the OpenSearch standard for Search Providers. You can read more about OpenSearch here. ActivitiesActivities, which are new to IE8, are also managed from the Manage Add-ons window. Just like Search Providers, you can view, manage, and remove installed Activities, find new Activities, and learn more about Activities directly from this window.Managing Add-ons in No Add-ons ModeIE7 and IE8 support No Add-ons Mode, a troubleshooting mode. When you run IE this way, no 3rd party code runs, which allows you to do things like disable troublesome controls or repair Windows via Windows Update (which is why that control is allowed to run in this mode). You can start No Add-ons Mode in a few ways:Type iexplore extoff in the Run box on the Start menu Click Internet Explorer (No Add-ons) under All Programs -> Accessories -> System Tools Right-clicking the IE icon on the Start Menu (if IE is your default browser) and selecting Browse Without Add-Ons In IE7 you couldnt run Manage Add-ons while in No Add-ons Mode, but in IE8, you can. In fact, if you click the information bar that appears when youre running in No Add-ons Mode, it offers a quick and convenient access point to Manage Add-ons:Remember, No Add-ons Mode is designed for troubleshooting IE. Its probably not the way you want to experience websites all the time, as a lot of important functionality is often provided via add-ons.To exit No Add-ons Mode, simply close that browser window.In SummaryWe designed the Manage Add-ons interface to be more comprehensive in the types of objects it manages and the types of actions you can take. Im interested in hearing any questions and feedback about this new management experience. Just leave a comment in the blog and Ill read it!Thanks!Christopher Vaughan Program Manager
Thu, 20 Mar 2008 14:20:00 -0500
WebBrowser Control Rendering Modes in IE8 [New Window]
Many commonly used applications and Windows system components depend on the MSIE WebBrowser control to render webpages from within their program. Unlike live sites, pages loaded within these controls are typically static resources stored in libraries and executables on a system. While webmasters can easily alter their site to render properly in the new version of IE, many software vendors do not have the resources to instantly push out new versions of their applications with updated internal pages. In order to ensure that these existing applications remain in working order, IE8 renders pages running within instances of the WebBrowser control in IE7 Standards Mode by default. Per-Application WebBrowser Control Rendering SettingsThe test container shown above uses the IE7 Standards Mode run by default within WebBrowser control containers. While this mode works well with existing applications, developers building new applications may want to use the new IE8 Standards rendering mode as shown below.When an executable loads an instance of the WebBrowser control it scans the registry to check whether the executable wants IE7 Standards or IE8 Standards mode.To run a WebBrowser control in IE7 Standards Mode, insert the following values into the registry:[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_NATIVE_DOCUMENT_MODE] "MyApplication.exe"=dword:11170To run in IE8 Standards Mode insert the following registry value:[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_NATIVE_DOCUMENT_MODE] "MyApplication.exe"=dword:13880In both of these instances, MyApplication.exe should be replaced with the name of the executable that will be running WebBrowser controls in a specified mode.User-Agent String and WebBrowser Quirks Mode Rendering IssuesSpecification of an IE rendering mode also applies to IE5 Quirks Mode. To run instances of a WebBrowser control in IE5 Quirks Mode, insert the following value into the registry:[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_NATIVE_DOCUMENT_MODE] "MyApplication.exe"=dword:C350 Due to a known bug in the IE8 Beta 1 build, the User-Agent String returned by the browser instance will state that it is MSIE 8.0 (as shown in the screenshot above). Knowledge Base Article 183412 provides a workaround for this scenario.IE Version Targeting and WebBrowser Rendering ModesAs with webpages displayed in an IE window, pages hosted in a WebBrowser control can also override rendering settings by using the X-UA-Compatible meta tag to specify a rendering mode. For more information on formatting and values for the version targeting META tag see Scott Dickens latest post here.Matthew David Crowley Program Manager Internet Explorer Extensibility
Tue, 18 Mar 2008 13:59:00 -0500
IE8 Beta Expert Zone Chats [New Window]
After a successful run with the IE7 beta, were bringing back our monthly online Expert Zone Chats with members of the IE team. The first is this Thursday, March 20th at 10:00 PDT/17:00 UTC. These chats are a great opportunity to have your questions answered and hear from members of the IE product team. In case you miss the chat, a transcript will be published afterward and available online.As we saw with the IE7 beta, these chats are a lot of fun and we hope you can join us online.Kristen Kibble Program Manager
Mon, 17 Mar 2008 15:45:00 -0500
Installing IE8 [New Window]
Hi,My name is Jane Maliouta and Im the program manager for IE8 Deployment and Management. When you install Internet Explorer 8 Beta 1 there are a few important things to do before you start. First, I recommend you review the system requirements to make sure IE8 is supported on your computer. Second, take a look at the IE8 Release notes to find known issues and workarounds, so youll know what to expect during installation. Third, if the installation fails, we have a knowledge base article on Troubleshooting IE8 installation that guides you through a few workarounds.Here is some additional information that you might find useful when installing IE8.Which platforms can I install IE8 on?IE8 is supported on the following operating systems:Windows Vista Windows Vista SP1 (final version only - Currently available to MSDN and TechNet Plus subscribers and Volume License customers) Windows XP SP2 Windows XP SP3 (RC2 candidate - Build 3311 or higher) Windows XP Professional x64 Edition Windows Server 2003 SP2 Windows Server 2008 (final version only) IE8 is not supported on pre-release versions of Vista SP1 and XP SP3. When installing on earlier builds of Vista SP1, IE8 just wont install and you will see this error The installation does not support your operating systems current Service Pack version. When installing on earlier builds of XP SP3, the wizard will proceed but your system will be missing KB946501 which is required for IE8, and hence, your installation will be terminated.What Operating System languages can IE8 be installed on?The IE8 beta is currently available in English only. You can install it on any supported localized operating system. For example, if you are running German Windows Vista, you can install IE8. When you switch between languages in the Windows Vista UI, IE8 will continue to appear in English.How can I tell if I successfully installed IE8?After IE8 installation is complete, the final screen of the Install Wizard indicates that Internet Explorer installation completed successfully.After you restart your computer and launch Internet Explorer, you can open the Help->About Internet Explorer dialog to see the version number 8.0.6001.17184How do I uninstall IE8?On Windows XP or Windows Server 2003 Platforms:Open the Windows Control Panel and click Add or Remove Programs Select Windows Internet Explorer 8 Beta 1 and click Remove Your computer will be reverted to IE6 + previous IE6 security updates or IE7 + previous IE7 security updates You can confirm that by going to Tools->Help About next time you launch IE Be sure to check for any new security updates On Vista or Windows Server 2008 Platforms:Open Control Panel and click Programs Click Programs and Features, and click View installed updates, and then select Windows Internet Explorer 8 Click Uninstall this update Your machine will be reverted to IE7 + previous IE7 security updates You can confirm that by going to Tools->Help About next time you launch IE Be sure to check for any new security updates Are there any required updates for IE8?There are 2 required updates for IE8:KB943302 This update is required for Vista RTM installs only. It will be installed for you automatically as long as you leave the Install the latest updates option checked when going through the Setup Wizard. If this update is not on your computer when you try to launch IE8, you will be prompted to manually install this KB.KB946501 This update is required for multi-core XPSP2 x86 computers only. Similar to the one above, this update will be installed for you automatically as long as you keep the Install the latest updates option checked when going through the Install Wizard. If this update fails to install or you unselect the checkbox, you will not be able to install IE8 until this update is on the computer.You can find out more about updates that get installed during IE8 setup from knowledge base article KB948564.What do I do when I run into issues installing IE8?Check out the knowledge base article on Troubleshooting IE8 installation. If after trying the recommended workarounds you still cant install IE8, go to the IE Beta Newsgroup to see if there are any known solutions available. Microsoft MVPs and IE Team members are monitoring this newsgroup and they will help address your issues.Thank you,Jane Maliouta Program ManagerEdit: Updated "Operating" system; updated KB number to KB948564
Thu, 13 Mar 2008 13:05:00 -0500
The IE8 Favorites Bar [New Window]
Hi, my name is Helen, I am a Program Manager on the User Experience team of Internet Explorer, and Im happy to introduce the IE8 Favorites bar!New Functionality on the Favorites bar:The Favorites bar, previously known as the Links toolbar, has been updated with great new functionality that helps you get information from your favorite websites quickly and easily. The new IE8 Favorites bar still has your favorite links just one click away, but also allows you to add WebSlices (new feature debuting in IE8) and feeds to the Favorites bar, facilitating your navigation experience. The WebSlices and feeds on the Favorites bar will check for updates to content on your favorite websites without requiring navigation to those websites.Heres my Favorites bar which includes a feed, a folder containing a feed, and a WebSlice:What is a WebSlice?As Jane described earlier in her blog post , the new IE8 WebSlice feature enables you to see when updated content (such as auction prices or latest headlines) is available from your favorite websites. A WebSlice is a piece of a webpage (a slice) that you can subscribe to. When you subscribe to a WebSlice, it appears as a shortcut on the Favorites bar.Note that WebSlices will only appear on webpages that provide support for WebSlices. As of today, websites such as Ebay, Facebook and Stumble Upon have added support for WebSlices. Check out this page to learn how you can add support for WebSlices on your webpages.Using WebSlicesThere are two ways to see when a WebSlice is available on a webpage. One is that the WebSlice button changes color on the Command bar:When you hover over a WebSlice on a webpage, you will also see a WebSlice icon appear next to the content that you can add to your Favorites bar. For example:To add a WebSlice to the Favorites bar, you can either click the WebSlice button on the Command bar or click the WebSlice icon on the page.In IE8, a simple glance at the text on a Favorites bar shortcut will give an indication of the items status. You will be able to tell whether or not the WebSlice has been updated since you last used it (the text will be bolded) and also if the WebSlice is expiring (the text will be bold and italicized) or has expired (the text will be gray). This information is especially worthwhile, for example, with auction items.The IE8 Favorites bar allows you to preview the updated WebSlice content without leaving the website youre currently viewing. Simply click the WebSlice shortcut on the Favorites bar to bring up a rich preview of the webpage, which you can then click to go to the website itself.WebSlice Preview:Adding Feeds to the Favorites barIn IE8, you can now add Feeds to the Favorites bar. When you subscribe to a feed, you can watch for updates to it on the Favorites bar.As you know, to subscribe to a feed and monitor it on the Favorites bar, you first click the Feed Discovery button to view the feed, and then click Subscribe to this Feed on the feed page. To then monitor this feed on the Favorites bar, click the Add to Favorites button, and then click Monitor on Favorites Bar. You can also drag and drop a feed or an entire folder of feeds from the Favorites Center to the Favorites bar.By clicking on a Feed shortcut on your Favorites bar, you can quickly identify which feed items you have already read (they will be in plain text) and which you have yet to read (they will be bolded).Extra Tips and Shortcuts:In addition to adding a link through the "Add to Favorites" button, you can drag and drop links onto the Favorites bar, drag the webpage icon from the Address bar to the Favorites bar or drag a link from a webpage directly to the Favorites bar. You can rearrange items on your Favorites bar by dragging items from one spot to another or by creating folders and organizing your favorite links, WebSlices, and feeds by dragging and dropping items into the folders. When an item within a folder updates, you will see the updated status on the folder itself. If a folder is unbolded, you will know that nothing has updated within that folder without even opening it. Navigating with the Favorites bar is convenient as well. To put focus on the first item on the Favorites bar, press ALT+B. Like regular links, the Favorites bar supports tab and window shortcuts. For example, you can Ctrl+Click or Middle-click on an item (or a folder) on the Favorites bar and this item (or the contents of this folder) will open in a new tab (or tabs) in the background. Similarly, Ctrl+Shift+Click on an item on the Favorites bar will open up this item in a tab in the foreground.Thats a summary of the new ways that the IE8 Favorites bar will help you get information from your favorite webpages quickly and easily.Thank you for trying IE8 Beta 1 and I look forward to your feedback on this feature!Helen Drislane Program Manager
Wed, 12 Mar 2008 14:13:00 -0500
IE8 and Loosely-Coupled IE (LCIE) [New Window]
Hi, my name is Andy Zeigler, and Im a Program Manager on the Internet Explorer Foundations team. Id like to tell you about a new IE8 feature called Loosely-Coupled IE, or LCIE for short. Essentially, LCIE is a collection of internal architecture changes to Internet Explorer that improve the reliability, performance, and scalability of the browser. It also paves the way for future improvements in other areas, including security and usability. To do this, weve isolated the browser frame and its tabs and changed them to use asynchronous communication between components. In this post, Ill walk you through the changes weve done in IE8 Beta 1.You may have noticed that computers come pre-loaded with all sorts of software. While a lot of this software is useful and works well, some of it, including IE add-ons, can crash and interfere with your browsing experience. Internet Explorer 3rd-party add-ons are COM-based, which enables developers to write high-performance add-ons with powerful features. This also means that IE and running add-ons share the same process and memory address space, so when an add-on crashes, it causes the whole browser to crash. According to an analysis we did of our Windows Error Reporting data, over 70% of all IE hangs and crashes are caused by 3rd-party add-ons. We work closely with software vendors of the most frequently installed IE add-ons to help improve the quality of their add-ons. However, due to the large number available add-ons, it is difficult to provide outreach to every developer. The IE Process ModelPart of what weve done with LCIE is to split the frame from the tabs, and allow them to function more autonomously. As a refresher, heres a somewhat simplified view of the IE7 process model:In the IE7 model, each browser window (UI Frame) usually has its own process. There are a couple of exceptions. For example, if you press ctrl-n to open a new window, IE creates a new UI frame in the same process. The tabs, toolbar extensions, browser helper objects, and ActiveX controls all reside in the same process as the browser window. The problem with this model is that a single access violation, stack overflow, or any other type of failure will cause your entire browser, and all its tabs, to crash.Below is a diagram of how weve changed the process model in IE8:There are a number of notable changes here:Tabs are isolated from the frame, and are located in separate processes This gives IE the opportunity to isolate many failures to the tab process, thereby reducing the amount of damage done to the rest of your browsing session. The frame and the broker object are located in the same process This is a win for startup performance. The broker object is responsible for examining a URL, and determining if it should be loaded under Protected Mode or not, and launching IE at the appropriate integrity level. We no longer have to wait for the protected mode broker objects process to startup before loading the rest of the browser. Low and Medium integrity tabs can reside in the same UI frame The Windows Integrity Mechanism operates on a per-process basis. Now that we can place tabs into their own processes, we can turn Protected Mode on or off on a per-tab basis. This is a big usability improvement. You no longer need separate browser windows to view sites in and out of protected mode. See LCIE in ActionAlthough these are all internal architecture changes, you can see their effect in a few different ways.For example, on a computer running Windows Vista, open Internet Explorer, browse to some websites, and then open an HTML page from your computers hard disk. Notice that the page will open in a tab in the same window, alongside the tabs that are already there. Previously, we would have shown a dialog that said, Internet Explorer needs to display this webpage in a new window. This is because Internet files must run in Protected Mode, and local files must open outside of Protected Mode, and a single process runs with only one integrity level. With LCIE, we simply create two tab processes: one with Protected Mode on for your Internet files, and one with Protected Mode off for your local files.That dialog box is history!We also have a new feature called Automatic Crash Recovery that uses tab isolation to recover from crashes in a really new and exciting way. Ill be blogging about that shortly.Thanks,Andy Zeigler Program ManagerEdit: first image updated; enhanced explanation added in "See LCIE in Action" section
Tue, 11 Mar 2008 17:50:00 -0500
Address Bar Improvements in Internet Explorer 8 Beta 1 [New Window]
Hey everyone, Christopher here. Its been a while since Ive blogged anything here (over a year in fact). While my role in IE7 was focused on security community outreach, for IE8 Im focused on increasing security, and delivering great end-user features. The first of which we gave some love to is the Address bar.Domain HighlightingAt a glance, the most visible change with IE8 is Domain Highlighting. Internet Explorer 8 will automatically highlight what it considers to be the owning domain of whatever site youre currently viewing. This helps users identify the real site theyre on when a website attempts to deceive them. The screen shot below shows how IE8s Domain Highlighting can help users spot these attacks:With IE8, it should be clearer that youre at a website owned by Example.com and not Microsoft.com.Domain Highlighting effectively calls out what Internet Explorer 8 recognizes as the owning domain for the purposes of making security decisions. This helps with things like sharing cookie information with subdomains, or whether it allows scripting calls. Domain Highlighting does not make any security guarantees in itself, but it gives the user more information to determine whether to trust the site based on their own experience. If you think you've found a site that incorrectly reports the owning domain, we want to know about it. Refer to the IE Beta Feedback post for channels to get this information to us.Domain Highlighting will disappear if the user hovers over or clicks in the Address Bar. This lets you edit, copy or paste a URL without being distracted by the highlighting. Domain Highlighting cannot be turned off by users or websites. It works in concert with other information provided in the Address bar, like Safety Filter warnings or HTTPS certificate information. It appears on all versions of Windows that IE8 supports: Windows Vista, Windows Server 2008, Windows Server 2003, and Windows XP.This screenshot below shows how Domain Highlighting looks when a user is at a site using an Extended Validation (EV) SSL certificate:When used with SSL (or EV SSL) sites, both the owning domain and the HTTPS protocol are highlighted.Besides domain highlighting, weve also added a few usability improvements to IE8s address bar:Support For Pasting Multi-Line URLsIE8 will automatically strip out excess carriage returns and line feeds within a URL when pasted into the Address Bar. Many web e-mail applications automatically split long lines into multiple lines, which meant you couldnt easily copy and paste them into the browser. Users can now highlight an entire URL, no matter how many lines it spans, and paste it directly into the Address Bar.Example: if you copy and paste the next 3 lines into the Address Bar of IE7, only the first line (an incomplete fragment of the entire URL) will appear. In IE8, the entire URL will appear:http://blogs.msdn.com/ieImproved Click BehaviorInternet Explorer 8 has an improved model for inserting the selection carat, and selecting words, or entire URLs in the Address bar:Single-click within a URL to insert the caret. This allows the user to make an in-line edit easily. Double-click within a URL to select the word (words are delimited by common characters like slashes). Triple-click to select the entire URL. A subsequent click (a fourth click) will cycle back to the single-click behavior. Inline Autocomplete: cut for IE8Weve cut the inline autocomplete feature in the Address Bar in IE8. This option was disabled by default in IE7 and has been removed from the Address Bar in IE8. However the advanced option that controls the behavior will still exist, because other parts of Windows will still use this functionality if the user chooses to enable it just not the Address Bar.One final changeFinally, weve made one more subtle change in IE8 Beta 1. Prior to IE8, when you typed a string into the address bar, an option at the very bottom would always appear that says Search for <the string you typed>. If you selected this option, IE would check to see if it was the name of a top-level Favorite, and if not, pass off the request to Windows File Explorer, then pass off the request to the network (and hopefully to the Internet). If all else failed, you might see a page provided by your auto-search provider (likely but not always the same as your default search provider), or in some cases, your ISP might offer up some choices instead. Back in, say, 1997 when the option was added, it seemed like search was an appropriate term to use. Of course today, search is a loaded and specific term, and it doesnt really correctly describe what happens when you choose that option, so we renamed it. Now its Go to <the string you typed>. The behavior of IE8 itself isnt different, it still follows the same steps to try and take you where youre going, but we thought it was worth changing the wording so nobody got confused.Thats a summary of whats new & different for the Address Bar in IE8 Beta 1. I will be looking through the comments to this post for useful & constructive feedback about these changes.Thanks for trying Internet Explorer Beta 1!Christopher Vaughan Program ManagerEdit: updated spacing in http://blogs.msdn.com/ie example
Tue, 11 Mar 2008 12:05:00 -0500
Using The Emulate IE7 Button [New Window]
For the Internet Explorer 8 Beta, weve added an Emulate IE7 button to the command bar. It will help you with everyday browsing and with quickly checking your site as you work on it.Everyday BrowsingIf youre having trouble on a site that youd like to browse, try the Emulate IE7 button. This causes IE8 to use the IE7 user agent string, version vector and layout modes. Also, were interested in webpage problems so report them using the IE8 Beta Feedback tools.Developer configurationsWhen youre working on your pages, the combination of the Emulate IE7 button and the Developer Toolbar opens up a few more options for you. The starting options are:Default: Internet Explorer reports the IE8 user agent string and use the IE8 layout modes Emulate IE7 pressed: Internet Explorer reports the IE7 user agent string and uses the IE7 layout modes Once you get the user agent string reporting the way you like, you can use the IE8 developer tools to force IEs layout mode to Quirks, IE7 Standards or IE8 Standards.Paul Cutsinger Lead Program Manager User Experience
Sun, 9 Mar 2008 20:04:00 -0500
Internet Explorer 8 Beta 1 for Developers Standards Highlights [New Window]
Dean mentioned a bunch of things we are doing in Internet Explorer 8 Beta 1 for Developers. I want to point you to more details specifically about the developer focused changes to CSS, the DOM and the new version targeting.Standards support (CSS/HTML)IE8 improves rendering of content authored to various web standards in standards mode. As we have mentioned before, IE8 Beta 1 for Developers ships with standards mode as its default formatting engine. In order to maintain backwards compatibility, sites can opt-into IE7-like handling of content by inserting a special meta element into the web page, that triggers the "IE7 standards mode". For more complete details regarding document compatibility, see Defining Document Compatibility.While the behavior of the browser is unchanged from Internet Explorer 7 in "IE7 Standards Mode", in standards mode (the default IE8 rendering mode), IE8 supports Data: URIs, the abbr tag, CSS generated content, the display: table CSS properties, in addition to fixing a lot of CSS and HTML parsing bugs. For a complete list, see CSS Improvements in Internet Explorer 8. Standards support (DOM) and AJAX CSS is not the only place where we tuned IE8, we tweaked the DOM as well. IE8 features an enhanced and standardized DOM that brings it in line with implementations in other browsers. Highlights include changes in the behavior of the getAttribute, setAttribute and removeAttribute modifiers to make IE8 more interoperable with other browsers. Additionally, IE8 has dramatically enhanced AJAX support with features like DOM: Storage, Cross Document Messaging (XDM) and the Selectors APIs. For a more complete list of AJAX and DOM improvements, see Whats New in Internet Explorer 8. Last but certainly not least, we have added support for the Accessible Rich Internet Applications (ARIA) specification. This specification describes how site authors can mark up their content semantically such that users who might use assistive technologies may more completely experience the content. See Whats New for Accessibility in Internet Explorer 8 for a comprehensive discussion of this topic. It has been great to see all of the wonderful feedback on the beta thus far and remember that IE8 is still a work in progress. Stay tuned for more details here on our blog and on the IE Development Center on MSDN. Thanks and Happy Browsing,Doug Stamper Principal Program Management Lead Internet Explorer Developer Experience Team
Fri, 7 Mar 2008 14:57:00 -0600
Improved Productivity Through Internet Explorer 8 Developer Tools [New Window]
Over the past year, Ive written about different tools to help web developers become more productive when developing in Internet Explorer. These tools came from partners inside and outside Microsoft. One the IE Developer Toolbar came from the IE team in response to your requests for a free, lightweight tool to help debug your site in IE.The IE8 Developer Tools are the next step in helping make developers more productive in Internet Explorer. In this post Ill introduce you to whats available in IE8 Beta 1 and point you to more detailed information about the tools.Integrated, Simple-to-use Developer ToolsInternet Explorer 8 simplifies the process of debugging by including developer tools out of the box and making those tools easy to use. Instead of having to find, download, and install a separate debugging application, just press SHIFT+F12, or click the developer tools icon in the command bar. And if you want to debug JScript, switch to the script tab and press Start Debugging. Even if script debugging is disabled, Internet Explorer 8 will remind you that it will refresh the page and enable debugging for only the current IE instance so you wont see script error dialogs as you browse the web. Or, if you prefer to avoid the page refresh and dialog, just enable script debugging for Internet Explorer in the Advanced tab of the Internet Options Control Panel. Heres a view of the debugger:We also heard your feedback about the IE Developer Toolbars impact on performance even without the tool open, so we created a more robust design that resolves the problem. As we built on this new design for beta 1, we focused on new scenarios rather than putting back all features from the IE Developer Toolbar. As a result, youll notice many features from the IE Developer Toolbar arent available in IE8 Beta 1. In future betas, however, well continue to add new features while bringing back the functionality of the Developer Toolbar so you can continue using the features youre already familiar with.A Visual Interface to the PlatformIn addition to simplifying the debugging process, IE8 Developer Tools offer a new perspective on your site. Instead of just a source view, the tool provides visibility into Internet Explorers internal representation of the site. For example, the DOM tree in the tool is built from the tree IE builds internally to display the page, not from your source. So if script changes the tree, IE8 shows you the updated tree. You can also view style information for an element to better understand what rules apply or what rules specify a given style property, as show below.Fast ExperimentationThe Internet Explorer 8 Developer Tools also provide the ability to experiment and iterate rapidly by letting you edit a site within IE. For example, once youve found a style rule or property youre interested in, click a checkbox to enable or disable it, or click an attributes in the DOM tree to edit it in-place.The tools also provide easy access to all available rendering modes so you can test different modes quickly:By removing the need to save changes, switch between applications, and refresh the page, the tools make it faster and easier to test, debug, or just experiment.More InformationFor more information about the Internet Explorer Developer Tools, check out these resources:Internet Explorer 8 Beta 1 download the beta, try the tools, and tell us what you think!Developer Tools whitepaperDeveloper Tools SDK pageDemo video: overview (video version of this post)Demo video: debugging (~6min)Internet Explorer 8 Beta 1 Release NotesThanks!John Hrvatin Program Manager Internet ExplorerEdit: Updated "Compatibility Modes" image
Fri, 7 Mar 2008 12:54:00 -0600
The Default Layout Mode [New Window]
During my talk at MIX 08, I covered more background and detail behind the new IE8 layout mode that provides greater standards support, particularly with regards to CSS 2.1, and version targeting. Id like to follow-up that talk with a brief post on both points for those that were unable to attend in person.Clearly there is a lot of momentum behind pushing the web forward (as evidenced, in part, by the lively dialog on this and other blog sites around the web). To this end, weve invested in the functionality demanded most by developers and designers better standards support and cross-browser compatibility. You saw a peak into our progress with the Acid2 announcement a few weeks back. You can see more in the released developer build, which includes support for several CSS 2.1 features not found in previous Internet Explorer releases including the 'inline-table' value for the 'display' property and basic generated content support (more to follow). As you may have heard by now, Internet Explorer 8 will ship with three layout modes Quirks, IE7 Standards, and IE8 Standards. The saying goes: put your best face forward and, true to this, Internet Explorer 8 will use its most standards compliant mode, IE8 Standards, as the default when encountering standards content. The behavior looks as follows:Page Content DeclarationLayout ModeKnown standards DOCTYPEs and unknown DOCTYPEsIE8 StandardsQuirks mode DOCTYPEs (includes the absence of a DOCTYPE)QuirksNote: A brief discussion on DOCTYPEs can be found on MSDN.By displaying standards mode pages with our most rigid interpretation, we get closer to that utopia where content may be written once and expected to work in a similar manner across browser types. Keep in mind, however, that progress is often the result of trade-offs. On the one hand, we certainly want to invest in new features, those innovations that entice our existing customers to move to the newest release (and hopefully win us new customers as well). This force is a push we want to move our product, and the community that uses it, forward. On the other hand, we want to ensure that we dont senselessly break an ecosystem that has come to rely on the behaviors included in our previous releases. This force is a pull causing us to do constrained innovation that specifically takes into account backwards compatibility. The <META> tag attempts to solve this latter point by providing content developers a way in which to signal the desired layout mode regardless of DOCTYPE. This can be particularly useful as a stop-gap measure to provide the time required to build and test the latest standards compliant content. Example:Scenario: A website contains a standards mode DOCTYPE declaration but is actually giving versions of Internet Explorer, including Internet Explorer 8, non-standard content according to the current form of the standard.Result: Internet Explorer 8 attempts to display the content using IE8 mode, the most standards compliant layout mode, because of the DOCTYPE declaration. The site fails to display correctly and updates to the site are needed. Actions: Immediately update site content to ensure that Internet Explorer 8 is provided with standards content fitting the DOCTYPE (preferred). Defer the site update until the next scheduled maintenance window / period Use the <META> opt-out to signal that Internet Explorer 8 should continue to display the document in a manner similar to Internet Explorer 7, e.g. <META http-equiv="X-UA-Compatible" content="IE=7">. This can be done globally via a host-header or as a per-document edit. This action allows the site to still be usable by Internet Explorer 8 clients. Create site content ensuring that Internet Explorer 8 is provided with standards content fitting the DOCTYPE. Publish the new, standards-compliant content and remove the <META> opt-out. Note: The <META> tag declaration always overrides DOCTYPE. A deeper discussion can be found in the developer whitepaper.Another interesting point about the <META> tag is that it more precisely marks the content of a page than the larger bucket labels: Standards and Quirks. Regardless of whether a browser chooses to use that information today, it does seem like an interesting data point to have in the future... Scott Dickens Lead Program ManagerEdit: replaced "pretty print" quotes with regular quotes in META tag info
Thu, 6 Mar 2008 17:52:00 -0600
IE8 and CSS 2.1 Testing [New Window]
Since I joined the IE team at the beginning of 2007, it has become clear to me how important it is for web developers to predict how a given browser will work. Ive certainly heard and read how very important it is to web developers to minimize the cost of supporting each additional browser version. In apparent contradiction to this, everyone needs continued innovation in the browser to create new online business opportunities. One of the most important ways to ease development costs is to support a well-defined set of web standards in all the browsers. This frees up developers time to spend on their site innovation rather than porting and testing work. However, sometimes there are ambiguities or optional items in the specifications, such as the behavior of tables. This naturally results in browsers that behave differently.The Internet Explorer team is serious about enabling web developers to be the most effective and efficient as possible. One very important way we can do this is to support and contribute to the web standards. For the Internet Explorer team, we will do this in multiple ways including implementing support for standards and driving to cut the ambiguity in these industry standards specifications.I believe the way to cut through the ambiguity is to have a set of tests that can help define how the implementation should actually work. The W3Cs CSS Working Group has a set of 487 tests today in the CSS Working Groups level 2 revision 1 test suite. We just submitted over 700 tests to the W3C for possible inclusion into the official test suite. Were providing these using the BSD License. We wrote these to test the CSS 2.1 behavior in IE8 beta 1. The coverage they provide is for both basic property support and the scenarios called out in the CSS 2.1 spec. We strongly believe in the W3C and how its test suites can ultimately help the web developers of the world spend more time creating new web experiences and less time dealing with browser differences. The feedback regarding the first set of submitted CSS 2.1 tests will help us improve these tests and strongly guide our future test submissions to the CSS Working Group and others. The IE Test Team welcomes your feedback about our CSS 2.1 tests including our interpretation of how they test the CSS 2.1 support in IE8 Beta 1. If youre interested in commenting on the tests, I encourage you go to join the existing W3Cs 2.1 Test Suite Mailing List discussion on the topic. I truly believe that starting with IE8 Beta 1 weve begun a journey toward making it easier for you to build the web in a standards-based, predictable way. Thanks a lot,Jason Upton Test Manager Internet Explorer
Thu, 6 Mar 2008 15:30:00 -0600
No comments:
Post a Comment