如何在WinForms应用程序中嵌入jQuery以用于WebBrowser控件

如何在WinForms应用程序中嵌入jQuery以用于WebBrowser控件,jquery,webbrowser-control,embed,Jquery,Webbrowser Control,Embed,我想在WinForms WebBrowser控件中使用jQuery,但不想通过url链接访问jQuery(即,我想将jQuery嵌入到我的应用程序中并从那里获得它)。有办法吗?如果是这样,它需要如何嵌入(例如作为内容文件)以及使用它的html是什么?这似乎很简单。只需抓取文件,将其加载到脚本元素中,然后将其添加到DOM中 以下是我的做法: 从这里下载: 还是在这里 使用将其加载到文件中 然后将其插入DOM中 以下是如何做到这一点: private void WebBrowser1_Do

我想在WinForms WebBrowser控件中使用jQuery,但不想通过url链接访问jQuery(即,我想将jQuery嵌入到我的应用程序中并从那里获得它)。有办法吗?如果是这样,它需要如何嵌入(例如作为内容文件)以及使用它的html是什么?

这似乎很简单。只需抓取文件,将其加载到脚本元素中,然后将其添加到DOM中

以下是我的做法:

从这里下载: 还是在这里

使用将其加载到文件中 然后将其插入DOM中

以下是如何做到这一点:

    private void WebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        WebBrowser wb = sender as WebBrowser;

        HtmlElement he = wb.Document.CreateElement("script");
        string jquery = System.IO.File.ReadAllText("jquery.js");
        he.InnerHtml = jquery;
        wb.Document.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.AfterEnd, he);

    }
您也可以从cdn注入它,如下所示:

 private void WebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {  
        WebBrowser wb = sender as WebBrowser;

        HtmlElement he = wb.Document.CreateElement("script");
        mshtml.HTMLScriptElement script = he.DomElement as mshtml.HTMLScriptElement;
        script.src = "https://code.jquery.com/jquery-3.1.1.min.js";
        wb.Document.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.AfterEnd, he);

    }

您也可以通过cdn获取它。谢谢。尝试了您的建议,但遇到了以下问题:(1)下载后打开2.2.4.min文件只是为了查看它,在第2行char 7332上出现错误,表示“n”为null或不是对象(代码:800A138F)。(2) 使用第1种方法在DocCompleted事件处理程序中创建脚本元素,导致事件处理程序在执行其他代码之前结束。(3) 通过直接在初始html代码中添加脚本(文件内容用标记括起来),绕过了#2。这触发了一个错误:“对象不支持属性或方法'addEventListener'”。至于'addEventListener',这是一个web浏览器控件特定的问题。您必须记住,默认情况下,web浏览器控件使用IE 7渲染引擎。您必须修改对应于该页面所需呈现模式的注册表设置。看看我的印象,我已经包括了下面的html通过了默认的IE7呈现。我正在我的电脑上运行IE 11。不。如果使用Fiddler查看web浏览器控件使用的请求,您将看到它甚至使用IE7用户代理字符串。除非设置了注册表项,否则它仍将尝试使用IE7标准呈现它。换句话说,除非设置了注册表,否则它所能做的最高值就是IE7。这就是为什么非标准attachevent可以工作,而addeventlistener不能工作的原因