木是伊说 - c#
type: channel
link: http://static.wiseclock.ca/tag/c/
items: .Net環境下運行JavaScript淺談

.Net環境下運行JavaScript淺談
type: item
date: 2015-11-28T09:56:00+00:00
description: 今天更新小玲的洛奇英雄傳功能的時候遇到了瓶頸。原本是直接用HeroesDB的API，但因為群裡人嫌棄，打算換成VindictusManual。這一換，問題來了…… 下載了VindictusManual的js，包含了所有物品的生成與歸類。然後自己寫了個搜索和輸出的js，放進網頁運行了一下，效果很不錯。打算直接投入c#使用…… 原本小玲的登入就用了騰訊WebQQ的js，代碼類似： MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControl(); sc.AllowUI = false; sc.UseSafeSubset = true; sc.Language = "JScript"; sc.AddCode(Resources.hash.ToString()); 然而……AddCode一直報錯啊喂！！這MSScriptControl是IE6的js處理引擎吧？！太坑爹了…… 後來幾經輾轉，換了Jurassic、Jint、IronJS等幾個處理引擎，但是效果都不太理想。特別是Jurassic，等了一分鐘才添加完js文件——不得不說輸出倒是挺正常的。IronJS則是根本沒法用……，倒是Jint是一個很棒的引擎，處理效率比Jurassic快了幾十倍不說，還支持將js的函數存至c#裡方便之後Invoke。不過說是說快了不少，實際上添加完VindictusManual的js還是用了好幾秒，有些耽誤事。 直到Javascript.Net的出現……真是大救星好嘛！！！處理任何腳本幾乎都只要2位數，毫秒！僅需要var engine = new Noesis.Javascript.JavascriptContext();就可以var obj = engine.Run("javascript code");運行任意js代碼嚕！ 總之這玩意是神器……算是安利一發吧哈哈哈哈……