Tuesday 29 September 2009

Message in the Information bar in IE7 & 8 when you browse to a MOSS 2007 site

You are hosting a Publishing Website in MOSS 2007? But your customers are complaining about ActiveX error messages when they're viewing you beautifull pages?

Consider the following scenario. You use Windows Internet Explorer 7 to browse to a Microsoft Windows SharePoint Services 3.0 site or to a Microsoft Office SharePoint Server 2007 site. The SharePoint site is located in the Internet zone. Additionally, the SharePoint site has online presence enabled. When you browse to the SharePoint site, you receive the following message in the Information bar in Internet Explorer 7:

The Web site wants to run the following add-on: 'Name ActiveX Control' from 'Microsoft Corporation'. If you trust the Web site and the add-on and want to allow it to run, click here...



The Problem
This issue occurs if the Name ActiveX control (Name.dll) is not added to the list of preapproved controls in Internet Explorer 7. The Name ActiveX control is included in the 2007 Microsoft Office system.

Microsoft however gives you a couple of client-side work around methods:
  1. Add the SharePoint site to the Trusted Sites list in Internet Explorer 7 on the Windows client computer.
  2. Add a registry subkey to the Windows client computer.
  3. Configure the master page of the SharePoint site on the front-end Web server.

    (Please browse to http://support.microsoft.com/kb/931509 for more information about above methods.)
The 3th method sounds like the right solution, because you can handle this server side. And it is in my opinion!

Unfortunatly Microsoft tells you to commend a few javascript functions. Correcting the problem this way may cause new problems though. Some other feature, method etc. can trie to use one of these methods and cause a javascript error.

Instead of removing the whole functions from the DOM, commend only the lines of code in these functions. Other features, methods etc., can still access the function, but does nothing, instead of causing more problem.

An other thing I don't prefer is changing the masterpage, because Microsoft notes there solution maight not always works.

This changes the method into the following steps:

If the SharePoint site does not require online presence, configure the master page of the SharePoint site to use the InitNoPresence.js file. To do this, follow these steps:

  • Copy the contents of the Init.js file to the Backup Init.js file on the front-end Web server.
    i Note! The Init.js file is located in the Drive:\Program Files\Common Files\Microsoft Shared\Web server extensions\12\Template\Layouts\1043 folder. (or 1033 ;-)
  • Start Notepad, and then open the Init.js file.
  • In the Init.js file, locate the following line of code.
    function ProcessImn()
    {
    if (EnsureIMNControl() && IMNControlObj.PresenceEnabled)
    {
    imnElems=document.getElementsByName("imnmark");
    imnElemsCount=imnElems.length;
    ProcessImnMarkers();
    }
    }

    function ProcessImnMarkers()
    {
    for (i=0;i<imnMarkerBatchSize;++i)
    {
    if (imnCount==imnElemsCount)
    return;
    IMNRC(imnElems[imnCount].sip,imnElems[imnCount]);
    imnCount++;
    }

    setTimeout("ProcessImnMarkers()",imnMarkerBatchDelay);
    }
  • Replace the code that you located in step 1c with the following lines of code.
    function ProcessImn()
    {
    /* if (EnsureIMNControl() && IMNControlObj.PresenceEnabled)
    {
    imnElems=document.getElementsByName("imnmark");
    imnElemsCount=imnElems.length;
    ProcessImnMarkers();
    }*/
    }

    function ProcessImnMarkers()
    {
    /* for (i=0;i<imnMarkerBatchSize;++i)
    {
    if (imnCount==imnElemsCount)
    return;
    IMNRC(imnElems[imnCount].sip,imnElems[imnCount]);
    imnCount++;
    }

    setTimeout("ProcessImnMarkers()",imnMarkerBatchDelay);*/
    }
Source: http://support.microsoft.com/kb/931509

No comments:

Post a Comment