U ontvangt een 'Type komt niet overeen' VBScript scriptfoutbericht weergegeven in Internet Explorer nadat u cumulatieve update 974455

INLEIDING

Cumulatieve beveiligingsupdate voor Internet Explorer 974455 (beschreven in MS09-054) binnengebracht "Type" extra veiligheid controles in verschillende methoden aan beveiligingslekken adres is vastgesteld. Onder bepaalde omstandigheden, deze nieuwe type veiligheid controles kunnen leiden tot 'Typen komen niet overeen' fouten in scripts in webpagina's met VBScript of webpagina's die gebruikmaken van een mengsel van VBScript en JavaScript.

Voor meer informatie over MS09-054 klikt u op het volgende artikel in de Microsoft Knowledge Base:
974455 MS09-054: Cumulatieve beveiligingsupdate voor Internet Explorer

Symptomen

Webpagina's die gebruikmaken van VBScript als de client-side scripttaal en die gebruikmaken van de showModalDialog() of de showModelessDialog() methoden ondervinden een scriptfout 'Typen komen niet overeen'. Microsoft heeft de volgende drie scenario's waarin een scriptfout 'Typen komen niet overeen' gegenereerd kan worden geïdentificeerd:

  • showModalDialog()
    Het eerste scenario omvat een array-waarde wordt doorgegeven als parameter aan de methode showModalDialog() in VBScript. De methode showModalDialog() ondersteunt een vereist argument (sURL) en twee optionele argumenten (vArguments en sFeatures). De parameter vArguments is een VARIANT Type-parameter die de argumenten moeten worden gebruikt wanneer het document wordt weergegeven. Als een ontwikkelaar wil een array rechtstreeks naar de vArguments van de optionele parameter doorgeeft, wordt een scriptfout 'Typen komen niet overeen' optreden.


    Ga naar de volgende website van Microsoft MSDN voor meer informatie over de methode showModalDialog:

  • showModelessDialog()
    Het tweede scenario heeft betrekking op de waarde van een array als een parameter doorgegeven aan de methode showModelessDialog() in VBScript. De methode showModelessDialog() ondersteunt een vereist argument (sURL) en twee optionele argumenten (vArguments en sFeatures). De parameter vArguments is een VARIANT Type-parameter die de argumenten moeten worden gebruikt wanneer het document wordt weergegeven. Als een ontwikkelaar wil een array rechtstreeks naar de vArguments van de optionele parameter doorgeeft, wordt een scriptfout 'Typen komen niet overeen' optreden.



    Ga naar de volgende website van Microsoft MSDN voor meer informatie over de methode showModelessDialog:

  • returnValue
    Het derde scenario heeft betrekking op de expliciete instelling van de eigenschap returnValue van Modal-dialoogvenster. De eigenschap returnValue is een eigenschap voor lezen/schrijven die geen standaardwaarde heeft. Volgens de documentatie op MSDN geldt de eigenschap returnValue alleen voor deze windows gemaakt met de methode showModalDialog(). Als een ontwikkelaar wil expliciet de eigenschap returnValue van een modaal dialoogvenster wordt ingesteld op de waarde van een array in VBScript, treedt er een scriptfout 'Typen komen niet overeen'.


    Ga naar de volgende website van Microsoft MSDN voor meer informatie over de eigenschap waarde retourneren :

Microsoft heeft op dit moment niet waargenomen 'Typen komen niet overeen' fouten in scripts die voortvloeien uit de cumulatieve update 974455 die in webpagina's die JavaScript als hun enige client-side scripttaal gebruiken. Alleen webpagina's die gebruikmaken van de showModalDialog()-methode, de methode showModelessDialog() of de eigenschap returnValue binnen VBScript lijken te worden beïnvloed. Als de webpagina een mengsel van VBScript en JavaScript bevat, kunnen worden beïnvloed als de webpagina maakt gebruik van de methoden of eigenschappen die eerder zijn besproken in VBScript of als u de webpagina maakt gebruik van het object VBArray. Gebruik van het object VBArray is ongebruikelijk en scenario's voor VBArray worden niet gedekt door dit Knowledge Base-artikel.

Oorzaak

Cumulatieve beveiligingsupdate voor Internet Explorer MS09-054 werd uitgebracht op het aangegeven adres beveiligingsproblemen in Internet Explorer. Als onderdeel van de cumulatieve beveiligingsupdate voor binnengebracht Internet Explorer nieuwe controles tegen onbedoelde casting VARIANT Type parameters gevaarlijke gegevenstypen. De extra beveiligingscontroles leggen beperkingen voor extra beveiliging van VARIANT Type-parameters die worden doorgegeven als onderdeel van de gebruiker gecontroleerde variabelen om te voorkomen dat de gebruiker bepaalde soorten aanvallen. Deze extra controles kunnen invloed hebben op legitieme surfen scenario's die gebruikmaken van VARIANT-gegevenstypen.

