Frequently Asked QuestionsFrequently Asked Questions*
*Contents  *Index  *Topic Contents
*Next Topic: Internet Client SDK Support

Internet Client SDK Top Menu

This FAQ is also available online at http://support.microsoft.com/support/inetsdk/faq/. Please check the online version for more regular updates.

questionHow do I turn off scrollbars in my Active Desktop item?
questionWhy is my CDF file not downloading correctly?
questionMy Active Desktop item containing a JAVA applet does not display properly?
questionWhy does my Active Desktop item fail to show up on my desktop right after I download the CDF file?
questionWhy is the size information specified in my Active Desktop item seemingly ignored after I modified my CDF file?
questionWhy are my JavaScript calls failing from my Active Desktop item?
questionHow can I get rid of the vertical scrollbar?
questionWhat MIME type do I specify in my dynamically generated CDF file?
questionWhen dynamically generating a CDF file from an Active Server Pages (ASP) page, is the ASP file the one the user needs to subscribe to?
questionI cannot use the ampersand character in my CDF TITLE. Do I have to treat certain characters special when working with CDF files?
questionIs it necessary to specify the <!DOCTYPE> tag in my CDF file?
questionIs http://www.w3c.org/channel.dtd a valid URL for a <!DOCTYPE> tag?
questionIs there a way to detect from an HTML page whether the user is already subscribed to it?
questionIs there a difference between the subscription cache and the regular cache that Internet Explorer maintains?
questionIf the user is browsing a subscribed channel while they are connected to the Internet, is content pulled from the cache, or does Internet Explorer query the server again?
questionDoes the actual download of the HTML page occur upon subscription to the site, or only during a subscription update?
questionFrom a CDF file, is there a way to specify items to be cached, without having the items appear in the channel bar's item list? For example, can I specify a WAV file to be downloaded as part of the subscription update so that it gets cached and is available when the user browses offline?
questionIs there a way to specify the order of items to be cached from a CDF file? We want to ensure that high priority items are downloaded first during a subscription update.
questionIs it possible to specify multiple schedules for updates in one CDF file?
questionIs it possible to specify a global time for the <SCHEDULE> tag, so that my channel updates occur between certain times, regardless of the time zone?
questionHow do I keep Internet Explorer 4.0 from opening a new window when a user clicks on a link from a desktop component?
questionI haven't been able to get my desktop component to work unless I put it on a separate CDF from the rest of my channel. Is this how it's designed to work?
questionI notice that a TDC contained in a Desktop component does not render data correctly. What am I doing wrong?
questionI notice that the text I specified in my <ABSTRACT> tag gets truncated when displayed as a tooltip from the Channel Bar. Is there a limit to the number of characters I can specify in my channel's <ABSTRACT> tag?
questionIs there any way my application can get notified when a channel gets updated?
questionIs there any way to find out when a channel was last updated?
questionWhat exactly does <USAGE VALUE="Email"/> mean to my channel?
questionAfter a user subscribes to my CDF file, my specified logo does not seem to show up correctly in the Active Desktop channel bar. The generic satellite dish icon seems to be displayed instead. What's wrong?
questionHow does one delete a channel subscription completely from IE's cache?
questionIs there any way to specify a placement order for my channel in the channel bar? I want to add my channel to the top of the bar.
questionWe are trying to distinguish between genuine hits on our channel versus periodic hits from the IE4 WebCrawler, trying to update content. Is there a way to do this using the User-Agent HTTP header?
questionIs there a way to implement a custom tooltip over anchors in Internet Explorer 4.0 (the same way you can use the ALT attribute in an <IMG> tag)? By default, Internet Explorer 4.0 renders the URL of the HREF as a tooltip, which may not always be the desired behavior.
questionHow can I change the HTML or text associated with an element? I used to be able to do this using the rangeFromElement method, but now I keep getting the error "Object does not support this property or method." Have things changed?
questionHow do I determine the client width and height?
questionHow do I change the current cursor being used as mouse pointer?
questionWhy do I get the error "Wrong number of arguments" in my event handlers?
questionI'm finding that IFRAMES within a relatively positioned <DIV> tag causes Internet Explorer 4.0 to crash every time. This makes it difficult to relatively position IFRAMES. Is this a known problem, and is there a workaround?
questionHow do I make my data-bound pages work in both Internet Explorer 4.0 and other down-level browsers that don't support data binding?
questionIn the WebBrowser documentation for Visual Basic developers, the Navigate and Navigate2 methods look identical. Is there a difference?
questionI have an application that uses the WebBrowser control. Is it possible to install just the WebBrowser control, without installing Internet Explorer 4.0?
questionI'm unable to script a Web Browser control embedded in an HTML page when surfing across domains. What's wrong?
questionWhen downloading a digitally signed file, rather than popping up the Certificate dialog box as expected, a message box comes up indicating that the file has been digitally signed but that it cannot be confirmed. What's wrong?
questionWhat version of the MFC DLLs will ship with Internet Explorer 4.0? I'd like to know so I don't have to worry about packaging the MFC DLLs with my ActiveX Control.
questionIs there a way to see a debug trace of code download activity in Internet Explorer 4.0?
questionI've written an ActiveX control that I've marked as Safe for Scripting, and I'm having trouble getting it to work when running off a page on a local hard drive. What am I doing wrong?
questionHow can I improve performance in my ActiveX control?
questionWhat is the secret to debugging a control embedded in an HTML page in Internet Explorer 4.0? Whenever I try to start a debug session with Internet Explorer 4.0 in the Visual C++ debugger, I get kicked out of the debugger.
questionHow do I determine from a script if the Internet Explorer 4.0 browser is running off line or not?
questionWhy do I get a Permission Denied error whenever I try to access a frame's document from a script written in another frame's document. The same code runs fine in Internet Explorer 3.x.
questionWhy do I get a Permission Denied error whenever I try to access a frame on a different first tier domain, but on the same second tier domain?
questionFrom a client-side script, how do I check for the browser version so my application can degrade gracefully if the browser does not support the new Internet Explorer 4.0 features?
questionWhy are my HTML pages with frames not showing up in Internet Explorer 4.0? They used to work fine in Internet Explorer 3.x.
questionWhy doesn't Internet Explorer 4.0 close the <PLAINTEXT> container like Internet Explorer 3.x did?
questionWhich fonts can I use?
questionWhat are the different levels of font embedding?
questionHow can I check the embedding permissions of my fonts?
questionShould I embed common core fonts like Arial or Times New Roman?
questionCan I use Type 1 fonts?
questionIs it possible to have Internet Explorer 3.x and Internet Explorer 4.0 coexist on the same machine?
questionWhat is the difference between ADO and ADOR, and which should I be using on my Web pages?
questionWhat do I need to do to migrate my Web application from IE3.x to IE4.0?
questionI don't see the debug versions of wininet.dll and urlmon.dll in the Internet Client SDK. This used to be very helpful for me in IE3.x; where did they go?
questionWhere can I find more information about the NetMeeting API?

