Как определить для скринридеров/MSAA без фокусировки флеш ролика?

Я пытаюсь обнаружить наличие вспомогательных технологий с использованием flash. Когда загружается Flash-ролик, содержащий приведенный ниже сценарий действия в кадре 1 (и программа чтения с экрана, обменивающаяся сообщениями с IE или Firefox через MSAA, активна — JAWS или NVDA), Accessibility.isActive() не возвращает "true" до тех пор, пока фильм не будет сфокусирован. Ну, на самом деле, пока не произойдет какое-то «событие». Фильм будет просто сидеть там, пока я не щелкну его правой кнопкой мыши и не покажу контекстное меню флеш-плеера... кажется, только тогда Accessibility.isActive() возвращает true. Щелчок правой кнопкой мыши - единственный способ заставить фильм «проснуться».

Как заставить фильм реагировать самостоятельно и обнаруживать MSAA? Я пытался направить на него фокус с помощью Javascript... можно ли подделать щелчок правой кнопкой мыши в javascript или actionscript? Или вы знаете события, которые вызывает щелчок правой кнопкой мыши во флэш-ролике - возможно, я могу программно заставить это событие произойти?

Мой сценарий действия:

var x = 0;  
//check if Microsoft Active Accessibility (MSAA) is active.  
//Setting takes 1-2 seconds to detect -- hence the setTimeout loop.  
function check508(){  
    if ( Accessibility.isActive() ) {  
       //remove this later... just visual for testing  
       logo.glogo.logotext.nextFrame();  
       //tell the page's javascript this is a 508 user  
       getURL("javascript:setAccessible();")  
    } else if (x<100) {  
       trace ("There is currently no active accessibility aid. Attempt " + x);  
       x++;  
       setTimeout(check508,200);  
    }  
}  
/*  
//FYI: only checks if browser is MSAA compliant, not that A.T. is actually running. Sigh.  
//This returns true immediately though.  
if (System.capabilities.hasAccessibility) {  
    logo.glogo.logotext.nextFrame();  
    getURL("javascript:setAccessible();")  
};  
*/  
check508();  
stop();  

Мой HTML:

<embed id="detector" width="220" height="100" quality="high" wmode="window" type="application/x-shockwave-flash" src="/images/detect.swf" pluginspage="http://www.adobe.com/go/getflashplayer" flashvars="">

person utt73    schedule 29.05.2010    source источник
comment
@BalusC: Спасибо за выделение кода. Я здесь новенький. :) Также я не настроен на использование Flash, это было просто решение, которое я нашел в Интернете. Если вы успешно обнаружили вспомогательные технологии (в частности, JAWS) в другом месте с помощью перехвата заголовков браузера или чего-то еще, сообщите нам об этом. Спасибо!   -  person utt73    schedule 30.05.2010


Ответы (1)


Основываясь на этом ответе на переполнение стека, я нашел решение:

var fl = document.getElementById("detector"); 
    if (fl) { 
        fl.focus();
    }

Он должен был быть на чистом javascript, как написано выше, прикрепленным к вашему событию window.load. Попытка либо использовать селекторы jQuery $("#detector").focus(), либо опустить оператор if и просто использовать document.getElementById("detector").focus() ... оба варианта не сработали.

Затем я возвращаю фокус обратно в верхнюю часть страницы в моей функции setAccessible() в Javascript HTML-страницы, чтобы пользователи AT не зацикливались на флэш-ролике при загрузке страницы.

person utt73    schedule 30.05.2010