我有以下代碼:JavaScript編譯器在.net給人錯誤
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))
試圖編譯如下因素的JavaScript代碼:
類Foo {
function FindProxyForURL(url, host)
{
alert('Test')
return "PROXY myproxy.local:8080";
}
}
和獲取上的錯誤 -
compiler.CompileAssemblyFromSource(params, TextBox1.Text.Trim)
{C:\用戶\我\應用程序數據\本地\ TEMP \ zfwspah4.0.js(4,65) :錯誤JS1135:變量 '警報' 已經 尚未聲明}
如果刪除「警報」線它工作正常。 我收集這是因爲警報是一個「窗口」對象,所以.Net無法識別它。我試圖用window.alert('') 替換它,但仍然得到相同的錯誤。
我該如何解決這個問題?
你如何建議執行你編譯的JavaScript?我不認爲有一種方法可以在網頁中執行此操作,因此訪問窗口對象(警報或其他)是多餘的。 – Lazarus 2010-10-07 15:11:30
您需要將Alert函數的實現添加到編譯後的程序集中。 – unclepaul84 2010-10-07 15:13:52
「alert()」行不以「;」結尾。我認爲這會導致編譯失敗,但它可能只是您發佈中的複製粘貼錯誤,而不是根本原因。 – mikemanne 2010-10-07 16:55:10