J'ai le code suivant:Javascript compilateur .Net génère des erreurs
Dim compiler As ICodeCompiler = New Microsoft.JScript.JScriptCodeProvider().CreateCompiler
Dim params As New CompilerParameters
params.GenerateInMemory = True
Dim res As CompilerResults = compiler.CompileAssemblyFromSource(params, TextBox1.Text.Trim)
Dim ass As Assembly = res.CompiledAssembly
Dim instance As Object = Activator.CreateInstance(ass.GetType("Foo"))
Dim thisMethod As MethodInfo = instance.GetType().GetMethod("FindProxyForURL")
Dim str(1) As String
str(0) = ""
str(1) = ""
MessageBox.Show(thisMethod.Invoke(instance, str))
Essayer de compilateur le folowing code JavaScript:
class Foo {
function FindProxyForURL(url, host)
{
alert('Test')
return "PROXY myproxy.local:8080";
}
}
Et obtenir une erreur -
compiler.CompileAssemblyFromSource(params, TextBox1.Text.Trim)
{C: \ Users \ Me \ AppData \ Local \ Temp \ zfwspah4.0.js (4,65) : erreur JS1135: Variable 'alerte' a pas été déclarée }
Si je retire la ligne "alerte" fonctionne correctement. Je crois que c'est parce que l'alerte est un objet "fenêtre", donc .Net ne le reconnaît pas. J'ai essayé de le remplacer par window.alert ('') mais toujours obtenir la même erreur.
Comment puis-je résoudre ce problème?
Comment proposez-vous l'exécution de votre javascript compilé? Je ne crois pas qu'il existe un moyen de faire cela dans une page Web, donc l'accès à l'objet fenêtre, alerte ou autre, est redondant. – Lazarus
Vous devez ajouter l'implémentation de la fonction Alert à votre assembly compilé. – unclepaul84
La ligne "alert()" ne se termine pas par un ";". Je suppose que cela entraînerait un échec de la compilation, mais il pourrait s'agir simplement d'une erreur de copier-coller dans votre publication, et non de la cause première. – mikemanne