Je bent nu offline; er wordt gewacht tot er weer een internetverbinding is

Het scriptfoutbericht "Type komt niet overeen" van VBScript wordt in Internet Explorer weergegeven nadat u de cumulatieve beveiligingsupdate 974455 hebt geïnstalleerd

Inleiding
Cumulatieve beveiligingsupdate voor Internet Explorer 974455 (beschreven in beveiligingsbulletinMS09-054) heeft aanvullende "Type"-veiligheidscontroles in verschillende methoden geïntroduceerd om gesignaleerde beveiligingsproblemen op te lossen. In bepaalde gevallen kunnen deze nieuwe type-veiligheidscontroles leiden tot scriptfoutberichten "Type komt niet overeen" op webpagina's die VBScript gebruiken of op webpagina's die een combinatie van VBScript en JavaScript gebruiken.

Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie over MS09-054:
974455MS09-054: Cumulatieve beveiligingsupdate voor Internet Explorer
Symptomen
Op webpagina's die VBScript als de scripttaal aan clientzijde gebruiken en de methode showModalDialog() of de methode showModelessDialog() gebruiken, kan het scriptfoutbericht "Type komt niet overeen" optreden. Microsoft heeft de volgende drie gevallen gesignaleerd waarin het scriptfoutbericht "Type komt niet overeen" mogelijk wordt gegenereerd:
  • showModalDialog()
    In het eerste geval wordt een Array()-waarde als een parameter doorgegeven aan de methode showModalDialog() in VBScript. De methode showModalDialog() ondersteunt één verplicht argument (sURL) en twee optionele argumenten (vArguments en sFeatures). De parameter vArguments is een parameter van het type VARIANT waarin de argumenten zijn opgegeven die moeten worden gebruikt bij het weergeven van het document. Als een ontwikkelaar besluit om een Array() rechtstreeks aan de optionele parameter vArguments door te geven, treedt het scriptfoutbericht "Type komt niet overeen" op.

    Ga voor meer informatie over de methode showModalDialog naar de volgende Microsoft MSDN-website:
  • showModelessDialog()
    In het tweede geval wordt een Array()-waarde als een parameter doorgegeven aan de methode showModelessDialog() in VBScript. De methode showModelessDialog() ondersteunt één verplicht argument (sURL) en twee optionele argumenten (vArguments en sFeatures). De parameter vArguments is een parameter van het type VARIANT waarin de argumenten zijn opgegeven die moeten worden gebruikt bij het weergeven van het document. Als een ontwikkelaar besluit om een Array() rechtstreeks aan de optionele parameter vArguments door te geven, treedt het scriptfoutbericht "Type komt niet overeen" op.

    Ga voor meer informatie over de methode showModelessDialog naar de volgende Microsoft MSDN-website:
  • returnValue
    In het derde geval is de expliciete instelling van de eigenschap returnValue van een modaal dialoogvenster betrokken. De eigenschap returnValue is een lees-/schrijfeigenschap die geen standaardwaarde heeft. Volgens documentatie op MSDN is de eigenschap returnValue alleen van toepassing op vensters die zijn gemaakt met de methode showModalDialog(). Als een ontwikkelaar besluit om de eigenschap returnValue van een modaal dialoogvenster in te stellen op een Array()-waarde in VBScript, treedt het scriptfoutbericht "Type komt niet overeen" op.

    Ga voor meer informatie over de eigenschap returnValue naar de volgende Microsoft MSDN-website:
Microsoft heeft nog geen scriptfoutberichten "Type komt niet overeen" gesignaleerd die optreden naar aanleiding van cumulatieve beveiligingsupdate 974455 op webpagina's die JavaScript als hun enige scripttaal aan clientzijde gebruiken. Alleen webpagina's die gebruikmaken van de methode showModalDialog(), de methode showModelessDialog() of de eigenschap returnValue binnen VBScript lijken last te hebben van dit probleem. Als de webpagina een combinatie van VBScript en JavaScript bevat, kan deze last hebben van dit probleem als de webpagina de methoden of eigenschappen die eerder zijn besproken binnen VBScript gebruikt of als de webpagina het VBArray-object gebruikt. Gebruik van het VBArray-object komt niet vaak voor en gevallen waarin VBArray betrokken is, komen niet aan de orde in dit Knowledge Base-artikel.
Oorzaak
Cumulatieve beveiligingsupdate voor Internet Explorer MS09-054 is uitgebracht om gesignaleerde beveiligingsproblemen in Internet Explorer op te lossen. Als onderdeel van de cumulatieve beveiligingsupdate zijn door Internet Explorer nieuwe controles geïntroduceerd ter voorkoming van onbedoelde casting van parameters van het type VARIANT in gevaarlijke gegevenssoorten. De aanvullende beveiligingscontroles vormen aanvullende beveiligingsbeperkingen op parameters van het type VARIANT die worden doorgegeven als onderdeel van door de gebruiker beheerde variabelen om de gebruiker te beschermen tegen allerlei soorten aanvallen. Deze aanvullende controles kunnen het legitiem openen van webpagina's waarbij gebruik wordt gemaakt van VARIANT-gegevenssoorten hinderen.
Oplossing
U kunt dit probleem oplossen door update 976749 te installeren nadat u beveiligingsupdate 974455 hebt geïnstalleerd. Klik voor meer informatie over dit probleem op het volgende artikelnummer, zodat het desbetreffende Microsoft Knowledge Base-artikel wordt weergegeven:
976749 Er is een update beschikbaar voor Internet Explorer die problemen oplost die optreden nadat u beveiligingsupdate 974455 (MS09-054) toepast

