如何从选项卡顺序中删除必应地图(和所有子控件)

时间:2018-07-20 00:39:02

标签: javascript bing-maps

Bing maps控件(Microsoft.Maps.Map)是否提供用于从选项卡顺序中删除自身(及其子控件)的API?

或者,地图渲染后,是否可以使用适当的回调(渲染后)在所有元素上递归设置tabIndex?

NB :我已经看到在构建时有一些选项,用于指定是否渲染地图类型选择器/定位我按钮/缩放按钮。但是,假设我们要渲染这些控件,只需将它们从制表符顺序中删除即可。

1 个答案:

答案 0 :(得分:0)

我设法使用MutationObserver实现了它:

var mapElem = document.getElementById("map");

let deferredClearTabIndexEvent: number | undefined;

if (mapElem !== null) {
    var config = { attributes: true, childList: true, subtree: true };
    var callback = () => {
        if (deferredClearTabIndexEvent === undefined) {
            deferredClearTabIndexEvent = window.setTimeout(() => {
                var elements = mapElem!.querySelectorAll("a, button, input, select, textarea, [tabindex]")
                for (var i=0; i<elements.length; i++) {
                    elements[i].setAttribute("tabIndex", "-1");
                }

                deferredClearTabIndexEvent = undefined;
            }, 0);
        }
    };

    var observer = new MutationObserver(callback);
    observer.observe(mapElem, config);
}