1

ハイパーリンクで「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);
}
...

最終的な結果は次のとおりです。TTTTTTTTTTTTTTTT。

デバッガーでは、JavaScriptイベントハンドラーの前に呼び出されたBHOondragstartイベントハンドラーを確認できます。

それで、とにかくjavascriptイベントハンドラーの後にBHOイベントハンドラーを呼び出すことはありますか?

英語でごめんなさい。助けてください。ありがとうございました。

4

1 に答える 1

0

私は解決策を見つけました: BHO Event handler に、次のコードを追加します:

(eventObj as IHTMLEventObj).cancelBubble = true;

この問題は一日中私を悩ませます

于 2013-02-07T08:04:16.633 に答える