Belangrijk Installeer update 976749 niet als u beveiligingsupdate 974455 niet hebt geïnstalleerd. Als u update 976749 installeert zonder dat u eerst beveiligingsupdate 974455 installeert, werkt Internet Explorer mogelijk niet juist. Als dit gebeurt, verwijdert u update 976749, installeert u beveiligingsupdate 974455 en installeert u update 976749 opnieuw.
Workaround
Wij raden aan dat u de cumulatieve beveiligingsupdate 974455 blijft toepassen en dat u update 976749 installeert als u de symptomen ervaart die in dit artikel worden beschreven. Klanten die beslissen om de cumulatieve beveiligingsupdate te verwijderen, brengen hun systeem in gevaar.

Voor de eerste twee scenario's die in de sectie "Symptomen" worden beschreven, kunt u een methode uitvoeren als u de beveiligingsupdate 974455 niet wilt installeren. U kunt het probleem omzeilen door de beschikbare Array() specifiek in een VBScript-variabele te declareren. Arrays kunnen worden doorgegeven aan de methode showModalDialog() of de methode showModelessDialog() zonder de scriptfout "Type komt niet overeen".

Het volgende VBScript veroorzaakt bijvoorbeeld de scriptfout "Type komt niet overeen".
// TYPE MISMATCHvReturn = window.showModalDialog("http://www.contoso.com", Array(1,2,3,4,5,6,7))
Het volgende VBScript geeft een array door aan de methode showModalDialog() of de methode showModelessDialog() zonder de scriptfout "Type komt niet overeen".
// NO TYPE MISMATCH ERRORDim myArraymyArray=Array(1,2,3,4,5,6,7)vReturn = window.showModalDialog("http://www.contoso.com", myArray)
Voor het derde scenario dat eerder werd besproken, kunt u een methode toepassen als u de beveiligingsupdate 974455 niet wilt installeren. U kunt het probleem omzeilen in scenario's waar een Array()-waarde van een enkele dimensie wordt doorgegeven naar de eigenschap returnValue door de VBScript-functies Join en Split te gebruiken. Op deze manier kunt u de Array()-waarden doorgeven aan de eigenschap returnValue.

Het volgende VBScript genereert bijvoorbeeld de scriptfout "Type komt niet overeen".
// TYPE MISMATCHDim arrayItemsarrayItems(0) = 1arrayItems(1) = 2arrayItems(2) = 3Window.returnvalue = arrayItems
Als u de VBScript-functies Join en Split gebruikt, kunt u de eigenschap returnValue instellen zonder de scriptfout "Type komt niet overeen" te genereren.
// NO TYPE MISMATCH ERRORDim arrayItemsarrayItems(0) = 1arrayItems(1) = 2arrayItems(2) = 3Dim arrString = Join(arrayItems, ";")Window.returnvalue = arrStringDim strTemp = window.showModalDialog(……)Dim arrayItems = Split(strTemp, ";")
Voor het derde scenario dat eerder is besproken, waar multidimensionale Array()-waarden of Array()-waarden waarvan voorwerpen zijn doorgegeven aan de eigenschap returnValue kunt u een methode toepassen als u de beveiligingsupdate 974455 niet wilt installeren. U kunt het probleem in dit scenario omzeilen door een JavaScript-functie te gebruiken om de eigenschap returnValue in te stellen. Deze JavaScript-functie is beschikbaar voor VBScript-subroutines en -functies. Elke waarde voor de returnValue-eigenschap die wordt ingesteld door een JavaScript-functie is beschikbaar voor VBScript.

Het volgende VBScript genereert bijvoorbeeld de scriptfout "Type komt niet overeen".
// TYPE MISMATCH<script LANGUAGE=vbscript>Option ExplicitSub Window_OnLoadDim abc(1,2,3)Window.ReturnValue = abcEnd Sub</script>
Als u een JavaScript-functie samen met een bestaand VBScript gebruikt, kunt u de eigenschap returnValue instellen zonder de scriptfout "Type komt niet overeen" te genereren.
// 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 ExplicitSub Window_OnLoadsetReturnValue()msgbox window.returnValueEnd Sub</script>
Status
Microsoft heeft bevestigd dat dit probleem zich kan voordoen in de Microsoft-producten die worden vermeld in de sectie Van toepassing op.
Eigenschappen

Artikel-id: 976949 - Laatst bijgewerkt: 12/03/2009 19:52:13 - Revisie: 3.1

Windows Internet Explorer 8, Windows Internet Explorer 7, Microsoft Internet Explorer 6.0, Microsoft Internet Explorer 6.0 SP1, Microsoft Internet Explorer 5.01 Service Pack 4

  • kbcode kbtshoot kbbug kbexpertiseinter kbsecurity kbsecvulnerability kbsurveynew KB976949
Feedback
ickstreamTracker.init();