上下文:Azure、C#、ClearScript、JavaScript、HtmlAgilityPack、HtmlAgilityPack.CssSelectors
我经常这样做:使用 ClearScript 向 C# 应用程序添加脚本。通常这只是工作。
...
using Microsoft.ClearScript;
using Microsoft.ClearScript.Windows;
...
class Program
{
static JScriptEngine JSengine = null;
...
JSengine = new JScriptEngine(WindowsScriptEngineFlags.EnableDebugging | WindowsScriptEngineFlags.EnableJITDebugging);
....
JSengine.AddHostType("CSHtmlDocument", typeof(HtmlAgilityPack.HtmlDocument));
...
然后,在 JavaScript 代码本身中,有类似的东西
...
var hap = new CSHtmlDocument();
hap.LoadHtml(html);
...
所以在我加入之前,一切都很顺利HtmlAgilityPack.CssSelectors
。在 C# 方面,这为HtmlDocument
对象添加了额外的方法,特别是QuerySelector
和QuerySelectorAll
. 它们在 C# 端可见。然而,在 JavaScript 方面,它们不是,代码如
...
var selection = hap.QuerySelector(".reduced");
...
引发错误并从 Visual Studio 2015 中的调试会话中查看对象显示QuerySelector
hap var 中没有方法。
那么故事是什么?是 ClearScript 问题还是 C# 问题?我该怎么办?我很高兴编写一个包装类,我只是希望一切都能像以前一样工作。