Первый: swfobject.embedSWF(...)
потребуется несколько миллисекунд для встраивания SWF в HTML. Таким образом, вы не можете сразу позвонить $('#flashApp').tabIndex=0;
или $('#flashApp').focus();
Второй: Вы уверены, что $('#flashApp')
что-нибудь возвращает.
Третье: setTimeout(setFocusToFlash(), 2000);
неверно. Это немедленно вызовет функцию. Правильно setTimeout(setFocusToFlash, 2000);
Посмотрите, как это сделать ниже, исправив эти три.
Сначала объявите функцию следующим образом. Это то, что работает в Firefox.
function setFocusToFlash() {
document["flashApp"].tabIndex=0;
document["flashApp"].focus();
}
Если он не работает window["flashApp"].focus();
должен работать в других браузерах.
И использовать готовый обратный вызов в embedSWF, как указано ниже
swfobject.embedSWF(
"testFocusProject.swf", "flashContent",
"840px", "500px",
swfVersionStr, xiSwfUrlStr,
flashvars, params, attributes, function(){
setTimeout(setFocusToFlash, 500);
});
500 мс мне хватило, чтобы сфокусироваться. Вы можете проверить и установить нужную задержку.