簡體   English   中英

在C#中運行javascript

[英]Run javascript in C#

我在我想在我的C#應用​​程序中使用的oilmonkey腳本中找到了一個相當復雜的函數。 基本上,我正在解析頁面,並且需要收集var avar = {};全部或4個成員var avar = {}; (我還沒有這樣做,但是它們都是使用var avar.name = "val"字符串)

然后,我需要調用gm func,它返回一個字符串並接受3個字符串。 如何在C#中調用該函數? 我正在使用.NET 3.5

我假設您正在服務器端或其他處理HTML數據的獨立應用程序中重復使用一些代碼。

您可以使用Microsoft.JScript.JScriptCodeProvider類在.net中編譯JavaScript(至少是其子集)-盡管請注意該類會警告

此API支持.NET Framework基礎結構,不能直接在您的代碼中使用。

編譯后,生成的程序集(由提供程序提供的CompilerParameters指定)應該可以動態加載。 建議使用Reflector之類的工具檢查生成的程序集,以查看您實際上在類和名稱空間方面生成的程序集。

免責聲明 -我只在CSharpCodeProvider作用於C#源代碼時才使用了此技術,但是我希望這種事情在.net語言之間具有合理的兼容性。

編輯-有關從C#編譯JavaScript的示例,請參閱此博客文章“使用C#驗證JavaScript語法”

首先,您可能想確切地考慮為什么要這樣做。 是否要在C#中使用JS中的算法? 如果是這樣,請繼續。 如果要在客戶端代碼(即瀏覽器)中使用C#,請改為研究Silverlight。

其次,我不確定您要執行的操作是否確實可行。 根據您要實現的目標,最好將Greasemonkey應用程序中的Java腳本轉換為C#3.5(假設腳本的許可條件允許這樣做),以便在您的應用程序中使用。

翻譯應該不會很困難-在最近的幾個版本中,C#越來越像JS。 只要注意“ var”關鍵字即可; 它在C#中的含義與JS中的含義略有不同(將C#中的“類型推斷”與JS中的“動態類型”進行對比)。

當然,在完成這兩個版本的代碼后,這將很棘手且痛苦。 如果可以的話,我建議保留1個權威版本的代碼。

祝好運!

您能否提供有關腳本以及想要完成的工作的更多信息? 大多數Greasemonkey腳本通過使用 Javascript與DOM交互。 您可以在C#中運行Javascript,但是DOM將不可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM