首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将HtmlAgilityPack.CssSelectors公开到ClearScript中

如何将HtmlAgilityPack.CssSelectors公开到ClearScript中
EN

Stack Overflow用户
提问于 2016-10-06 15:49:11
回答 1查看 209关注 0票数 0

背景: Azure,C#,ClearScript,JavaScript,HtmlAgilityPackHtmlAgilityPack.CssSelectors

我经常这样做:使用ClearScript向ClearScript应用程序添加脚本。通常情况下,这只是起作用。

代码语言:javascript
复制
...
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代码本身中,有以下内容

代码语言:javascript
复制
...
var hap = new CSHtmlDocument();
hap.LoadHtml(html);
...

所以,在我将HtmlAgilityPack.CssSelectors加入混合之前,这是非常顺利的。在C#方面,这将向HtmlDocument对象添加额外的方法,特别是QuerySelectorQuerySelectorAll。他们在C#那边是可见的。但是,在JavaScript方面,它们不是和代码(如

代码语言:javascript
复制
...
var selection = hap.QuerySelector(".reduced");
...

抛出一个错误,查看Visual 2015中调试会话中的对象,显示hap中没有QuerySelector方法。

那么故事是什么呢?它是ClearScript问题还是C#问题?我该怎么办?我很高兴能写一个包装类,我只是期待一切都能像以前一样工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-06 16:23:17

这些新方法很可能是由特定类定义的可拓方法。要使它们从脚本代码中访问,必须将该类公开给脚本引擎。

编辑:我对它们并不熟悉,但您所讨论的方法似乎是由HapCssExtensionMethods类(或类似的类)提供的。要公开方法,只需公开类:

代码语言:javascript
复制
// C#
JSengine.AddHostType(typeof(HapCssExtensionMethods));

一旦您这样做了,上面的JavaScript示例就可以正常工作了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39900467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档