line bar

How do I turn off scrollbars in my Active Desktop item?
Specifying the appropriate width and height using the <WIDTH> and <HEIGHT> tags as child elements to the <USAGE> tag.

<USAGE VALUE="DesktopComponent">
	<OpenAs VALUE="HTML" />
	<Width VALUE="400" />
	<Height VALUE="130" />
</USAGE>

For details, refer to the "CDF Extensions for Active Desktop Items" section under the "CDF Reference" of the Internet Client SDK docs.

UpBack to list of questions

Why is my CDF file not downloading correctly when I click on an Active Desktop item's CDF file?
CDF files were not supported in IE 4.0 PP1 release. The PP2 version, however, through the final release of Internet Explorer 4.0, provides full support for CDF files.

The following JavaScript code will solve this problem. It detects the user's browser, then redirects the user to the appropriate URL. If the user is running PP2, the browser will correctly navigate to the CDF file, otherwise it will go to a page that tells users to download PP2:

<SCRIPT LANGUAGE="JavaScript">
<!--
function isIE4(ua)
{
    var msie = ua.indexOf( "MSIE " );
    if ( msie == -1 )
        return 0;
    var ver = parseInt ( ua.substring ( msie+5, ua.indexOf ( ".", msie ) ) )
    return ver >= 4;
}

function RedirectBrowser()
{
	var ua = window.navigator.userAgent;

	if( ua.indexOf( "MSIE 4.0b1" ) != -1 )
		{ window.location.href="http://www.microsoft.com/ie/ie40/gallery/ie_msg.htm"; }
	else if ( isIE4(ua) )
		{ window.location.href="yourCDF.cdf"; }
	else
		{ window.location.href="http://www.microsoft.com/ie/ie40/gallery/ie_msg.htm"; }
}


</SCRIPT>

<FORM>
<INPUT TYPE="button" VALUE="Add to my Desktop" NAME="button1" onClick="RedirectBrowser()">
</FORM>

UpBack to list of questions

My Active Desktop item containing a JAVA applet does not display properly?
This was a problem in the IE4.0 PP2 release that has been fixed for the final release. In PP2, desktop items ran with the Ambient variable set to Offline, ie if a Java applet tries to get data by going through wininet (for example by requesting a file for HTTP using the java.net object), it will not go to the network to get the latest data. Instead, WinInet will attempt to find the requested information in the local cache. If the requested data is not in the cache, WinInet fails and the Java applet will not get any data.

The final release of Internet Explorer 4.0 toggles the Ambient variable between Online and Offline modes, depending on whether or not a live network connection is available.

There are two ways to get fresh data to a Java applet:

Solution 1: Do not go through wininet to fetch your data. This means opening your own socket connection to a server, and retrieving the data manually.

