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にフォーカスがあっても解消されません。
私のユーザーは、いつでもキーボードショートカットを押すことができる場合、私は常に正しい、DIVにフォーカスを持っている必要があるだろうか?それは狂ったように聞こえる! –
問題はSilverlightプラグインが常にアプリケーションにフォーカスされていることです。フォーカスを隠しdivタグに設定し続けている場合、JavaScript keyDown/Upを渡さない限り、Silverlight KeyDown/Upイベントで定義されたショートカットを使用できません。イベントをSilverlightに渡し、Silverlightの内部で処理します。 –