Javascript 向传单js Choropleth贴图添加键盘控件

Javascript 向传单js Choropleth贴图添加键盘控件,javascript,accessibility,leaflet,Javascript,Accessibility,Leaflet,我有一张传单.js choropleth地图,几乎和教程地图完全一样 我想能够通过标签通过地图,并有州的信息显示出来 我尝试过用隐藏链接和层触发来伪装它,但没有成功 你知道最好的方法是什么吗?有了这段代码,我可以在这个页面上模拟鼠标指针(假设变量“p”是表示状态的路径元素之一) 这是您的代码还是必须将其覆盖在现有代码之上?其数据不同,但实现方式与示例完全相同。我已经使用隐藏链接触发假鼠标事件来突出显示图形元素,所以这是可能的,你将不得不张贴你的代码的地方,我来帮助。在可用性方面,当您有大量这样

我有一张传单.js choropleth地图,几乎和教程地图完全一样

我想能够通过标签通过地图,并有州的信息显示出来

我尝试过用隐藏链接和层触发来伪装它,但没有成功


你知道最好的方法是什么吗?

有了这段代码,我可以在这个页面上模拟鼠标指针(假设变量“p”是表示状态的路径元素之一)


这是您的代码还是必须将其覆盖在现有代码之上?其数据不同,但实现方式与示例完全相同。我已经使用隐藏链接触发假鼠标事件来突出显示图形元素,所以这是可能的,你将不得不张贴你的代码的地方,我来帮助。在可用性方面,当您有大量这样的项目时,用户很难导航到他们对使用键盘感兴趣的状态。因此,另一种UI方法(如选择下拉菜单)可能更有用,其中第一个字符可用于移动到状态。
getScrollOffset = function (element) {
    if (!element.nodeType && element.document) {
        element = element.document;
    }
    if (element.nodeType === 9) {
        var docElement = element.documentElement,
            body = element.body;
        return {
            left: (docElement && docElement.scrollLeft || body && body.scrollLeft || 0),
            top: (docElement && docElement.scrollTop || body && body.scrollTop || 0)
        };
    }
    return {
        left: element.scrollLeft,
        top: element.scrollTop
    };
};

getElementCoordinates = function (element) {
    var doc = element.ownerDocument,
        scrollOffset = getScrollOffset(doc),
        xOffset = scrollOffset.left,
        yOffset = scrollOffset.top,
        coords = element.getBoundingClientRect();
    return {
        top: coords.top + yOffset,
        right: coords.right + xOffset,
        bottom: coords.bottom + yOffset,
        left: coords.left + xOffset,
        width: coords.right - coords.left,
        height: coords.bottom - coords.top
    };
};
var p = document.getElementsByTagName('path')[50];
var coords = getElementCoordinates(p);
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("mouseover", true, true, window,
0, coords.left/* screenX */, coords.top/* screen Y */, 0 /* clientX */, 0/* clientY */, false, false, false, false, 0, document.body);
p.dispatchEvent(evt);