Solution 2: Make your Java applet read from the cache, and use the scheduling mechanism in the CDF to refresh your data. To do this the Java applet needs to use java.net.URLConnection objects, and call setUseCaches(TRUE).

UpBack to list of questions

Why does my Active Desktop item fail to show up on my desktop right after I download the CDF file?
IE 4.0 PP2 did not always refresh the desktop properly after a CDF download. This means that the desktop item can be downloaded into the cache, but nothing shows up on the user's desktop. This problem should be fixed in the final version of Internet Explorer 4.0.

As a workaround, users must refresh their desktops manually, by right-clicking on the Desktop and selecting Refresh.

UpBack to list of questions

Why is the size information specified in my Active Desktop item seemingly ignored after I modified my CDF file?
When IE 4.0 updates a desktop item, it will refresh each item specified in the CDF. Additionally, IE will also refresh the CDF itself, but it will ignore the size attributes of the desktop item, even if they have changed.

To change the size of a desktop item, users will have to delete it from their desktops, then re-subscribe to the newer version of the Active Desktop item.

UpBack to list of questions

Why are my JavaScript calls failing from my Active Desktop item?
Scripts that rely on the <a href="javascript:foo()> method for opening new windows will not work from the Active Desktop.

The problem is that this method makes some assumptions about the context in which the code will run. In a browser window, this code would look for foo within the document itself. But since desktop items are implemented as IFRAMEs of their parent window, on the Active Desktop this code would not find foo. This is analogous to right-clicking on a javascript:url and choosing to open it in a new window. For example, the following code to open a new window will not work from the Active Desktop:

<A HREF="javascript:foo()">

<SCRIPT LANGUAGE="JavaScript">
<!--
function foo()
{
	window.open ("your parameters here");
}
//-->
</SCRIPT>

When developing for the Active Desktop, never make any assumptions about the context that your are in. For example in this case, the function foo is in the context of the current document. For this to work from the Active Desktop, add an explicit _self reference, like this:

<A HREF="javascript:foo()" TARGET=_self>

<SCRIPT LANGUAGE="JavaScript">
<!--
function foo()
{
	window.open ("your parameters here");
}
//-->
</SCRIPT>

UpBack to list of questions

How can I get rid of the vertical scrollbar?
Most desktop items want to specify excactly what size they should be on the Active Destkop. This is done by setting the HEIGHT and WIDTH fields of the <USAGE> tag in the CDF file. But if the content of the CDF is a Java app or image that occupies those excact measurements, a vertical scrollbar will appear in desktop item.

For example, this sample CDF:

<CHANNEL>
	<ITEM = "foo.htm">
		<USAGE VALUE="DesktopComponent">
			<WIDTH  = 100/>
			<HEIGHT = 100/>
		</USAGE>
	</ITEM>
</CHANNEL>

where foo.htm looked something like this:

<HTML>
<BODY>
<APPLET CODEBASE=foo width=100 height=100>
</APPLET>
</BODY>
</HTML>

would result in a little snippet of HTML appearing beneath the desktop item, thus causing the creation of a scrollbar. The problem is that spaces and carriage returns (CRs) are considered text characters, and text characters have descent - space below the baseline.

There are two workarounds to address this issue:
Make the CDF HEIGHT a few pixels bigger. This will work for non-resizable CDFs, but will not work for a Java app that tries to occupy 100% of the available item real-estate (HEIGHT=100%).
Remove any spaces or carriage-returns from your HTML file. For example, foo.htm would now look like this:
<HTML><BODY><APPLET CODEBASE=foo width=100 height=100></APPLET></BODY></HTML>

This will work in all configurations, even for resizable desktop items.

UpBack to list of questions

What MIME type do I specify in my dynamically generated CDF file?
CDF files that are dynamically generated through Active Server Pages (ASP) should insert the following line at the top of the file (before any CDF lines):

<% Response.ContentType = "application/x-cdf" %>

This ensures that servers return the correct MIME/content type "application/x-cdf".

Problems with CDF files being displayed as HTML text inside the Internet Explorer 4.0 browser, instead of invoking the subscription wizard, may likely be caused by the server returning the incorrect MIME type of "text/html" instead of the desired "application/x-cdf".

UpBack to list of questions

When dynamically generating a CDF file from an Active Server Pages (ASP) page, is the ASP file the one the user needs to subscribe to?
Yes, assuming that the correct CDF MIME type is specified in the ASP page, as illustrated in the FAQ above, double-clicking on a link to the ASP file should bring up the CDF subscription wizard appropriately.

UpBack to list of questions

I can't use the ampersand character in my CDF TITLE. Do I have to treat certain characters special when working with CDF files?
As mentioned in the "CDF Parsing Rules and Hints" section of the CDF Reference, CDF supports encoding of ASCII characters with the format &#nnn. The ampersand character, therefore, could be encoded with its ASCII decimal value of 38 by using the string &#038.

