0

FirefoxでSilverlight 2アプリケーションをテストすると、SilverlightにフォーカスがあるときにPage.KeyDownイベントを介してキーを押すたびに問題はありません。Silverlightからのブラウザキーボード処理のオーバーライド(IE7)

Internet Explorer 7でテストすると、ブラウザがまだ処理していないキーボードイベントしか取得できません。しかし、私はjavascriptで同じキーボードイベントを無効にすることができます。

たとえば、trl + Dです。私はのjavascriptでこれを上書きすることができますが、これはSilverlightで同じことをすることはできません!

function initKeyHandling(){ document.attachEvent("onkeydown", keydown); } 

function keydown(e) { printToTextbox('Keydown ', e); return false; } 

... 

initKeyHandling(); 

さらに、JavascriptからSilverlightにイベントを転送しようとする試みが失敗しました。私のjavascriptキーボードイベントハンドラは、Silverlightにフォーカスがあっても解消されません。

答えて

2

(少なくとも、あなたが言及している周りのようにJavaScriptの作業をせずに)不可能であることを思わ:

キーボードイベントとブラウザ 異なるブラウザは異なる方法 キーボードイベントを処理することがあります。 キーボード入力を使用するアプリケーションを作成する場合は、対象のブラウザで アプリケーションをテストしてください。

ブラウザは、 のキーストロークをコマンド として解釈し、どのキーストロークがホストされたコンテンツ に渡されるかを決定します。これは、 特定のキーストロークを取得できないことを意味します。 からKeyDownおよびKeyUpイベントハンドラ が機能します。 ブラウザがコマンドとして解釈するほとんどのキーストロークは ショートカットまたはアクセラレータのキーストローク であり、 Silverlightにはキーイベントとして渡されません。例えば、 の場合、 とInternet Explorerのブラウザにお気に入りのURLを追加する場合、CTRL + Dは のショートカットキーストロークの組み合わせで、 というキーイベントとして報告されます。 CTRLもDも報告されません。私は先日、基礎となるHTMLテキストボックスと周りの仕事をについて読んだと思うhttp://msdn.microsoft.com/en-us/library/cc189015.aspx

はを見てください。しかし、それがまだサポートされているのか、詳細が何であったのかは分かりません。私がそれを再び見つけたら私は戻ってくるだろう。

/Asger

0

Flashを使用して同様の問題に遭遇しました。私たちは、キーボードショートカットを呼び出す必要があるたびにフォーカスをプログラムで設定する必要がある、別のDIVタグを同じページに配置することによって解決しなければなりませんでした。ドキュメントから

+0

私のユーザーは、いつでもキーボードショートカットを押すことができる場合、私は常に正しい、DIVにフォーカスを持っている必要があるだろうか?それは狂ったように聞こえる! –

+0

問題はSilverlightプラグインが常にアプリケーションにフォーカスされていることです。フォーカスを隠しdivタグに設定し続けている場合、JavaScript keyDown/Upを渡さない限り、Silverlight KeyDown/Upイベントで定義されたショートカットを使用できません。イベントをSilverlightに渡し、Silverlightの内部で処理します。 –

関連する問題