因为拖动一个超链接的图像,无法获取“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>
AND 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 :(得分:0)
我找到了一个解决方案: 在BHO事件处理程序中,添加以下代码:
(eventObj as IHTMLEventObj).cancelBubble = true;
这个问题让我整天都感到厌烦