To specify "Peaches&Cream", for instance, here's what your <TITLE> tag would look like:

<TITLE>Peaches&#038;Cream</TITLE>

UpBack to list of questions

Is it necessary to specify the <!DOCTYPE> tag in my CDF file?
No, Internet Explorer 4.0 does not use the <!DOCTYPE> tag.

UpBack to list of questions

Is http://www.w3c.org/channel.dtd a valid URL for a <!DOCTYPE> tag?
No, this URL is only an example, does not actually exist, and is best not used in actual CDF files.

UpBack to list of questions

Is there a way to detect from an HTML page whether the user is already subscribed to it?
Yes, there is a way to do this, both in script and in C++ using the ISubscriptionMgr interface that IE4.0 exposes.

In script, the way to do this is to use the window.external.IsSubscribed() method.

In C++, the code to do this looks something like this:

#include <windows.h>
   #include <subsmgr.h>
   #include <stdio.h>


    ISubscriptionMgr *pSubscriptionMgr;
    CoInitialize(NULL);

    HRESULT hr = CoCreateInstance(CLSID_SubscriptionMgr, NULL, CLSCTX_INPROC_SERVER,
                                  IID_ISubscriptionMgr, (void**)&pSubscriptionMgr);
    if (SUCCEEDED(hr))
    {

        BOOL Bool;
        BSTR bstrURL = SysAllocString(L"http://example.microsoft.com/sample.cdf");
        hr = pSubscriptionMgr->IsSubscribed(bstrURL, &Bool);
        
        pSubscriptionMgr->Release();

        printf("IsSubscribed returned %ld\n", Bool);
        SysFreeString (bstrURL);
    }

    CoUninitialize();

UpBack to list of questions

Is there a difference between the subscription cache and the regular cache that Internet Explorer maintains?
All subscription information go into the same cache maintained by Internet Explorer. The subscription content in the cache, however, is especially marked so that it does not get deleted when a user clears the cache.

UpBack to list of questions

If the user is browsing a subscribed channel while they are connected to the Internet, is content pulled from the cache, or does Internet Explorer query the server again?
Internet Explorer looks at the expires HTTP header returned by the server when the page was retrieved and checks to see if the cached page is still valid. If it is, then content is pulled from the cache; otherwise, Internet Explorer queries the server again for the content. Note that with the latter, when Internet Explorer re-queries the server for content, in most cases, Internet Explorer will issue an HTTP GET request with an If-Modified-Since header, which helps reduce the server load.

UpBack to list of questions

Does the actual download of the HTML page occur upon subscription to the site, or only during a subscription update?
Actual download occurs during subscription update. However, users can manually update a subscription any time they want.

UpBack to list of questions

From a CDF file, is there a way to specify items to be cached, without having the items appear in the channel bar's item list? For example, can I specify a WAV file to be downloaded as part of the subscription update, so that it gets cached and is available when the user browses offline?
Yes, here's the correct way to do this:

<ITEM HREF="http://example.microsoft.com/sound.wav">
      <USAGE VALUE="NONE"></USAGE>
</ITEM>

Note that in XML, an element that does not have child elements can be represented in a more compact format. For instance, the above <USAGE> line could be written more compactly in this manner (note the final / at the end of the tag):

<USAGE VALUE="NONE"/>      

Also, when listing multiple items that are to be cached but not viewed in the channel pane, instead of marking each one with a <USAGE VALUE="NONE"/>, it is better to place them all in one sub-channel that is marked with a usage tag, as illustrated in the example below:

<CHANNEL>
      <USAGE VALUE="NONE"/>
      <ITEM HREF="http://example.microsoft.com/sound1.wav"/>
      <ITEM HREF="http://example.microsoft.com/sound2.wav"/>
      <ITEM HREF="http://example.microsoft.com/sound3.wav"/>
</CHANNEL>

UpBack to list of questions

Is there a way to specify the order of items to be cached from a CDF file? We want to ensure that high priority items are downloaded first during a subscription update.
No, there are no plans to support for this for Internet Explorer 4.0.

UpBack to list of questions

Is it possible to specify multiple schedules for updates in one CDF file?
No, only one schedule can be specified per CDF in Internet Explorer 4.0.
Also, a desktop component cannot be bundled with a channel in one CDF. They have to be two separate CDFs to work correctly.

UpBack to list of questions

Is it possible to specify a global time for the <SCHEDULE> tag, so that my channel updates occur between certain times, regardless of the time zone?
Currently there is no way to specify local or global time in a CDF file. Information specified in the <EARLIESTTIME> and <LATESTTIME> tags are both considered local and ignore any timezone information specified in the <STARTDATE> and <STOPDATE> tags.

UpBack to list of questions

How do I keep Internet Explorer 4.0 from opening a new window when a user clicks on a link from a desktop component?
The way to do this is to specify a TARGET="_top" with the <A HREF> tag.

