2013-02-07 41 views
0

因爲拖拽一個超鏈接的圖片,無法獲得「FileDrop」或「DIB」數據,所以我想用C#寫一個BHO來增強拖放圖片。BHO如何替換JavaScript事件處理程序結果?

我已經注入的文件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> 

和BHO ondragstart事件處理程序:

... 
if (!string.IsNullOrWhiteSpace(src)) 
{ 
    try 
    { 
     var info = WinInetAPI.GetUrlCacheEntryInfo(src); 
     src = info.lpszLocalFileName; 
    } 
    catch 
    { 

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

最終的結果是:TTTTTTTTTTTTTTT。

在調試器中,我可以看到在JavaScript事件處理程序之前調用BHO ondragstart事件處理程序。

那麼,有沒有辦法在JavaScript事件處理程序之後調用BHO事件處理程序?

對不起我的英文。 請幫忙。謝謝。

回答

0

我已經找到了解決方案: 在BHO事件處理程序中,添加以下代碼:

(作爲是eventObj IHTMLEventObj).cancelBubble = TRUE;

這個問題讓我驚歎全天

+0

我想要做類似於你的事情 - 你可能會給我一些示例代碼嗎?我是BHO的新手,無法弄清楚如何掛接到Internet Explorer拖放事件。 –