Итак, у меня есть страница, содержащая текстовое поле и динамически созданный IFrame, который отображает PDF-файл с помощью плагина Adobe Acrobat.
Первоначально текстовая область сфокусирована.
Я хочу, чтобы текстовое поле было сфокусировано, но IFrame крадет фокус при загрузке PDF-файла.
В firefox тривиально сбросить текстовую область как сфокусированный элемент.
Я делаю это, прослушивая событие «загрузки» iframe, а затем вызывая .focus() в текстовом поле.
M$ IE не запускает событие onload для динамически созданных фреймов, поэтому, чтобы определить, когда он готов, я использую свойство readyState фрейма IFrame:
var ieIframeReadyHandler = function() {
if( iframe.readyState=="complete" ) {
textarea.focus();
} else {
setTimeout(ieIframeReadyHandler, 100);
}
}
setTimeout(ieIframeReadyHandler, 100);
Примечание. Я не слушаю событие readystatechanged iframe, поскольку оно не срабатывает для случая readyState=="complete"!!
Так что же происходит, когда этот код выполняется?..... Ну ничего. PDF-файл Iframe по-прежнему сфокусирован, однако, если я проверю, какой элемент имеет фокус, используя document.activeElement (ранее это был только IE, однако Firefox 3 теперь поддерживает это), мне сообщают, что текстовая область ДЕЙСТВИТЕЛЬНО имеет фокус!!
Что за черт??!?
Есть идеи?