UpBack to list of questions

I haven't been able to get my desktop component to work unless I put it on a separate CDF from the rest of my channel. Is this how it's designed to work?
Yes, desktop components have to be in a separate CDF file from the rest of the channel.

UpBack to list of questions

I notice that a TDC contained in a Desktop component does not render data correctly. What am I doing wrong?
This was a problem in Platform Preview 2 and has been fixed in the released version of Internet Explorer 4.0.

UpBack to list of questions

I notice that the text I specified in my <ABSTRACT> tag gets truncated when displayed as a tooltip from the Channel Bar. Is there a limit to the number of characters I can specify in my channel's <ABSTRACT> tag?
This was a bug in the Platform Preview 2 version of the Channel bar and has been fixed in the released version of IE4.0.

UpBack to list of questions

Is there any way my application can get notified when a channel gets updated?
IE 4.0 will not be providing support for this. The set of APIs that would have provided this functionality did not reach a point of stability and robustness that we felt our partners would find acceptable so this feature has been postponed to the next version of IE.

UpBack to list of questions

Is there any way to find out when a channel was last updated?
Yes, through the WinInet API GetUrlCacheEntryInfoEx. This API, which takes a URL as a parameter, returns an INTERNET_CACHE_ENTRY_INFO struct containing information such as local cache UNC path, LastModifiedTime, and similar type of information about a cached file.

UpBack to list of questions

What exactly does <USAGE VALUE="Email"/> mean to my channel?
The URL specified is e-mailed to the subscribed user when the channel content is updated. For an email client that is not HTML-aware, the link to the URL is sent instead.

UpBack to list of questions

After a user subscribes to my CDF file, my specified logo does not seem to show up correctly in the Active Desktop channel bar. The generic satellite dish icon seems to be displayed instead. What's wrong?
Any of the following could cause this problem to occur:
Don't use the <SELF> tag
Don't have <LOGO> tags pointing to non-existent files
Author CDFs on PCs if possible, or convert to PC text file format before copying to the server.

UpBack to list of questions

How does one delete a channel subscription completely from IE's cache?
You should be able to do this by right-clicking on the channel logo in the channel bar and selecting delete. This causes channel information to get deleted from these places:
Temporary Internet Files cache (under c:\windows)
Subscription folder (under c:\windows, also from the Manage Subscriptions submenu of the Favorites menu)

UpBack to list of questions

Is there any way to specify a placement order for my channel in the channel bar? I want to add my channel to the top of the bar.
No, there is no way to do this. By default new channels will be added to the bottom of the channel bar.

UpBack to list of questions

We are trying to distinguish between genuine hits on our channel versus periodic hits from the IE4 WebCrawler, trying to update content. Is there a way to do this using the User-Agent HTTP header?
Yes, this is determined by the presence or absence of the "MSIECrawler" string in the User-Agent string passed in the HTTP request to the server.

The IE4 WebCrawler sends the following User-Agent string, as it tries to update content on the client machine:

"Mozilla/4.0 (compatible; MSIE 4.0; MSIECrawler; Windows 95)" or "Mozilla/4.0 (compatible; MSIE 4.0; MSIECrawler; Windows NT)"

whereas IE4 generally sends the following User-Agent string (without the MSIECrawler):

"Mozilla/4.0 (compatible; MSIE 4.0; Windows 95)" or "Mozilla/4.0 (compatible; MSIE 4.0; Windows NT)"

UpBack to list of questions

Is there a way to implement a custom tooltip over anchors in Internet Explorer 4.0 (the same way you can use the ALT attribute in an <IMG> tag)? By default, Internet Explorer 4.0 renders the URL of the HREF as a tooltip, which may not always be the desired behavior.
Yes, the way to do this is to specify the tooltip in the TITLE attribute of the <A tag> as in this example:

<a href="file.htm" TITLE="Tooltip goes here">some text</a>

UpBack to list of questions

How can I change the HTML or text associated with an element? I used to be able to do this using the rangeFromElement method, but now I keep getting the error "Object does not support this property or method." Have things changed?
Yes, the rangeFromElement method has been removed. Use innterHTML/outerHTML and innerText/outerText to manipulate text or HTML.

UpBack to list of questions

How do I determine the client width and height?
There are new properties on the body object, clientWidth and clientHeight, which can be used for this purpose.

UpBack to list of questions

How do I change the current cursor being used as mouse pointer?
Yes, there is a cursor CSS attribute that can be used. Refer to the Internet Client SDK documentation under Dynamic HTML\HTML and CSS Reference section for more information.

UpBack to list of questions

Why do I get the error "Wrong number of arguments" in my event handlers?
Events do not have parameters. All information can be retrieved using the window.event object.

UpBack to list of questions

