だから - テキストエリアと動的に作成された IFrame を含むページがあり、adobe acrobat プラグインを使用して PDF を表示します。
最初は、テキストエリアがフォーカスされています。
テキストエリアをフォーカスしたいのですが、PDF が読み込まれると IFrame がフォーカスを奪います。
Firefox では、テキストエリアをフォーカスされた要素としてリセットするのは簡単です。
これを行うには、iframe の "load" イベントをリッスンしてから、テキスト ボックスで .focus() を呼び出します。
M$ IE は、動的に作成された Iframe の onload イベントを発生させないため、IFrame の readyState プロパティを使用して、いつ準備ができたかを判断します。
var ieIframeReadyHandler = function() {
if( iframe.readyState=="complete" ) {
textarea.focus();
} else {
setTimeout(ieIframeReadyHandler, 100);
}
}
setTimeout(ieIframeReadyHandler, 100);
注: readyState=="complete" ケースでは発生しないように見えるため、iframe の readystatechanged イベントをリッスンしません!!
では、このコードが実行されるとどうなるでしょうか? ... まあ、何もありません。Iframe pdf はまだフォーカスされていますが、document.activeElement を使用してどの要素にフォーカスがあるかを確認すると (以前は IE のみでしたが、現在は firefox 3 でサポートされています)、テキストエリアにフォーカスがあることが通知されます!!
なんてこったい??!?
何か案は?