0

上下文是我们想要跟踪应用程序的用户行为,因为它的不同功能。

为此,我们创建了一个自定义角度指令,比如 myFunctionality 并将 HTML 的部分包装到这个指令中,这样现在我们可以跟踪其中的所有点击事件,并按功能名称对它们进行分类以跟踪特定功能的使用 -

<myFunctionality functionality-name="Login">
 <!--HTML of this functionality-->
</myFunctionality>

<myFunctionality functionality-name="RegisterUser">
 <!--HTML of this functionality-->
</myFunctionality>

在这个指令中,我们附加了事件处理程序来捕获click事件并相应地记录。

.directive('myFeature', [function() {
    return {
        restrict: 'E',
        link: function(scope, element, attrs) {

            //more code

            element.on('click.myFeature', '*:not(select, :radio, :checkbox)', function(event) {
                logEventDetails(event);
            });

            //more code

        }])

这很好用,除了当我使用NVDA屏幕阅读器阅读我的页面时。headingNVDA 将元素读取为可点击。例如对于这个标题 -

<h1> Test Heading </h1>

NVDA 写道:

测试标题标题可点击级别 1

我也尝试过使用这样的东西(有多种版本),但没有奏效-

$(':header').off('click.myFeature');

TL;博士

请考虑以下示例 HTML。这里click是关联的div和不关联的h1。但是屏幕阅读器的工作原理是它可以将标题元素读取为可点击的。

<html>
<body>
    <div onclick="alert('Hello from Div!')">
        <h1>Test Heading</h1>
    </div>
</body>
</html>

如何防止 NVDA 将不可点击事件读取为可点击?

4

1 回答 1

1
<div onclick="alert('Hello from Div!')">
    <h1>Test Heading</h1>
</div>

如何防止 NVDA 将不可点击事件读取为可点击?

您的标题是可点击的,因为它位于可点击元素内。

只需将其放在任何可点击元素之外。

于 2017-02-09T20:02:27.547 回答