I'm finding that IFRAMES within a relatively positioned <DIV> tag causes Internet Explorer 4.0 to crash every time. This makes it difficult to relatively position IFRAMES. Is this a known problem, and is there a workaround?
Yes, this is a known problem. The workaround is to put the positioning on the <IFRAME> directly.

UpBack to list of questions

How do I make my data-bound pages work in both Internet Explorer 4.0 and other down-level browsers that don't support data binding?
See the document on Authoring Data Binding for Other Browsers in the Internet Client SDK.

UpBack to list of questions

In the WebBrowser documentation for Visual Basic developers, the Navigate and Navigate2 methods look identical. Is there a difference?
The only difference is that the URL parameter is packaged as a VARIANT in Navigate2 instead of a BSTR. (You could verify this in the WebBrowser documentation for C/C++ developers.) Unlike a C++ application, a Visual Basic application is not able to use the WebBrowser control to navigate into special folders in the shell namespace like "My Computer." Currently, the shell does not expose an object that provides a PIDL, which a VB application can then use in a Navigate2 call.

For more information on WebBrowser navigation using a PIDL from a C++ application, refer to article Q167834 in the Microsoft Knowledge Base.

UpBack to list of questions

When downloading a digitally signed file, rather than popping up the Certificate dialog box as expected, a message box comes up indicating that the file has been digitally signed but that it cannot be confirmed. What's wrong?
Microsoft has recently confirmed a rare Certificate Verification bug caused by the REG files offered as part of the tools set of the ActiveX SDK. The bug is that the REG files, Wvtston.reg and Wvtstoff.reg, sets the system to check Verisign's revocation server extraneously. This error occurs only when your system is set to check the Revocation server, and the Revocation server itself is down (a very rare occurrence).

The recommended solution is to use SetReg.exe available in the Internet Client SDK's \Inetsdk\Bin folder, rather than the REG files in the ActiveX SDK. SetReg.exe should be used to disable Revocation checking on your machine.

By issuing the following command, the off-line revocation server for individual certificates is disabled:

setreg 4 true

By issuing the following command, the off-line revocation server for commercial certificates is disabled:

setreg 5 true

UpBack to list of questions

What version of the MFC DLLs will ship with Internet Explorer 4.0? I'd like to know so I don't have to worry about packaging the MFC DLLs with my ActiveX Control.
Any component should be careful not to rely on the presence of any MFC DLLs with the currently installed browser, as Internet Explorer 4.0 and future versions of Internet Explorer may ship alternative versions, or may not even ship any MFC DLLs at all.

A component that uses the MFC DLLs as dependencies should package the MFC DLLs accordingly. More information on how to correctly package MFC DLLs correctly with your MFC component, can be found in article Q167158 in the Microsoft Knowledge Base.

UpBack to list of questions

Is there a way to see a debug trace of code download activity in Internet Explorer 4.0?
In Internet Explorer 3.x, this was made possible by installing the debug versions of Urlmon.dll and Wininet.dll, as outlined in article Q169437 in the Microsoft Knowledge Base.

In Internet Explorer 4.0, there is a tool available in the Internet Client SDK that allows you to do this more easily. Check out \Inetsdk\Bin\Cdllogvw.exe. There is also a Cdllogvw.txt available in the same directory for more details.

UpBack to list of questions

I've written an ActiveX control that I've marked as Safe for Scripting and I'm having trouble getting it to work when running off a page on a local hard drive. What am I doing wrong?
The problem may be due to any of the following:
A missing dependent DLL
Necessary security level set on the wrong zone
A control that is not marked as "safe for scripting and initialization" will not be loaded if the page that references the control is being accessed from the local hard drive. Note that this behavior may or may not change in future builds of Internet Explorer.

For more information on marking ActiveX controls as "safe for scripting and initialization", please refer to the Internet Client SDK docs on "Safe Initialization and Scripting for ActiveX Controls" under the Component Development/ActiveX Controls section.

UpBack to list of questions

How can I improve performance in my ActiveX Control?
For better performance make your control an apartment model control. Internet Explorer 4.0 uses multiple threads and may host the control in a secondary thread. If the control is not created as apartment model aware and marked as such, it is created and executed in the context of the calling application's primary thread, requiring calls on the control's methods to be marshaled between threads. This can cause a performance hit and can be very prominent if there are many non-apartment model controls in an HTML page. To make a control apartment model, the control needs to be marked as such in the registry and has to be written so that it is apartment model safe.

More information on apartment model and other threading models can be found in article Q150777 in the Microsoft Knowledge Base.

UpBack to list of questions

What is the secret to debugging a control embedded in an HTML page in Internet Explorer 4.0? Whenever I try to start a debug session with Internet Explorer 4.0 in the Visual C++ debugger, I get kicked out of the debugger.
With Internet Explorer 4.0's shell integration, this is not as straightforward as debugging controls in Internet Explorer 3.x. The details on how to do this correctly are outlined in article Q167715 in the Microsoft Knowledge Base.

