2011-12-25 3 views

答えて

2

Webブラウザーはコンテキストメニューをサポートしておらず、他のSilverlightコントロールと同様に機能しません。したがって、ContextMenuを直接追加することはできません。ただし、回避策があります。それらの1つは、InvokeScriptメソッドを使用することです。 this threadとお読みください。どうやら、スレッドの底にあるコードが機能しているようです。 注:GINternetはWebBrowserコントロールの名前なので、それをあなたのものに変更する必要があります。 `<電話:Webブラウザーの名前=「webBrowser1」> <ツールキット:

public void AttachContextMenu() 
{ 
     try 
     { 
      if (GINternet.IsScriptEnabled) 
      { 
       GINternet.InvokeScript("execScript", "function FindParentLink(item) \r\n{\r\n\tif (!item.parentNode)\r\n\t\treturn null;\r\n\tif (item.tagName.toLowerCase() == 'a') \r\n\t{\r\n\t\treturn item;\r\n\t} \r\n\telse \r\n\t{\r\n\t\treturn FindParentLink(item.parentNode);\r\n\t}\r\n}\r\n\r\nfunction FindParentImage(item) \r\n{\r\n\tif (!item.parentNode)\r\n\t\treturn null;\r\n\tif (item.tagName.toLowerCase() == 'img') \r\n\t{\r\n\t\treturn item;\r\n\t} \r\n\telse \r\n\t{\r\n\t\treturn FindParentImage(item.parentNode);\r\n\t}\r\n}\r\n\r\nfunction HandleContextMenu() \r\n{\r\n\tvar linkItem = FindParentLink(event.srcElement);\r\n var imageItem = FindParentImage(event.srcElement);\r\n var notifyOutput = '';\r\n if (linkItem != null) if (linkItem.href != null) notifyOutput += linkItem.href;\r\n if (imageItem != null) if (imageItem.src != null) notifyOutput += imageItem.src;\r\n if (notifyOutput != '')\r\n  window.external.notify(notifyOutput);\r\n else\r\n\t\twindow.external.notify('NOTLINKIMG');\r\n}"); 
       GINternet.InvokeScript("execScript", "document.oncontextmenu = HandleContextMenu;"); 
      } 
     } 
     catch 
     { 
     } 
} 
+0

非常に非常に感謝 は、しかし、私は私のクリック位置 私はこれを使って下のコンテキストメニューを表示するにはどのように問題 を持っているContextMenuService.ContextMenuを> <ツールキット:たContextMenu X:NAME = "MENU1"> <ツールキット:のMenuItemヘッダー= "ITEM1" /> ' とコンテキストメニューがページ上部に表示されます。 – sma6871

+0

@ sma6871あなたはどのようにそれを動作させるために管理して詳細を与えることができますか?私は単一の画像を表示するWebブラウザコントロールを持っています。私は、ユーザーが彼の指を保持している場合は、 "イメージを保存"と言うコンテキストメニューを表示したい。 – zyash

+0

@zyashあなたのコードにkeyboardPの答えをコピーし、あなたのページが読み込まれたらそれを呼び出すだけです。今、ユーザーがウェブブラウザコントロールで指を保持すると、ScriptNotify **が発生します。画像のリンクはe.valueにあります。 – sma6871

関連する問題