Ett skriptfelmeddelande om VBScript-typfel i Internet Explorer visas när du har installerat den kumulativa säkerhetsuppdateringen 974455

Artikelöversättning Artikelöversättning
Artikel-id: 976949 - Visa produkter som artikeln gäller.
Visa alla | Dölj alla

INLEDNING

Den kumulativa säkerhetsuppdateringen för Internet Explorer 974455 (beskrivs i MS09-054) införde ytterligare "typsäkerhetskontroller" i olika metoder för att åtgärda identifierade säkerhetsluckor. I vissa scenarier kan de här nya typsäkerhetskontrollerna leda till typskriptfel på webbsidor där VBScript används eller där en blandning av VBScript och JavaScript används.

Om du vill veta mer om MS09-054 klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:
974455 MS09-054: Kumulativ säkerhetsuppdatering för Internet Explorer

Symptom

Webbsidor där VBScript används som skriptspråk på klientsidan och där metoderna showModalDialog() eller showModelessDialog() används, kan uppvisa skriptfelet typfel. Microsoft har identifierat följande tre scenarier där detta typfel kan uppstå.
  • showModalDialog()
    I det första scenariet skickas ett Array()-värde som parameter till metoden showModalDialog() i VBScript. Metoden showModalDialog() har stöd för ett obligatoriskt argument (sURL) och två valfria argument (vArguments och sFeatures). Parametern vArguments är en VARIANT-typparameter som anger argumenten som ska användas när dokumentet visas. Om en utvecklare skickar ett Array()-värde direkt till den valfria vArguments-parametern uppstår ett typfel.

    Mer information om showModalDialog-metoden finns på följande Microsoft MSDN-webbsida:
    http://msdn.microsoft.com/sv-se/library/ms536759(VS.85).aspx
  • showModelessDialog()
    I det andra scenariet skickas ett Array()-värde som parameter till metoden showModelessDialog() i VBScript. Metoden showModelessDialog() har stöd för ett obligatoriskt argument (sURL) och två valfria argument (vArguments och sFeatures). Parametern vArguments är en VARIANT-typparameter som anger argumenten som ska användas när dokumentet visas. Om en utvecklare skickar ett Array()-värde direkt till den valfria vArguments-parametern uppstår ett typfel.

    Mer information om showModelessDialog-metoden finns på följande Microsoft MSDN-webbsida:
    http://msdn.microsoft.com/en-us/library/ms536761(VS.85).aspx/PathLink>
  • returnValue
    I det tredje scenariet anges explicit inställningen för returnValue-egenskapen för ett Modal Dialog-fönster. returnValue-egenskapen är en läs/skriv-egenskap som inte har något standardvärde. Enligt MSDN-dokumentationen gäller returnValue-egenskapen endast de fönster som har skapats med metoden showModalDialog(). Om en utvecklare explicit anger inställningen för returnValue-egenskapen för ett Modal Dialog-fönster till ett Array()-värde i VBScript, uppstår ett typfel.

    Mer information om return Value-egenskapen finns på följande Microsoft MSDN-webbsida:
    http://msdn.microsoft.com/sv-se/library/ms534303(VS.85).aspx
Microsoft har för närvarande inte observera några typfel orsakade av den kumulativa säkerhetsuppdateringen 974455 på webbsidor som använder JavaScript som enda skriptspråk på klientsidan. Problemet verkar endast gälla webbsidor som använder metoden showModalDialog(), metoden ShowModelessDialog() eller returnValue-egenskapen med VBScript. Om webbsidan innehåller en blandning av VBScript och JavaScript, kan felet uppstå om de tidigare beskrivna metoderna eller egenskaperna i VBScript används på webbsidan, eller om VBArray-objeket används. Det är ovanligt att VBArray-objektet används och scenarier med VBArray beskrivs inte i den här Knowledge Base-artikeln.

Orsak

Den kumulativa säkerhetsuppdatering för Internet Explorer MS09-054 gavs ut för att åtgärda identifierade säkerhetsluckor i Internet Explorer. Som en del av den kumulativa säkerhetsuppdateringen införde Internet Explorer nya kontroller av oönskade sändningar av VARIANT-typparametrar till farliga datatyper. De extra säkerhetskontrollerna medför ytterligare säkerhetsbegränsningar för VARIANT-typparametrar som skickas som en del av användarkontrollerade variabler för att skydda användaren från vissa angrepp. Dessa ytterligare kontroller kan påverka vanliga surfningsscenarier där VARIANT-datatyper används.

Lösning

Du löser problemet genom att installera uppdatering 976749 efter att ha installerat säkerhetsuppdatering 974455. Om du vill veta mer om det här problemet klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:
976749 Det finns en uppdatering för Internet Explorer som löser problem som uppstår när du har installerat säkerhetsuppdatering 974455 (MS09-054)