UpBack to list of questions

How do I determine from a script if the Internet Explorer 4.0 browser is running offline or not?
From a script, the way to do this is through the window.navigator.onLine property which returns a BOOL value.

In C++, IWebBrowser2 interface provides a get/put_Offline method that indicates whether or not the WebBrowser is reading from the cache.

UpBack to list of questions

I have an application that uses the WebBrowser control. Is it possible to install just the WebBrowser control, without installing Internet Explorer 4.0?
No, there is no way to do this for both Internet Explorer 3.x and Internet Explorer 4.0. The minimal install will install the browser. Also, note that Internet Explorer 3.x and 4.0 cannot coexist on the same machine.

More information on redistributing Internet Explorer can be found in the IEAK page on http://www.microsoft.com/ie/ieak/.

UpBack to list of questions

I'm unable to script a Web Browser control embedded in an HTML page when surfing across domains. What's wrong?
The Webbrowser control is not safe for scripting. This behavior is by design and we recommend using an IFRAME instead.

UpBack to list of questions

Why do I get a Permission Denied error whenever I try to access a frame's document from a script written in another frame's document. The same code runs fine in Internet Explorer 3.x.
This is due to a cross-frame security feature that's implemented in Internet Explorer 4.0, but not in Internet Explorer 3.x. A frame running on one server is not able to access another frame's document running on another server. Similarly, with the introduction of zones in Internet Explorer 4.0 Preview 2, a script cannot access pages across zones.

For more information on this new cross-frame security in Internet Explorer 4.0, please refer to article Q167796 in the Microsoft Knowledge Base.

UpBack to list of questions

Why do I get a Permission Denied error whenever I try to access a frame on a different first tier domain, but on the same second tier domain?
This is another side effect of Internet Explorer 4.0's cross-frame security feature described above. A frame running on example1.microsoft.com cannot access a frame on example2.microsoft.com.

The correct way to do this is to set the domain property on both pages to the common substring domain. In this case, setting the domain to microsoft.com, as illustrated below:

<SCRIPT>
      document.domain = "microsoft.com"
   </SCRIPT>

UpBack to list of questions

From a client-side script, how do I check for the browser version so my application can degrade gracefully if the browser does not support the new Internet Explorer 4.0 features?
You can use the JScript function below to determine the version of the browser it is running on from a client-side script. The function returns the major version number for any Microsoft Internet Explorer browser, and zero (0) for others. Use of this function assures that the script is compatible with future versions of the Internet Explorer.

// This function returns Internet Explorer's major version number, // or 0 for others. It works by finding the "MSIE " string and
   // extracting the version number following the space, up to the decimal
   // point, ignoring the minor version number

   
   <SCRIPT LANGUAGE="JavaSCRIPT">
   function msieversion()
   {
      var ua = window.navigator.userAgent
      var msie = ua.indexOf ( "MSIE " )

      if ( msie > 0 )      // If IE, return version number
         return parseInt (ua.substring (msie+5, ua.indexOf (".", msie )))
      else                 // If another browser, return 0
         return 0
   }
   </SCRIPT>

For more information, refer to article Q167820 in the Microsoft Knowledge Base.

UpBack to list of questions

Why are my HTML pages with frames not showing up in Internet Explorer 4.0? They used to work fine in Internet Explorer 3.x.
Unlike Internet Explorer 3.0, Internet Explorer 4.0 does not support <FRAMESET> tags embedded within <BODY> tags. This was done in Internet Explorer 4.0 to ensure compatibility with Netscape. To work around the problem, move the <FRAMESET> outside the <BODY> tags.

In some cases, a <NOFRAMES> element is specified within the <FRAMESET> tags, as in the example below:

   <BODY>
      <FRAMESET>
        <NOFRAMES>Sorry, your browser does not support frames!</NOFRAMES>
      </FRAMESET>
   </BODY>

Although Internet Explorer 4.0 supports frames, when the above HTML code is displayed in Internet Explorer 4.0, the content specified within the <NOFRAMES> tag is displayed. Moving the <FRAMESET> outside the <BODY> tags causes the page to display correctly.

UpBack to list of questions

Why doesn't Internet Explorer 4.0 close the <PLAINTEXT> container like Internet Explorer 3.x did?
The <PLAINTEXT> tag is designed to render all of a Web page's subsequent text without parsing any tags, including its own </PLAINTEXT> tag. Internet Explorer 4.0 supports this tag as it is defined by the HTML DTD. This element is not recommended as different browsers may not support it consistently. Instead, use the <PRE> tag and display all reserved characters (such as brackets) with their corresponding HTML character entities.

Instead, use the <PRE> tag and display all reserved characters (such as brackets) with their corresponding HTML character entities. The <XMP> element is not a recommended substitute, as it is a legacy of the original HTML 1.0 specification that will eventually not be supported by Web browsers. Using <PRE> will assure that your content is displayed accurately on all browsers, now and in the future.