Oplossing

Dit probleem op te lossen update 976749 te installeren nadat u beveiligingsupdate 974455 hebt geïnstalleerd. Voor meer informatie over dit probleem, klikt u op het volgende artikel in de Microsoft Knowledge Base:
976749 Er is een update beschikbaar voor Internet Explorer waarmee u problemen kunt die optreden oplossen nadat u 974455 (MS09-054 beveiligingsupdate)

Belangrijk Installeer update 976749 niet als u beveiligingsupdate 974455 hebt geïnstalleerd. Als u update 976749 zonder eerst installeren beveiligingsupdate 974455 hebt geïnstalleerd, wordt Internet Explorer niet juist werken. Als dit gebeurt, update 976749 te verwijderen, installatie van beveiligingsupdate 974455 en 976749 update opnieuw te installeren.


Tijdelijke oplossing

Het is raadzaam u blijven cumulatieve beveiligingsupdate 974455 en update 976749 te installeren als u de symptomen die in dit artikel worden beschreven. Klanten die kiezen voor het verwijderen van de cumulatieve beveiligingsupdate wordt risico hun systemen.


Voor de eerste en tweede scenario's die worden beschreven in de sectie 'Symptomen', kunt u een tijdelijke oplossing implementeren als u niet wilt dat beveiligingsupdate 974455 hebt geïnstalleerd. U kunt het probleem omzeilen, het Array-variabele expliciet te declareren in een variabele met VBScript. Matrices kunnen worden doorgegeven aan de showModalDialog() of de methoden showModelessDialog() zonder een scriptfout 'Typen komen niet overeen'.

Met het volgende VBScript wordt bijvoorbeeld een fout in het script 'Typen komen niet overeen'.

// TYPE MISMATCHvReturn = window.showModalDialog("http://www.contoso.com", Array(1,2,3,4,5,6,7))

Met het volgende VBScript wordt een matrix doorgeven aan de methoden showModialDialog() en showModelessDialog() zonder een scriptfout 'Typen komen niet overeen'.
// NO TYPE MISMATCH ERRORDim myArray
myArray=Array(1,2,3,4,5,6,7)
vReturn = window.showModalDialog("http://www.contoso.com", myArray)

Voor het derde scenario die eerder werd beschreven, kunt u een tijdelijke oplossing implementeren als u niet wilt dat beveiligingsupdate 974455 hebt geïnstalleerd. U kunt het probleem in scenario's waarin een enkele dimensie array waarde wordt doorgegeven aan de eigenschap returnValue , de Join en gesplitste VBScript-functies te gebruiken. Hiermee kunt u de waarden van de array aan de eigenschap returnValue doorgeven.

Met het volgende VBScript wordt bijvoorbeeld een scriptfout 'Typen komen niet overeen' gegenereerd.

// TYPE MISMATCHDim arrayItems
arrayItems(0) = 1
arrayItems(1) = 2
arrayItems(2) = 3
Window.returnvalue = arrayItems

Als u de Join en gesplitste VBScript-functies gebruiken, stelt u de eigenschap returnValue zonder dat er een fout in het script 'Typen komen niet overeen'.

// NO TYPE MISMATCH ERRORDim 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, ";")


Voor het derde scenario die eerder werd beschreven, waarbij het multidimensionale array waarden of array met objecten worden doorgegeven aan de returnValue eigenschap, kunt u implementeren een oplossing als u niet wilt installeren van beveiligingsupdate 974455. U kunt het probleem in dit scenario kunt u een JavaScript-functie voor het instellen van de eigenschap returnValue . Deze JavaScript-functie is beschikbaar voor functies en subroutines in VBScript. De waarde van de eigenschap returnValue wordt ingesteld door een JavaScript-functie is beschikbaar voor VBScript.



Met het volgende VBScript wordt bijvoorbeeld een scriptfout 'Typen komen niet overeen' gegenereerd.

// TYPE MISMATCH<script LANGUAGE=vbscript>
Option Explicit
Sub Window_OnLoad
Dim abc(1,2,3)
Window.ReturnValue = abc
End Sub
</script>

Met behulp van een JavaScript-functie met een bestaande VBScript, kunt u de eigenschap returnValue instellen zonder dat er een fout in het script 'Typen komen niet overeen'.
// 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 heeft bevestigd dat dit probleem kan optreden in de Microsoft-producten die worden vermeld in de sectie 'Van toepassing op'.
Eigenschappen

Artikel-id: 976949 - Laatst bijgewerkt: 15 feb. 2017 - Revisie: 2

Feedback