Firefox 如何防止Windows叙述者说;“可编辑文本”;对于role=";上的每个HTML标记;“警惕”;在FF中

Firefox 如何防止Windows叙述者说;“可编辑文本”;对于role=";上的每个HTML标记;“警惕”;在FF中,firefox,accessibility,wai-aria,narrator,Firefox,Accessibility,Wai Aria,Narrator,我有一个简单的生活区: <div aria-atomic="true" role="alert" id="AlertText"></div> 现在,在FF+Windows“讲述人”中,活动区域工作正常,我更改了文本,警报按预期发出。然而,原始的警报文本实际上非常复杂,并且带有BR和H2标记。问题在于,每次文本中出现关闭标记时,警报都会显示“可编辑文本” 我曾想过将警报移动到一个没有标记的隐藏活动区域,但即使如此,尽管警报工作正常,但当它到达警报角色div的结束标记(

我有一个简单的生活区:

<div aria-atomic="true" role="alert" id="AlertText"></div>

现在,在FF+Windows“讲述人”中,活动区域工作正常,我更改了文本,警报按预期发出。然而,原始的警报文本实际上非常复杂,并且带有BR和H2标记。问题在于,每次文本中出现关闭标记时,警报都会显示“可编辑文本”

我曾想过将警报移动到一个没有标记的隐藏活动区域,但即使如此,尽管警报工作正常,但当它到达警报角色div的结束标记(即我的示例中的div#AlertText)时,它在FF中表示“可编辑文本”

现在在IE中,它没有这个问题,MacOS叙述者也没有这个问题,它只是让人困惑

我担心有人会听到它并认为它是一个文本输入或其他东西(尽管它在文本输入字段上显示“编辑文本”)

我更喜欢使用原始容器作为警报角色,但我不能让它多次说“编辑文本”,或者正常用户和FF用户已经习惯了它。。。在此方面的任何帮助都将不胜感激

我目前正在开发Win8.1叙述者

编辑:独立HTML中的实时代码示例(但我没有在Win叙述者中使用此示例)


角色警报测试
设置文本
概述

过去五年的年度股息历史记录 document.getElementById('btnAlert')。onclick=function(){ var dom=document.getElementById('overviewText'); dom.appendChild(document.createTextNode(“Almarai公司对Almarai的最新股息等于每股1.00沙特里亚尔。交易日期为2015年4月6日,支付日期为2015年4月14日。股息类型为年度”); appendChild(document.createElement('br')); appendChild(document.createTextNode(“当前股息收益率等于1.90%)); appendChild(document.createElement('br')); appendChild(document.createTextNode(“52周股息总额等于1.00沙特里亚尔”); appendChild(document.createElement('br')); appendChild(document.createTextNode(“总回报,以股息再投资计算,过去12个月等于-38%,过去3年等于+62%); dom=document.getElementById('annualDividendText'); dom.appendChild(document.createTextNode(“2011年:总股息1.50沙特里亚尔,股息收益率(基于年终股价)3.91%)); appendChild(document.createElement('br')); appendChild(document.createTextNode(“2012年:总股息0.83沙特里亚尔,股息收益率1.96%)); appendChild(document.createElement('br')); dom.appendChild(document.createTextNode(“2013年:总股息1.00沙特里亚尔,股息收益率1.90%)); appendChild(document.createElement('br')); dom.appendChild(document.createTextNode(“2014年:总股息1.00沙特里亚尔,股息收益率1.30%)); };
您有样品可以试一试吗?JAWS、NVDA或Voiceover会发生什么情况?@slugolicious我在Voiceover和JAWS中查看了它,也就是说它应该是什么样子,但出于某种原因,NVDA不想安装在我的计算机上。我为您添加了一个隔离的HTML,但我无法在“讲述者”中获得它的警报,因为某些原因,尽管代码是相同的。。。还是希望有帮助。你有样品可以试试吗?JAWS、NVDA或Voiceover会发生什么情况?@slugolicious我在Voiceover和JAWS中查看了它,也就是说它应该是什么样子,但出于某种原因,NVDA不想安装在我的计算机上。我为您添加了一个隔离的HTML,但我无法在“讲述者”中获得它的警报,因为某些原因,尽管代码是相同的。。。还是希望能有所帮助。
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Role Alert Test</title>
    </head>
    <body>
        <button id="btnAlert" href="#">Set Text</button>
        <div aria-atomic="true" role="alert" aria-live="assertive" aria-relevant="additions text">
            <div class="AccessibleVersion-OverviewHeadingContainer">
                <h2 class="AccessibleVersion-SubHeading" id="AccessibleVersion-SubHeading-Overview">Overview</h2>
            </div>

            <div class="AccessibleVersion-OverviewTextContainer" aria-labelledby="AccessibleVersion-SubHeading-Overview" id="overviewText"></div>
            <br />
            <h2 class="AccessibleVersion-SubHeading" id="AccessibleVersion-SubHeading-OverviewHistory">Annual dividend history for the last five years</h2>
            <div id="annualDividendText" aria-labelledby="AccessibleVersion-SubHeading-OverviewHistory"></div>
        </div>

        <script type="text/javascript">
            document.getElementById('btnAlert').onclick = function() {
                var dom = document.getElementById('overviewText');

                dom.appendChild(document.createTextNode("The latest dividend of Almarai Company for Almarai is equal to 1.00 Saudi Riyal per share. The ex-date was on 06/04/2015 and it was paid on 14/04/2015. The dividend type is Annual."));
                dom.appendChild(document.createElement('br'));
                dom.appendChild(document.createTextNode("Current dividend yield is equal to 1.90 percent."));
                dom.appendChild(document.createElement('br'));
                dom.appendChild(document.createTextNode("52 weeks dividend sum is equal to 1.00 Saudi Riyal."));
                dom.appendChild(document.createElement('br'));
                dom.appendChild(document.createTextNode("Total return, calculated with dividends reinvested, is equal to -38 percent for the past 12 months and +62 percent for the past 3 years."));


                dom = document.getElementById('annualDividendText');
                dom.appendChild(document.createTextNode("2011: total dividend 1.50 Saudi Riyal, dividend yield (based on year-end share price) 3.91 percent."));
                dom.appendChild(document.createElement('br'));
                dom.appendChild(document.createTextNode("2012: total dividend 0.83 Saudi Riyal, dividend yield 1.96 percent."));
                dom.appendChild(document.createElement('br'));
                dom.appendChild(document.createTextNode("2013: total dividend 1.00 Saudi Riyal, dividend yield 1.90 percent."));
                dom.appendChild(document.createElement('br'));
                dom.appendChild(document.createTextNode("2014: total dividend 1.00 Saudi Riyal, dividend yield 1.30 percent."));

            };
        </script>
    </body>
</html>