【问题标题】:How to Embed jQuery in a WinForms app to Use in a WebBrowser Control如何在 WinForms 应用程序中嵌入 jQuery 以在 WebBrowser 控件中使用
【发布时间】:2023-03-09 08:54:01
【问题描述】:

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

【问题讨论】:

    标签: jquery webbrowser-control embed


    【解决方案1】:

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

    以下是我的处理方法:

    从这里下载: https://code.jquery.com/jquery-2.2.4.min.js 或在这里 https://code.jquery.com/jquery/

    使用File.ReadAllText将其加载到文件中 然后将其插入到 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' 为空或不是对象(代码: 800A138F)。 (2) 使用第一种方法在 DocCompleted 事件处理程序中创建脚本元素导致事件处理程序在执行我在那里的其他代码之前结束。 (3) 通过在我的初始 html 代码中直接添加脚本绕过#2(文件内容由
    • 至于“addEventListener”,这是一个网络浏览器控制特定的问题。您必须记住,Web 浏览器控件默认使用 IE 7 渲染引擎。您必须修改与该页面所需的呈现模式相对应的注册表设置。看看msdn.microsoft.com/en-us/library/…
    • 我的印象是我包含的以下 html 超出了默认的 IE 7 渲染。我在我的电脑上运行 IE 11。
    • 不。如果您使用 Fiddler 查看 Web 浏览器控件使用的请求,您将看到它甚至使用 IE7 用户代理字符串。除非设置了该注册表项,否则它仍将尝试使用 IE7 标准呈现它。换句话说,除非设置了该注册表,否则它可以做的最高是IE7。这就是为什么非标准的 attachevent 有效,但 addeventlistener 没有
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    • 2023-03-31
    • 2012-04-16
    • 1970-01-01
    相关资源
    最近更新 更多