UpBack to list of questions

Which fonts can I use?
There are thousands of TrueType fonts available and most of these can be embedded within Web pages using Microsoft Web Embedding Fonts Tool. However, WEFT will not let you embed certain categories of font such as 'no embedding' fonts and those that contain serious errors.

UpBack to list of questions

What are the different levels of font embedding?
TrueType fonts have embedding permissions encoded within them. There are four levels of embedding:
A small proportion of available fonts have their embedding permissions set to "No Embedding". The creators of these fonts have decided not to allow embedding. Some foundries set their fonts to no embedding but offer upgrades to embeddable versions. If you come across a no embedding font that you would really like to use, contact the supplier, and ask about a possible upgrade.
"Print and Preview" fonts may be embedded, but only within pages that remain static on the client side. If a page allows client-side interaction that results in content displayed using the font changing, then 'editable' or 'installable' fonts must be used. An example of such a page may be one that contains an inline Java based word processor, or e-mail editor.
"Editable" fonts may be embedded using WEFT without the restrictions imposed on 'Print and Preview' fonts.
"Installable" fonts are treated as editable fonts by Microsoft Internet Explorer 4.0. Installable fonts will not be installed in your visitors fonts folder. The main reason for this is that during the course of a users Web travels they could easily find their fonts folder stuffed up with hundreds of full and subsetted fonts that they do not want or need.

UpBack to list of questions

How can I check the embedding permissions of my fonts?
You can check the embedding permissions of any font using our free Microsoft Font Properties Extension. WEFT also has a font check feature that will report the permissions of fonts you have installed on your system.

You may come across very old TrueType fonts, or converted Macintosh TrueType fonts that do not have any embedding permissions encoded within them. WEFT treats these as a 'no embedding' fonts. In the unlikely event that you encounter such a font, your best option is to contact the foundry that created the font, and ask about an upgrade.

UpBack to list of questions

Should I embed common core fonts like Arial or Times New Roman?
WEFT will identify common fonts that your readers are likely to have installed. These include Windows core fonts like Arial, Times New Roman and Courier New. You can still embed these fonts, however Internet Explorer 4.0 will download, decompress and temporarily install font objects even if the real font is present on the user's computer.

The current version of WEFT does not identify the fonts supplied with Internet Explorer 4.0 as common core fonts. Users who have installed Internet Explorer 4.0 will have added Verdana, Comic Sans MS, Arial Black, Impact and Webdings to their system. Although it is possible that a few users might remove these fonts from their system, we do not recommend that you embed them.

UpBack to list of questions

Can I use Type 1 fonts?
If you have specified Type 1 fonts as your first choice fonts and have Adobe Type Manager installed, these fonts will be identified by WEFT. However, they will be flagged as 'status unknown', and you will not be able to embed them using the public preview version of WEFT.

UpBack to list of questions

Is it possible to have Internet Explorer 3.x and Internet Explorer 4.0 coexist on the same machine?
No, there are no plans to support the coexistence of these two Internet Explorer versions at this time. Internet Explorer 3.x and Internet Explorer 4.0 share system components that cannot exist in multiple copies on the same machine.

UpBack to list of questions

What is the difference between ADO and ADOR, and which should I be using on my Web pages?
The Active Data Object (ADO) components ship in two forms - one for a Web server, and another for the client. The ADO component installed with Internet Explorer 4.0 is the ADO Recordset (ADOR). ADOR provides an object model for script access to data supplied by a data source object (DSO) embedded in a Web page. It does not, however, provide ADO Connection or Command objects. These are provided only as part of the server installation.

Included with the Internet Client SDK in self-extracting archives is the full set of ADO components. When building applications using ADO for Internet Explorer 4.0, your client side scripts should depend only on the availability of the Recordset object. The full ADO interfaces are intended for use with Active Server Pages and custom business objects that run on a Web server. Refer to Mdac.txt in the Inetsdk\Bin folder for more details.

UpBack to list of questions

What do I need to do to migrate my Web application from IE3.x to IE4.0?
Refer to iecompat.htm under \inetsdk\help for compatibility issues between IE3.x and IE4.0.

UpBack to list of questions

I don't see the debug versions of wininet.dll and urlmon.dll in the Internet Client SDK. This used to be very helpful for me in IE3.x; where did they go?
The debug version of these DLL's (urlmon pending) ship with the Internet Client SDK under the \inetsdk\lib\debug subdirectory. Along with it is a file, inetdbg.txt, with information on how to enable debugging and how to interpret the generated log file.

UpBack to list of questions

Where can I find more information about the NetMeeting API?
The NetMeeting API's are documented under the Component Library section of the Internet Client SDK. That section also includes an FAQ on the NetMeeting SDK.

UpBack to list of questions


Up Top of Page
© 1997 Microsoft Corporation. All rights reserved. Terms of Use.