Viktigt! Installera inte uppdatering 976749 utan att först ha installerat säkerhetsuppdatering 974455. Annars kanske Internet Explorer inte fungerar som det ska. Om detta inträffar avinstallerar du uppdatering 976749, installerar säkerhetsuppdatering 974455 och installerar sedan om uppdatering 976749.

Workaround

Vi rekommenderar att du fortsätter använda den kumulativa säkerhetsuppdateringen 974455 och att du installerar uppdatering 976749 om du får de problem som beskrivs i den här artikeln. Kunder som väljer att ta bort den kumulativa säkerhetsuppdateringen utsätter sina datorer för stora risker.

I det första och andra scenariet som beskrivs i avsnittet "Symptom", kan du använda en tillfällig lösning om du inte vill installera säkerhetsuppdatering 974455. Du löser problemet tillfälligt genom att explicit ange variabeln Array() i en VBScript-variabel. Arrays kan skickas till metoderna showModalDialog() eller showModelessDialog() utan att något typfel uppstår.

Följande VBScript orsakar exempelvis ett typfel.
// TYPE MISMATCH
vReturn = window.showModalDialog("http://www.contoso.com", Array(1,2,3,4,5,6,7))
Följande VBScript skickar ett array-värde till metoderna showModialDialog() eller showModelessDialog() utan att ett typfel uppstår.
// NO TYPE MISMATCH ERROR
Dim myArray
myArray=Array(1,2,3,4,5,6,7)
vReturn = window.showModalDialog("http://www.contoso.com", myArray)
I det tredje scenariet kan du använda en tillfällig lösning om du inte vill installera säkerhetsuppdatering 974455. Du undviker problemet i scenarier där ett värde för en enkel dimensions-Array() skickas till egenskapen returnValue, genom att använda VBScript-funktionerna Join och Split. På så vis kan du skicka Array()-värden till returnValue-egenskapen.

Exempel: följande VBScript generar ett typfel.

// TYPE MISMATCH
Dim arrayItems
arrayItems(0) = 1
arrayItems(1) = 2
arrayItems(2) = 3
Window.returnvalue = arrayItems
När du använder VBScript-funktionerna Join och Split, kan du ange returnValue-egenskapen utan att något skripttypfel genereras.

// NO TYPE MISMATCH ERROR
Dim arrayItems
arrayItems(0) = 1
arrayItems(1) = 2
arrayItems(2) = 3

Dim arrString = Join(arrayItems, ";")
Window.returnvalue = arrString
Dim strTemp = window.showModalDialog(??)
Dim arrayItems = Split(strTemp, ";")

I det tredje scenariet ovan, där flerdimensionella Array()-värden eller Array()-värden som har objekt skickas till egenskapen returnValue, kan du införa en tillfällig lösning om du inte vill installera säkerhetsuppdatering 974455. Undvik problemet genom att ange egenskapen returnValue med hjälp av en JavaScript-funktion. JavaScript-funktionen är tillgänglig för VBScript-subrutiner och funktioner. Alla returnValue-egenskapsvärden som anges av en JavaScript-funktion är tillgängliga i VBScript.

Exempel: följande VBScript generar ett typfel.
// TYPE MISMATCH
<script LANGUAGE=vbscript>
Option Explicit
Sub Window_OnLoad
Dim abc(1,2,3)
Window.ReturnValue = abc
End Sub
</script>
Om du anger en JavaScript-funktion tillsammans med befintligt VBScript kan du ange returnValue-egenskapen utan att något typfel genereras.
// NO TYPE MISMATCH ERROR
<script Language=JavaScript>
function setReturnValue(){
var returnValueArray= new Array();
returnValueArray[0] = 1;
returnValueArray[1] = 2;
returnValueArray[2] = 3;
window.returnValue = returnValueArray;
}
</script>

<script LANGUAGE=vbscript??
Option Explicit

Sub Window_OnLoad
setReturnValue()
msgbox window.returnValue
End Sub
</script>

Status

Microsoft har bekräftat att detta är ett problem i Microsoft-produkterna som nämns i avsnittet "Gäller" i den här artikeln.

Egenskaper

