无法在Internet Explorer扩展开发(BHO)中运行jQuery文件

时间:2014-07-21 13:18:55

标签: jquery asp.net asp.net-mvc internet-explorer bho

尝试在我的BHO文件中包含一个jQuery CDN文件...当项目构建并使用regasm注册时,它会显示警告消息,但未加载jQuery文件并显示错误

以下是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SHDocVw;
using mshtml;
using System.Runtime.InteropServices;
using Microsoft.Win32;
using System.Windows.Forms;

namespace Greyhound.BHO
{

[
    ComVisible(true),
    Guid("8a194578-81ea-4850-9911-13ba2d71efbd"),
    ClassInterface(ClassInterfaceType.None)
]

public class BHO:IObjectWithSite
{
    SHDocVw.WebBrowser webBrowser;

    public static string BHOKEYNAME =
      "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Browser Helper Objects";

    [ComRegisterFunction]
    public static void RegisterBHO(Type type)
    {
        RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(BHOKEYNAME, true);

        if (registryKey == null)
            registryKey = Registry.LocalMachine.CreateSubKey(BHOKEYNAME);

        string guid = type.GUID.ToString("B");
        RegistryKey ourKey = registryKey.OpenSubKey(guid);

        if (ourKey == null)
            ourKey = registryKey.CreateSubKey(guid);

        ourKey.SetValue("Alright", 1);
        registryKey.Close();
        ourKey.Close();
    }

    [ComUnregisterFunction]
    public static void UnregisterBHO(Type type)
    {
        RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(BHOKEYNAME, true);
        string guid = type.GUID.ToString("B");

        if (registryKey != null)
            registryKey.DeleteSubKey(guid, false);
    }

    public void OnDocumentComplete(object pDisp, ref object URL)
    {
        IHTMLDocument2 doc = (IHTMLDocument2)webBrowser.Document;
        doc.parentWindow.execScript("var d=window.document,s=d.createElement('script'),h=d.getElementsByTagName('body')[0];s.src='http://code.jquery.com/jquery-1.11.1.min.js';h.appendChild(s);");
        doc.parentWindow.execScript("alert('hello');","JScript");
    }

    public int SetSite(object site)
    {
        if (site != null)
        {
            webBrowser = (SHDocVw.WebBrowser)site;
            webBrowser.DocumentComplete +=
              new DWebBrowserEvents2_DocumentCompleteEventHandler(
              this.OnDocumentComplete);
        }
        else
        {
            webBrowser.DocumentComplete -=
              new DWebBrowserEvents2_DocumentCompleteEventHandler(
              this.OnDocumentComplete);
            webBrowser = null;
        }

        return 0;
    }

    public int GetSite(ref Guid guid, out IntPtr ppvSite)
    {
        IntPtr punk = Marshal.GetIUnknownForObject(webBrowser);
        int hr = Marshal.QueryInterface(punk, ref guid, out ppvSite);
        Marshal.Release(punk);
        return hr;
    }

}
}

以下是遇到的错误: enter image description here

错误说

  

块引用

该对象不支持属性或方法“getElementsByClassName”

  

块引用

请告诉我在哪里犯错误,因为我是BHO的新手。

0 个答案:

没有答案