C# BHO如何替换javascript事件处理程序结果?

C# BHO如何替换javascript事件处理程序结果?,c#,javascript,event-handling,bho,C#,Javascript,Event Handling,Bho,因为拖动超链接中的图像,无法获取“FileDrop”或“DIB”数据,所以我想使用C#编写一个BHO来增强拖放图像 我已经在文档中注入了dragstart事件,它工作正常,但是: 如果javascript设置了如下ondragstart事件处理程序: <script> ondragstart = function(){ var obj = event.srcElement; if(obj.tagName == "A"){ event.dataTransfer.setD

因为拖动超链接中的图像,无法获取“FileDrop”或“DIB”数据,所以我想使用C#编写一个BHO来增强拖放图像

我已经在文档中注入了dragstart事件,它工作正常,但是:

如果javascript设置了如下ondragstart事件处理程序:

<script>
ondragstart = function(){
  var obj = event.srcElement;
  if(obj.tagName == "A"){
    event.dataTransfer.setData("text", "TTTTTTTTTTTTTTT");
  }
  window.document.title = event.srcElement.tagName;
}
document.attachEvent("ondragstart", ondragstart);
</script>
最后的结果是:ttttttttttttt

在调试器中,我可以看到在javascript事件处理程序之前调用BHO ondragstart事件处理程序

那么,在javascript事件处理程序之后是否还有调用BHO事件处理程序的方法

我为我的英语感到抱歉。 请帮忙。谢谢。

我找到了一个解决方案: 在BHO事件处理程序中,添加以下代码:

(eventObj作为IHTMLEventObj)。cancelBubble=true


这个问题困扰了我一整天

我正试图做一些与你类似的事情-你能给我发送一些示例代码吗?我是BHOs的新手,不知道如何连接到internet explorer拖放事件。
...
if (!string.IsNullOrWhiteSpace(src))
{
    try
    {
        var info = WinInetAPI.GetUrlCacheEntryInfo(src);
        src = info.lpszLocalFileName;
    }
    catch
    {

    }
    eventObj.dataTransfer.setData("Text", src);
}
...