Artikel-id: 976949 - Senaste granskning: den 3 december 2009 - Revision: 3.1
Informationen i denna artikel gäller:
  • Windows Internet Explorer 8 på följande plattformar
    • Windows Server 2008 Datacenter without Hyper-V
    • Windows Server 2008 Enterprise without Hyper-V
    • Windows Server 2008 for Itanium-Based Systems
    • Windows Server 2008 Standard without Hyper-V
    • Windows Server 2008 Datacenter
    • Windows Server 2008 Enterprise
    • Windows Server 2008 Standard
    • Windows Web Server 2008
    • Windows Server 2008 R2 Datacenter
    • Windows Server 2008 R2 Enterprise
    • Windows Server 2008 R2 Standard
    • Windows Web Server 2008 R2
    • Windows 7 Enterprise
    • Windows 7 Home Basic
    • Windows 7 Home Premium
    • Windows 7 Professional
    • Windows 7 Ultimate
    • Windows Vista Business
    • Windows Vista Enterprise
    • Windows Vista Home Basic
    • Windows Vista Home Premium
    • Windows Vista Ultimate
    • Windows Vista Enterprise 64-bit edition
    • Windows Vista Home Basic 64-bit edition
    • Windows Vista Home Premium 64-bit edition
    • Windows Vista Ultimate 64-bit edition
    • Windows Vista Business 64-bit edition
    • Microsoft Windows XP Professional Edition
    • Microsoft Windows XP Home Edition
    • Microsoft Windows XP Professional x64 Edition
    • Microsoft Windows Server 2003, Datacenter x64 Edition
    • Microsoft Windows Server 2003, Enterprise x64 Edition
    • Microsoft Windows Server 2003, Standard x64 Edition
    • Microsoft Windows Server 2003 Web Edition
    • Microsoft Windows Server 2003 Standard Edition
    • Microsoft Windows Server 2003 Enterprise Edition
    • Microsoft Windows Server 2003 Datacenter Edition
    • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
    • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Windows Internet Explorer 7 på följande plattformar
    • Windows Server 2008 Datacenter without Hyper-V
    • Windows Server 2008 Enterprise without Hyper-V
    • Windows Server 2008 for Itanium-Based Systems
    • Windows Server 2008 Standard without Hyper-V
    • Windows Server 2008 Datacenter
    • Windows Server 2008 Enterprise
    • Windows Server 2008 Standard
    • Windows Web Server 2008
    • Windows Server 2008 R2 Datacenter
    • Windows Server 2008 R2 Enterprise
    • Windows Server 2008 R2 Standard
    • Windows Web Server 2008 R2
    • Windows 7 Enterprise
    • Windows 7 Home Basic
    • Windows 7 Home Premium
    • Windows 7 Professional
    • Windows 7 Ultimate
    • Windows Vista Business
    • Windows Vista Enterprise
    • Windows Vista Home Basic
    • Windows Vista Home Premium
    • Windows Vista Ultimate
    • Windows Vista Enterprise 64-bit edition
    • Windows Vista Home Basic 64-bit edition
    • Windows Vista Home Premium 64-bit edition
    • Windows Vista Ultimate 64-bit edition
    • Windows Vista Business 64-bit edition
    • Microsoft Windows XP Professional Edition
    • Microsoft Windows XP Home Edition
    • Microsoft Windows XP Professional x64 Edition
    • Microsoft Windows Server 2003, Datacenter x64 Edition
    • Microsoft Windows Server 2003, Enterprise x64 Edition
    • Microsoft Windows Server 2003, Standard x64 Edition
    • Microsoft Windows Server 2003 Web Edition
    • Microsoft Windows Server 2003 Standard Edition
    • Microsoft Windows Server 2003 Enterprise Edition
    • Microsoft Windows Server 2003 Datacenter Edition
    • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
    • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Internet Explorer 6.0 på följande plattformar
    • Microsoft Windows XP Professional Edition
    • Microsoft Windows XP Home Edition
    • Microsoft Windows XP Professional x64 Edition
    • Microsoft Windows Server 2003, Datacenter x64 Edition
    • Microsoft Windows Server 2003, Enterprise x64 Edition
    • Microsoft Windows Server 2003, Standard x64 Edition
    • Microsoft Windows Server 2003 Web Edition
    • Microsoft Windows Server 2003 Standard Edition
    • Microsoft Windows Server 2003 Enterprise Edition
    • Microsoft Windows Server 2003 Datacenter Edition
    • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
    • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Internet Explorer 6.0 SP1 på följande plattformar
    • Microsoft Windows 2000 Advanced Server
    • Microsoft Windows 2000 Datacenter Server
    • Microsoft Windows 2000 Professional Edition
    • Microsoft Windows 2000 Server
  • Microsoft Internet Explorer 5.01 Service Pack 4 på följande plattformar
    • Microsoft Windows 2000 Advanced Server
    • Microsoft Windows 2000 Datacenter Server
    • Microsoft Windows 2000 Professional Edition
    • Microsoft Windows 2000 Server
Nyckelord: 
kbcode kbtshoot kbbug kbexpertiseinter kbsecurity kbsecvulnerability kbsurveynew KB976949

Ge feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com